@carto/ps-react-maps 4.3.1 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-geojson-worker-9J7Q5sUJ.js","sources":["../src/providers/sources/widgets/const.ts","../../../node_modules/.pnpm/h3-js@4.3.0/node_modules/h3-js/dist/browser/h3-js.es.js","../../../node_modules/.pnpm/jsep@1.4.0/node_modules/jsep/dist/jsep.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatDecimal.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/exponent.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatGroup.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatNumerals.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTrim.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatRounded.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTypes.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/identity.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/locale.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/defaultLocale.js","../../../node_modules/.pnpm/@carto+api-client@0.5.17_@loaders.gl+core@4.3.4/node_modules/@carto/api-client/build/api-client.js","../src/providers/sources/widgets/geojson-features.ts","../../../node_modules/.pnpm/@turf+helpers@7.2.0/node_modules/@turf/helpers/dist/esm/index.js","../../../node_modules/.pnpm/@turf+invariant@7.2.0/node_modules/@turf/invariant/dist/esm/index.js","../../../node_modules/.pnpm/@turf+meta@7.2.0/node_modules/@turf/meta/dist/esm/index.js","../../../node_modules/.pnpm/@turf+bbox@7.2.0/node_modules/@turf/bbox/dist/esm/index.js","../../../node_modules/.pnpm/robust-predicates@3.0.2/node_modules/robust-predicates/esm/util.js","../../../node_modules/.pnpm/robust-predicates@3.0.2/node_modules/robust-predicates/esm/orient2d.js","../../../node_modules/.pnpm/point-in-polygon-hao@1.2.4/node_modules/point-in-polygon-hao/dist/esm/index.js","../../../node_modules/.pnpm/@turf+boolean-point-in-polygon@7.2.0/node_modules/@turf/boolean-point-in-polygon/dist/esm/index.js","../../../node_modules/.pnpm/sweepline-intersections@1.5.0/node_modules/sweepline-intersections/dist/sweeplineIntersections.esm.js","../../../node_modules/.pnpm/@turf+line-intersect@7.2.0/node_modules/@turf/line-intersect/dist/esm/index.js","../../../node_modules/.pnpm/@turf+polygon-to-line@7.2.0/node_modules/@turf/polygon-to-line/dist/esm/index.js","../../../node_modules/.pnpm/@turf+boolean-disjoint@7.2.0/node_modules/@turf/boolean-disjoint/dist/esm/index.js","../../../node_modules/.pnpm/@turf+boolean-intersects@7.2.0/node_modules/@turf/boolean-intersects/dist/esm/index.js","../src/providers/sources/widgets/widget-geojson-source-impl.ts","../src/providers/sources/widgets/widget-geojson-worker.ts"],"sourcesContent":["export const Method = {\n INIT: 'init',\n LOAD_GEOJSON: 'loadGeoJSON',\n GET_FORMULA: 'getFormula',\n GET_HISTOGRAM: 'getHistogram',\n GET_CATEGORIES: 'getCategories',\n GET_SCATTER: 'getScatter',\n GET_TABLE: 'getTable',\n GET_TIME_SERIES: 'getTimeSeries',\n GET_RANGE: 'getRange',\n GET_AGGREGATIONS: 'getAggregations',\n GET_EXTENT: 'getExtent',\n} as const\n","// @ts-nocheck\n\nvar libh3 = function (libh3) {\n libh3 = libh3 || {};\n var Module = typeof libh3 !== \"undefined\" ? libh3 : {};\n var moduleOverrides = {};\n var key;\n for (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n }\n var arguments_ = [];\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n }\n var readAsync;\n {\n if (typeof document !== \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n var data = tryParseAsDataURI(url);\n if (data) {\n onload(data.buffer);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n for (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n }\n moduleOverrides = null;\n if (Module[\"arguments\"]) { arguments_ = Module[\"arguments\"]; }\n var tempRet0 = 0;\n var setTempRet0 = function (value) {\n tempRet0 = value;\n };\n var getTempRet0 = function () {\n return tempRet0;\n };\n var GLOBAL_BASE = 8;\n function setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") { type = \"i32\"; }\n switch (type) {\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n case \"i64\":\n tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n break;\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n }\n function getValue(ptr, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") { type = \"i32\"; }\n switch (type) {\n case \"i1\":\n return HEAP8[ptr >> 0];\n case \"i8\":\n return HEAP8[ptr >> 0];\n case \"i16\":\n return HEAP16[ptr >> 1];\n case \"i32\":\n return HEAP32[ptr >> 2];\n case \"i64\":\n return HEAP32[ptr >> 2];\n case \"float\":\n return HEAPF32[ptr >> 2];\n case \"double\":\n return HEAPF64[ptr >> 3];\n default:\n abort(\"invalid type for getValue: \" + type);\n }\n return null;\n }\n var ABORT = false;\n function assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n }\n function getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n return func;\n }\n function ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n \"string\": function (str) {\n var ret = 0;\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n return ret;\n },\n \"array\": function (arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n function convertReturnValue(ret) {\n if (returnType === \"string\") { return UTF8ToString(ret); }\n if (returnType === \"boolean\") { return Boolean(ret); }\n return ret;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) { stack = stackSave(); }\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) { stackRestore(stack); }\n return ret;\n }\n function cwrap(ident, returnType, argTypes, opts) {\n argTypes = argTypes || [];\n var numericArgs = argTypes.every(function (type) {\n return type === \"number\";\n });\n var numericRet = returnType !== \"string\";\n if (numericRet && numericArgs && !opts) {\n return getCFunc(ident);\n }\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n }\n var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (u8Array[endPtr] && !(endPtr >= endIdx)) { ++endPtr; }\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n } else {\n var str = \"\";\n while (idx < endPtr) {\n var u0 = u8Array[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = u8Array[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = u8Array[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n return str;\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) { return 0; }\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) { break; }\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) { break; }\n outU8Array[outIdx++] = 192 | u >> 6;\n outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) { break; }\n outU8Array[outIdx++] = 224 | u >> 12;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) { break; }\n outU8Array[outIdx++] = 240 | u >> 18;\n outU8Array[outIdx++] = 128 | u >> 12 & 63;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n }\n }\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function alignUp(x, multiple) {\n if (x % multiple > 0) {\n x += multiple - x % multiple;\n }\n return x;\n }\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n }\n var DYNAMIC_BASE = 5271520,\n DYNAMICTOP_PTR = 28608;\n var INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 33554432;\n if (Module[\"buffer\"]) {\n buffer = Module[\"buffer\"];\n } else {\n buffer = new ArrayBuffer(INITIAL_TOTAL_MEMORY);\n }\n INITIAL_TOTAL_MEMORY = buffer.byteLength;\n updateGlobalBufferAndViews(buffer);\n HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n function callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n if (typeof callback == \"function\") {\n callback();\n continue;\n }\n var func = callback.func;\n if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n Module[\"dynCall_v\"](func);\n } else {\n Module[\"dynCall_vi\"](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n }\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATPOSTRUN__ = [];\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") { Module[\"preRun\"] = [Module[\"preRun\"]]; }\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") { Module[\"postRun\"] = [Module[\"postRun\"]]; }\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var Math_abs = Math.abs;\n var Math_ceil = Math.ceil;\n var Math_floor = Math.floor;\n var Math_min = Math.min;\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n Module[\"preloadedImages\"] = {};\n Module[\"preloadedAudios\"] = {};\n var memoryInitializer = null;\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n }\n var tempDouble;\n var tempI64;\n memoryInitializer = \"data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAAQAAAAQAAAADAAAABgAAAAUAAAACAAAAAAAAAAIAAAADAAAAAQAAAAQAAAAGAAAAAAAAAAUAAAADAAAABgAAAAQAAAAFAAAAAAAAAAEAAAACAAAABAAAAAUAAAAGAAAAAAAAAAIAAAADAAAAAQAAAAUAAAACAAAAAAAAAAEAAAADAAAABgAAAAQAAAAGAAAAAAAAAAUAAAACAAAAAQAAAAQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAAAAAAEAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAYAAAAAAAAABQAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAYAAAAAAAAAAwAAAAIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFAAAABAAAAAAAAAABAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAYAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAADAAAACAAAAAEAAAAHAAAABgAAAAkAAAAAAAAAAwAAAAIAAAACAAAA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AAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAUAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAUAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAD//////////wEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAAAAAAAAAAABAAAAAgAAAAYAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAAFAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAGAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAAAAAAAAAAAAAEAAAAEAAAACAAAAAoAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAAAAAAAAAAAAQAAAAsAAAAPAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAwAAAAQAAAADAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAAAAAAAAAAABAAAACgAAABMAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAAAAAAAAEAAAANAAAAEQAAAA0AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAACAAAAAAAAAAAAAAABAAAADgAAABIAAAAPAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABIAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAAAAAAAAQAAAP//////////EwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAASAAAAAAAAABgAAAAAAAAAIQAAAAAAAAAeAAAAAAAAACAAAAADAAAAMQAAAAEAAAAwAAAAAwAAADIAAAADAAAACAAAAAAAAAAFAAAABQAAAAoAAAAFAAAAFgAAAAAAAAAQAAAAAAAAABIAAAAAAAAAKQAAAAEAAAAhAAAAAAAAAB4AAAAAAAAABAAAAAAAAAAAAAAABQAAAAIAAAAFAAAADwAAAAEAAAAIAAAAAAAAAAUAAAAFAAAAHwAAAAEAAAAWAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAA4AAAAAAAAACgAAAAAAAAALAAAAAAAAABEAAAADAAAAGAAAAAEAAAAXAAAAAwAAABkAAAADAAAAAAAAAAAAAAABAAAABQAAAAkAAAAFAAAABQAAAAAAAAACAAAAAAAAAAYAAAAAAAAAEgAAAAEAAAAKAAAAAAAAAAsAAAAAAAAABAAAAAEAAAADAAAABQAAAAcAAAAFAAAACAAAAAEAAAAAAAAAAAAAAAEAAAAFAAAAEAAAAAEAAAAFAAAAAAAAAAIAAAAAAAAABwAAAAAAAAAVAAAAAAAAACYAAAAAAAAACQAAAAAAAAATAAAAAAAAACIAAAADAAAADgAAAAEAAAAUAAAAAwAAACQAAAADAAAAAwAAAAAAAAANAAAABQAAAB0AAAAFAAAAAQAAAAAAAAAHAAAAAAAAABUAAAAAAAAABgAAAAEAAAAJAAAAAAAAABMAAAAAAAAABAAAAAIAAAAMAAAABQAAABoAAAAFAAAAAAAAAAEAAAADAAAAAAAAAA0AAAAFAAAAAgAAAAEAAAABAAAAAAAAAAcAAAAAAAAAGgAAAAAAAAAqAAAAAAAAADoAAAAAAAAAHQAAAAAAAAArAAAAAAAAAD4AAAADAAAAJgAAAAEAAAAvAAAAAwAAAEAAAAADAAAADAAAAAAAAAAcAAAABQAAACwAAAAFAAAADQAAAAAAAAAaAAAAAAAAACoAAAAAAAAAFQAAAAEAAAAdAAAAAAAAACsAAAAAAAAABAAAAAMAAAAPAAAABQAAAB8AAAAFAAAAAwAAAAEAAAAMAAAAAAAAABwAAAAFAAAABwAAAAEAAAANAAAAAAAAABoAAAAAAAAAHwAAAAAAAAApAAAAAAAAADEAAAAAAAAALAAAAAAAAAA1AAAAAAAAAD0AAAADAAAAOgAAAAEAAABBAAAAAwAAAEsAAAADAAAADwAAAAAAAAAWAAAABQAAACEAAAAFAAAAHAAAAAAAAAAfAAAAAAAAACkAAAAAAAAAKgAAAAEAAAAsAAAAAAAAADUAAAAAAAAABAAAAAQAAAAIAAAABQAAABAAAAAFAAAADAAAAAEAAAAPAAAAAAAAABYAAAAFAAAAGgAAAAEAAAAcAAAAAAAAAB8AAAAAAAAAMgAAAAAAAAAwAAAAAAAAADEAAAADAAAAIAAAAAAAAAAeAAAAAwAAACEAAAADAAAAGAAAAAMAAAASAAAAAwAAABAAAAADAAAARgAAAAAAAABDAAAAAAAAAEIAAAADAAAANAAAAAMAAAAyAAAAAAAAADAAAAAAAAAAJQAAAAMAAAAgAAAAAAAAAB4AAAADAAAAUwAAAAAAAABXAAAAAwAAAFUAAAADAAAASgAAAAMAAABGAAAAAAAAAEMAAAAAAAAAOQAAAAEAAAA0AAAAAwAAADIAAAAAAAAAGQAAAAAAAAAXAAAAAAAAABgAAAADAAAAEQAAAAAAAAALAAAAAwAAAAoAAAADAAAADgAAAAMAAAAGAAAAAwAAAAIAAAADAAAALQAAAAAAAAAnAAAAAAAAACUAAAADAAAAIwAAAAMAAAAZAAAAAAAAABcAAAAAAAAAGwAAAAMAAAARAAAAAAAAAAsAAAADAAAAPwAAAAAAAAA7AAAAAwAAADkAAAADAAAAOAAAAAMAAAAtAAAAAAAAACcAAAAAAAAALgAAAAMAAAAjAAAAAwAAABkAAAAAAAAAJAAAAAAAAAAUAAAAAAAAAA4AAAADAAAAIgAAAAAAAAATAAAAAwAAAAkAAAADAAAAJgAAAAMAAAAVAAAAAwAAAAcAAAADAAAANwAAAAAAAAAoAAAAAAAAABsAAAADAAAANgAAAAMAAAAkAAAAAAAAABQAAAAAAAAAMwAAAAMAAAAiAAAAAAAAABMAAAADAAAASAAAAAAAAAA8AAAAAwAAAC4AAAADAAAASQAAAAMAAAA3AAAAAAAAACgAAAAAAAAARwAAAAMAAAA2AAAAAwAAACQAAAAAAAAAQAAAAAAAAAAvAAAAAAAAACYAAAADAAAAPgAAAAAAAAArAAAAAwAAAB0AAAADAAAAOgAAAAMAAAAqAAAAAwAAABoAAAADAAAAVAAAAAAAAABFAAAAAAAAADMAAAADAAAAUgAAAAMAAABAAAAAAAAAAC8AAAAAAAAATAAAAAMAAAA+AAAAAAAAACsAAAADAAAAYQAAAAAAAABZAAAAAwAAAEcAAAADAAAAYgAAAAMAAABUAAAAAAAAAEUAAAAAAAAAYAAAAAMAAABSAAAAAwAAAEAAAAAAAAAASwAAAAAAAABBAAAAAAAAADoAAAADAAAAPQAAAAAAAAA1AAAAAwAAACwAAAADAAAAMQAAAAMAAAApAAAAAwAAAB8AAAADAAAAXgAAAAAAAABWAAAAAAAAAEwAAAADAAAAUQAAAAMAAABLAAAAAAAAAEEAAAAAAAAAQgAAAAMAAAA9AAAAAAAAADUAAAADAAAAawAAAAAAAABoAAAAAwAAAGAAAAADAAAAZQAAAAMAAABeAAAAAAAAAFYAAAAAAAAAVQAAAAMAAABRAAAAAwAAAEsAAAAAAAAAOQAAAAAAAAA7AAAAAAAAAD8AAAADAAAASgAAAAAAAABOAAAAAwAAAE8AAAADAAAAUwAAAAMAAABcAAAAAwAAAF8AAAADAAAAJQAAAAAAAAAnAAAAAwAAAC0AAAADAAAANAAAAAAAAAA5AAAAAAAAADsAAAAAAAAARgAAAAMAAABKAAAAAAAAAE4AAAADAAAAGAAAAAAAAAAXAAAAAwAAABkAAAADAAAAIAAAAAMAAAAlAAAAAAAAACcAAAADAAAAMgAAAAMAAAA0AAAAAAAAADkAAAAAAAAALgAAAAAAAAA8AAAAAAAAAEgAAAADAAAAOAAAAAAAAABEAAAAAwAAAFAAAAADAAAAPwAAAAMAAABNAAAAAwAAAFoAAAADAAAAGwAAAAAAAAAoAAAAAwAAADcAAAADAAAAIwAAAAAAAAAuAAAAAAAAADwAAAAAAAAALQAAAAMAAAA4AAAAAAAAAEQAAAADAAAADgAAAAAAAAAUAAAAAwAAACQAAAADAAAAEQAAAAMAAAAbAAAAAAAAACgAAAADAAAAGQAAAAMAAAAjAAAAAAAAAC4AAAAAAAAARwAAAAAAAABZAAAAAAAAAGEAAAADAAAASQAAAAAAAABbAAAAAwAAAGcAAAADAAAASAAAAAMAAABYAAAAAwAAAGkAAAADAAAAMwAAAAAAAABFAAAAAwAAAFQAAAADAAAANgAAAAAAAABHAAAAAAAAAFkAAAAAAAAANwAAAAMAAABJAAAAAAAAAFsAAAADAAAAJgAAAAAAAAAvAAAAAwAAAEAAAAADAAAAIgAAAAMAAAAzAAAAAAAAAEUAAAADAAAAJAAAAAMAAAA2AAAAAAAAAEcAAAAAAAAAYAAAAAAAAABoAAAAAAAAAGsAAAADAAAAYgAAAAAAAABuAAAAAwAAAHMAAAADAAAAYQAAAAMAAABvAAAAAwAAAHcAAAADAAAATAAAAAAAAABWAAAAAwAAAF4AAAADAAAAUgAAAAAAAABgAAAAAAAAAGgAAAAAAAAAVAAAAAMAAABiAAAAAAAAAG4AAAADAAAAOgAAAAAAAABBAAAAAwAAAEsAAAADAAAAPgAAAAMAAABMAAAAAAAAAFYAAAADAAAAQAAAAAMAAABSAAAAAAAAAGAAAAAAAAAAVQAAAAAAAABXAAAAAAAAAFMAAAADAAAAZQAAAAAAAABmAAAAAwAAAGQAAAADAAAAawAAAAMAAABwAAAAAwAAAHIAAAADAAAAQgAAAAAAAABDAAAAAwAAAEYAAAADAAAAUQAAAAAAAABVAAAAAAAAAFcAAAAAAAAAXgAAAAMAAABlAAAAAAAAAGYAAAADAAAAMQAAAAAAAAAwAAAAAwAAADIAAAADAAAAPQAAAAMAAABCAAAAAAAAAEMAAAADAAAASwAAAAMAAABRAAAAAAAAAFUAAAAAAAAAXwAAAAAAAABcAAAAAAAAAFMAAAAAAAAATwAAAAAAAABOAAAAAAAAAEoAAAADAAAAPwAAAAEAAAA7AAAAAwAAADkAAAADAAAAbQAAAAAAAABsAAAAAAAAAGQAAAAFAAAAXQAAAAEAAABfAAAAAAAAAFwAAAAAAAAATQAAAAEAAABPAAAAAAAAAE4AAAAAAAAAdQAAAAQAAAB2AAAABQAAAHIAAAAFAAAAagAAAAEAAABtAAAAAAAAAGwAAAAAAAAAWgAAAAEAAABdAAAAAQAAAF8AAAAAAAAAWgAAAAAAAABNAAAAAAAAAD8AAAAAAAAAUAAAAAAAAABEAAAAAAAAADgAAAADAAAASAAAAAEAAAA8AAAAAwAAAC4AAAADAAAAagAAAAAAAABdAAAAAAAAAE8AAAAFAAAAYwAAAAEAAABaAAAAAAAAAE0AAAAAAAAAWAAAAAEAAABQAAAAAAAAAEQAAAAAAAAAdQAAAAMAAABtAAAABQAAAF8AAAAFAAAAcQAAAAEAAABqAAAAAAAAAF0AAAAAAAAAaQAAAAEAAABjAAAAAQAAAFoAAAAAAAAAaQAAAAAAAABYAAAAAAAAAEgAAAAAAAAAZwAAAAAAAABbAAAAAAAAAEkAAAADAAAAYQAAAAEAAABZAAAAAwAAAEcAAAADAAAAcQAAAAAAAABjAAAAAAAAAFAAAAAFAAAAdAAAAAEAAABpAAAAAAAAAFgAAAAAAAAAbwAAAAEAAABnAAAAAAAAAFsAAAAAAAAAdQAAAAIAAABqAAAABQAAAFoAAAAFAAAAeQAAAAEAAABxAAAAAAAAAGMAAAAAAAAAdwAAAAEAAAB0AAAAAQAAAGkAAAAAAAAAdwAAAAAAAABvAAAAAAAAAGEAAAAAAAAAcwAAAAAAAABuAAAAAAAAAGIAAAADAAAAawAAAAEAAABoAAAAAwAAAGAAAAADAAAAeQAAAAAAAAB0AAAAAAAAAGcAAAAFAAAAeAAAAAEAAAB3AAAAAAAAAG8AAAAAAAAAcAAAAAEAAABzAAAAAAAAAG4AAAAAAAAAdQAAAAEAAABxAAAABQAAAGkAAAAFAAAAdgAAAAEAAAB5AAAAAAAAAHQAAAAAAAAAcgAAAAEAAAB4AAAAAQAAAHcAAAAAAAAAcgAAAAAAAABwAAAAAAAAAGsAAAAAAAAAZAAAAAAAAABmAAAAAAAAAGUAAAADAAAAUwAAAAEAAABXAAAAAwAAAFUAAAADAAAAdgAAAAAAAAB4AAAAAAAAAHMAAAAFAAAAbAAAAAEAAAByAAAAAAAAAHAAAAAAAAAAXAAAAAEAAABkAAAAAAAAAGYAAAAAAAAAdQAAAAAAAAB5AAAABQAAAHcAAAAFAAAAbQAAAAEAAAB2AAAAAAAAAHgAAAAAAAAAXwAAAAEAAABsAAAAAQAAAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGAAAAAgAAAAUAAAABAAAABAAAAAAAAAAAAAAABQAAAAMAAAABAAAABgAAAAQAAAACAAAAAAAAAH6iBfbytuk/Gq6akm/58z/Xrm0Liez0P5doSdOpSwRAWs602ULg8D/dT7Rcbo/1v1N1RQHFNOM/g9Snx7HW3L8HWsP8Q3jfP6VwOLosutk/9rjk1YQcxj+gnmKMsNn6P/HDeuPFY+M/YHwDjqKhB0Ci19/fCVrbP4UxKkDWOP6/pvljWa09tL9wi7wrQXjnv/Z6yLImkM2/3yTlOzY14D+m+WNZrT20PzwKVQnrQwNA9nrIsiaQzT/g40rFrRQFwPa45NWEHMa/kbslHEZq97/xw3rjxWPjv4cLC2SMBci/otff3wla27+rKF5oIAv0P1N1RQHFNOO/iDJPGyWHBUAHWsP8Q3jfvwQf/by16gXAfqIF9vK26b8XrO0Vh0r+v9eubQuJ7PS/BxLrA0ZZ479azrTZQuDwv1MK1EuItPw/yscgV9Z6FkAwHBR2WjQMQJNRzXsQ5vY/GlUHVJYKF0DONuFv2lMNQNCGZ28QJfk/0WUwoIL36D8ggDOMQuATQNqMOeAy/wZAWFYOYM+M2z/LWC4uH3oSQDE+LyTsMgRAkJzhRGWFGEDd4soovCQQQKqk0DJMEP8/rGmNdwOLBUAW2X/9xCbjP4hu3dcqJhNAzuYItRvdB0CgzW3zJW/sPxotm/Y2TxRAQAk9XmdDDEC1Kx9MKgT3P1M+NctcghZAFVqcLlb0C0Bgzd3sB2b2P77mZDPUWhZAFROHJpUGCEDAfma5CxXtPz1DWq/zYxRAmhYY5824F0DOuQKWSbAOQNCMqrvu3fs/L6DR22K2wT9nAAxPBU8RQGiN6mW43AFAZhu25b633D8c1YgmzowSQNM25BRKWARArGS08/lNxD+LFssHwmMRQLC5aNcxBgJABL9HT0WRF0CjCmJmOGEOQHsuaVzMP/s/TWJCaGGwBUCeu1PAPLzjP9nqN9DZOBNAKE4JcydbCkCGtbd1qjPzP8dgm9U8jhVAtPeKTkVwDkCeCLss5l37P401XMPLmBdAFd29VMVQDUBg0yA55h75Pz6odcYLCRdApBM4rBrkAkDyAVWgQxbRP4XDMnK20hFAymLlF7EmzD8GUgo9XBHlP3lbK7T9COc/k+OhPthhy7+YGEpnrOvCPzBFhLs15u4/epbqB6H4uz9IuuLF5svev6lzLKY31es/CaQ0envF5z8ZY0xlUADXv7zaz7HYEuI/CfbK1sn16T8uAQfWwxLWPzKn/YuFN94/5KdbC1AFu793fyCSnlfvPzK2y4doAMY/NRg5t1/X6b/shq4QJaHDP5yNIAKPOeI/vpn7BSE30r/X4YQrO6nrv78Ziv/Thto/DqJ1Y6+y5z9l51NaxFrlv8QlA65HOLS/86dxiEc96z+Hj0+LFjneP6LzBZ8LTc2/DaJ1Y6+y579l51NaxFrlP8QlA65HOLQ/8qdxiEc967+Jj0+LFjnev6LzBZ8LTc0/1qdbC1AFuz93fyCSnlfvvzK2y4doAMa/NRg5t1/X6T/vhq4QJaHDv5yNIAKPOeK/wJn7BSE30j/W4YQrO6nrP78Ziv/Thtq/CaQ0envF578XY0xlUADXP7zaz7HYEuK/CvbK1sn16b8rAQfWwxLWvzKn/YuFN96/zWLlF7EmzL8GUgo9XBHlv3lbK7T9COe/kOOhPthhyz+cGEpnrOvCvzBFhLs15u6/c5bqB6H4u79IuuLF5sveP6lzLKY31eu/AQAAAP////8HAAAA/////zEAAAD/////VwEAAP////9hCQAA/////6dBAAD/////kcsBAP/////3kAwA/////8H2VwAAAAAAAAAAAAAAAAACAAAA/////w4AAAD/////YgAAAP////+uAgAA/////8ISAAD/////ToMAAP////8ilwMA/////+4hGQD/////gu2vAAAAAAAAAAAAAAAAAAAAAAACAAAA//////////8BAAAAAwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////AgAAAP//////////AQAAAAAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD/////////////////////AQAAAP///////////////wIAAAD///////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP///////////////////////////////wIAAAD///////////////8BAAAA/////////////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAABAAAA//////////8CAAAA//////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAAAQAAAP//////////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAAAAAAAAAAIAAAABAAAAAQAAAAIAAAACAAAAAAAAAAUAAAAFAAAAAAAAAAIAAAACAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAEAAAACAAAAAgAAAAIAAAAAAAAABQAAAAYAAAAAAAAAAgAAAAIAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAACAAAAAQAAAAMAAAACAAAAAgAAAAAAAAAFAAAABwAAAAAAAAACAAAAAgAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAIAAAABAAAABAAAAAIAAAACAAAAAAAAAAUAAAAIAAAAAAAAAAIAAAACAAAAAwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAIAAAAAAAAAAgAAAAEAAAAAAAAAAgAAAAIAAAAAAAAABQAAAAkAAAAAAAAAAgAAAAIAAAADAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAIAAAAAAAAAAwAAAA4AAAACAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAgAAAAMAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAgAAAAAAAAADAAAACgAAAAIAAAAAAAAAAgAAAAMAAAABAAAAAAAAAAIAAAACAAAAAwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAACAAAAAAAAAAMAAAALAAAAAgAAAAAAAAACAAAAAwAAAAIAAAAAAAAAAgAAAAIAAAADAAAACAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAIAAAAAAAAAAwAAAAwAAAACAAAAAAAAAAIAAAADAAAAAwAAAAAAAAACAAAAAgAAAAMAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAACAAAAAgAAAAAAAAADAAAADQAAAAIAAAAAAAAAAgAAAAMAAAAEAAAAAAAAAAIAAAACAAAAAwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAACAAAAAAAAAAMAAAAGAAAAAgAAAAAAAAACAAAAAwAAAA8AAAAAAAAAAgAAAAIAAAADAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAIAAAAAAAAAAwAAAAcAAAACAAAAAAAAAAIAAAADAAAAEAAAAAAAAAACAAAAAgAAAAMAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAgAAAAAAAAADAAAACAAAAAIAAAAAAAAAAgAAAAMAAAARAAAAAAAAAAIAAAACAAAAAwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAACAAAAAAAAAAMAAAAJAAAAAgAAAAAAAAACAAAAAwAAABIAAAAAAAAAAgAAAAIAAAADAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAgAAAAIAAAAAAAAAAwAAAAUAAAACAAAA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ZV0gPT0gS0kAZmFjZWlqay5jAF9mYWNlSWprUGVudFRvQ2VsbEJvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9DZWxsQm91bmRhcnkAaDNJbmRleC5jAGNvbXBhY3RDZWxscwBsYXRMbmdUb0NlbGwAY2VsbFRvQ2hpbGRQb3MAdmFsaWRhdGVDaGlsZFBvcwBsYXRMbmcuYwBjZWxsQXJlYVJhZHMyAHBvbHlnb24tPm5leHQgPT0gTlVMTABsaW5rZWRHZW8uYwBhZGROZXdMaW5rZWRQb2x5Z29uAG5leHQgIT0gTlVMTABsb29wICE9IE5VTEwAYWRkTmV3TGlua2VkTG9vcABwb2x5Z29uLT5maXJzdCA9PSBOVUxMAGFkZExpbmtlZExvb3AAY29vcmQgIT0gTlVMTABhZGRMaW5rZWRDb29yZABsb29wLT5maXJzdCA9PSBOVUxMAGlubmVyTG9vcHMgIT0gTlVMTABub3JtYWxpemVNdWx0aVBvbHlnb24AYmJveGVzICE9IE5VTEwAY2FuZGlkYXRlcyAhPSBOVUxMAGZpbmRQb2x5Z29uRm9ySG9sZQBjYW5kaWRhdGVCQm94ZXMgIT0gTlVMTAByZXZEaXIgIT0gSU5WQUxJRF9ESUdJVABsb2NhbGlqLmMAY2VsbFRvTG9jYWxJamsAYmFzZUNlbGwgIT0gb3JpZ2luQmFzZUNlbGwAIShvcmlnaW5PblBlbnQgJiYgaW5kZXhPblBlbnQpAGJhc2VDZWxsID09IG9yaWdpbkJhc2VDZWxsAGJhc2VDZWxsICE9IElOVkFMSURfQkFTRV9DRUxMAGxvY2FsSWprVG9DZWxsACFfaXNCYXNlQ2VsbFBlbnRhZ29uKGJhc2VDZWxsKQBiYXNlQ2VsbFJvdGF0aW9ucyA+PSAwAGdyaWRQYXRoQ2VsbHMAcG9seWZpbGwuYwBpdGVyU3RlcFBvbHlnb25Db21wYWN0ADAAdmVydGV4LmMAY2VsbFRvVmVydGV4AGdyYXBoLT5idWNrZXRzICE9IE5VTEwAdmVydGV4R3JhcGguYwBpbml0VmVydGV4R3JhcGgAbm9kZSAhPSBOVUxMAGFkZFZlcnRleE5vZGU=\";\n var tempDoublePtr = 28624;\n function demangle(func) {\n return func;\n }\n function demangleAll(text) {\n var regex = /\\b__Z[\\w\\d_]+/g;\n return text.replace(regex, function (x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n }\n function jsStackTrace() {\n var err = new Error();\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n if (!err.stack) {\n return \"(no stack trace available)\";\n }\n }\n return err.stack.toString();\n }\n function stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) { js += \"\\n\" + Module[\"extraStackTrace\"](); }\n return demangleAll(js);\n }\n function ___assert_fail(condition, filename, line, func) {\n abort(\"Assertion failed: \" + UTF8ToString(condition) + \", at: \" + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"]);\n }\n function _emscripten_get_heap_size() {\n return HEAP8.length;\n }\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n }\n function ___setErrNo(value) {\n if (Module[\"___errno_location\"]) { HEAP32[Module[\"___errno_location\"]() >> 2] = value; }\n return value;\n }\n function abortOnCannotGrowMemory(requestedSize) {\n abort(\"OOM\");\n }\n function emscripten_realloc_buffer(size) {\n try {\n var newBuffer = new ArrayBuffer(size);\n if (newBuffer.byteLength != size) { return; }\n new Int8Array(newBuffer).set(HEAP8);\n _emscripten_replace_memory(newBuffer);\n updateGlobalBufferAndViews(newBuffer);\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = _emscripten_get_heap_size();\n var PAGE_MULTIPLE = 16777216;\n var LIMIT = 2147483648 - PAGE_MULTIPLE;\n if (requestedSize > LIMIT) {\n return false;\n }\n var MIN_TOTAL_MEMORY = 16777216;\n var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n while (newSize < requestedSize) {\n if (newSize <= 536870912) {\n newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n } else {\n newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n }\n }\n var replacement = emscripten_realloc_buffer(newSize);\n if (!replacement) {\n return false;\n }\n return true;\n }\n var decodeBase64 = typeof atob === \"function\" ? atob : function (input) {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n do {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n if (enc3 !== 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 !== 64) {\n output = output + String.fromCharCode(chr3);\n }\n } while (i < input.length);\n return output;\n };\n function intArrayFromBase64(s) {\n try {\n var decoded = decodeBase64(s);\n var bytes = new Uint8Array(decoded.length);\n for (var i = 0; i < decoded.length; ++i) {\n bytes[i] = decoded.charCodeAt(i);\n }\n return bytes;\n } catch (_) {\n throw new Error(\"Converting base64 string to bytes failed.\");\n }\n }\n function tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) {\n return;\n }\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n }\n var asmGlobalArg = {\n \"Math\": Math,\n \"Int8Array\": Int8Array,\n \"Int32Array\": Int32Array,\n \"Uint8Array\": Uint8Array,\n \"Float32Array\": Float32Array,\n \"Float64Array\": Float64Array\n };\n var asmLibraryArg = {\n \"a\": abort,\n \"b\": setTempRet0,\n \"c\": getTempRet0,\n \"d\": ___assert_fail,\n \"e\": ___setErrNo,\n \"f\": _emscripten_get_heap_size,\n \"g\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"i\": abortOnCannotGrowMemory,\n \"j\": demangle,\n \"k\": demangleAll,\n \"l\": emscripten_realloc_buffer,\n \"m\": jsStackTrace,\n \"n\": stackTrace,\n \"o\": tempDoublePtr,\n \"p\": DYNAMICTOP_PTR\n }; // EMSCRIPTEN_START_ASM\n var asm = (/** @suppress {uselessCode} */function (global, env, buffer) {\n \"almost asm\";\n\n var a = new global.Int8Array(buffer),\n b = new global.Int32Array(buffer),\n c = new global.Uint8Array(buffer),\n d = new global.Float32Array(buffer),\n e = new global.Float64Array(buffer),\n f = env.o | 0,\n g = env.p | 0,\n p = global.Math.floor,\n q = global.Math.abs,\n r = global.Math.sqrt,\n s = global.Math.pow,\n t = global.Math.cos,\n u = global.Math.sin,\n v = global.Math.tan,\n w = global.Math.acos,\n x = global.Math.asin,\n y = global.Math.atan,\n z = global.Math.atan2,\n A = global.Math.ceil,\n B = global.Math.imul,\n C = global.Math.min,\n D = global.Math.max,\n E = global.Math.clz32,\n G = env.b,\n H = env.c,\n I = env.d,\n J = env.e,\n K = env.f,\n L = env.g,\n M = env.h,\n N = env.i,\n T = 28640;\n function W(newBuffer) {\n a = new Int8Array(newBuffer);\n c = new Uint8Array(newBuffer);\n b = new Int32Array(newBuffer);\n d = new Float32Array(newBuffer);\n e = new Float64Array(newBuffer);\n buffer = newBuffer;\n return true;\n }\n // EMSCRIPTEN_START_FUNCS\n function X(a) {\n a = a | 0;\n var b = 0;\n b = T;\n T = T + a | 0;\n T = T + 15 & -16;\n return b | 0;\n }\n function Y() {\n return T | 0;\n }\n function Z(a) {\n a = a | 0;\n T = a;\n }\n function _(a, b) {\n a = a | 0;\n b = b | 0;\n T = a;\n }\n function $(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0;\n if ((a | 0) < 0) {\n c = 2;\n return c | 0;\n }\n if ((a | 0) > 13780509) {\n c = uc(15, c) | 0;\n return c | 0;\n } else {\n d = ((a | 0) < 0) << 31 >> 31;\n f = Md(a | 0, d | 0, 3, 0) | 0;\n e = H() | 0;\n d = Gd(a | 0, d | 0, 1, 0) | 0;\n d = Md(f | 0, e | 0, d | 0, H() | 0) | 0;\n d = Gd(d | 0, H() | 0, 1, 0) | 0;\n a = H() | 0;\n b[c >> 2] = d;\n b[c + 4 >> 2] = a;\n c = 0;\n return c | 0;\n }\n return 0;\n }\n function aa(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n return ba(a, b, c, d, 0) | 0;\n }\n function ba(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n j = T;\n T = T + 16 | 0;\n h = j;\n if (!(ca(a, c, d, e, f) | 0)) {\n e = 0;\n T = j;\n return e | 0;\n }\n do { if ((d | 0) >= 0) {\n if ((d | 0) > 13780509) {\n g = uc(15, h) | 0;\n if (g | 0) { break; }\n i = h;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n } else {\n g = ((d | 0) < 0) << 31 >> 31;\n k = Md(d | 0, g | 0, 3, 0) | 0;\n i = H() | 0;\n g = Gd(d | 0, g | 0, 1, 0) | 0;\n g = Md(k | 0, i | 0, g | 0, H() | 0) | 0;\n g = Gd(g | 0, H() | 0, 1, 0) | 0;\n i = H() | 0;\n b[h >> 2] = g;\n b[h + 4 >> 2] = i;\n h = g;\n }\n Xd(e | 0, 0, h << 3 | 0) | 0;\n if (f | 0) {\n Xd(f | 0, 0, h << 2 | 0) | 0;\n g = da(a, c, d, e, f, h, i, 0) | 0;\n break;\n }\n g = Fd(h, 4) | 0;\n if (!g) { g = 13; }else {\n k = da(a, c, d, e, g, h, i, 0) | 0;\n Ed(g);\n g = k;\n }\n } else { g = 2; } } while (0);\n k = g;\n T = j;\n return k | 0;\n }\n function ca(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0;\n q = T;\n T = T + 16 | 0;\n o = q;\n p = q + 8 | 0;\n n = o;\n b[n >> 2] = a;\n b[n + 4 >> 2] = c;\n if ((d | 0) < 0) {\n p = 2;\n T = q;\n return p | 0;\n }\n g = e;\n b[g >> 2] = a;\n b[g + 4 >> 2] = c;\n g = (f | 0) != 0;\n if (g) { b[f >> 2] = 0; }\n if (Hb(a, c) | 0) {\n p = 9;\n T = q;\n return p | 0;\n }\n b[p >> 2] = 0;\n a: do { if ((d | 0) >= 1) {\n if (g) {\n l = 1;\n k = 0;\n m = 0;\n n = 1;\n g = a;\n while (1) {\n if (!(k | m)) {\n g = ea(g, c, 4, p, o) | 0;\n if (g | 0) { break a; }\n c = o;\n g = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n if (Hb(g, c) | 0) {\n g = 9;\n break a;\n }\n }\n g = ea(g, c, b[26800 + (m << 2) >> 2] | 0, p, o) | 0;\n if (g | 0) { break a; }\n c = o;\n g = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n a = e + (l << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n b[f + (l << 2) >> 2] = n;\n a = k + 1 | 0;\n h = (a | 0) == (n | 0);\n i = m + 1 | 0;\n j = (i | 0) == 6;\n if (Hb(g, c) | 0) {\n g = 9;\n break a;\n }\n n = n + (j & h & 1) | 0;\n if ((n | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n l = l + 1 | 0;\n k = h ? 0 : a;\n m = h ? j ? 0 : i : m;\n }\n }\n } else {\n l = 1;\n k = 0;\n m = 0;\n n = 1;\n g = a;\n while (1) {\n if (!(k | m)) {\n g = ea(g, c, 4, p, o) | 0;\n if (g | 0) { break a; }\n c = o;\n g = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n if (Hb(g, c) | 0) {\n g = 9;\n break a;\n }\n }\n g = ea(g, c, b[26800 + (m << 2) >> 2] | 0, p, o) | 0;\n if (g | 0) { break a; }\n c = o;\n g = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n a = e + (l << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n a = k + 1 | 0;\n h = (a | 0) == (n | 0);\n i = m + 1 | 0;\n j = (i | 0) == 6;\n if (Hb(g, c) | 0) {\n g = 9;\n break a;\n }\n n = n + (j & h & 1) | 0;\n if ((n | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n l = l + 1 | 0;\n k = h ? 0 : a;\n m = h ? j ? 0 : i : m;\n }\n }\n }\n } else { g = 0; } } while (0);\n p = g;\n T = q;\n return p | 0;\n }\n function da(a, c, d, e, f, g, h, i) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n i = i | 0;\n var j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0;\n q = T;\n T = T + 16 | 0;\n o = q + 8 | 0;\n p = q;\n j = Od(a | 0, c | 0, g | 0, h | 0) | 0;\n l = H() | 0;\n m = e + (j << 3) | 0;\n r = m;\n s = b[r >> 2] | 0;\n r = b[r + 4 >> 2] | 0;\n k = (s | 0) == (a | 0) & (r | 0) == (c | 0);\n if (!((s | 0) == 0 & (r | 0) == 0 | k)) { do {\n j = Gd(j | 0, l | 0, 1, 0) | 0;\n j = Nd(j | 0, H() | 0, g | 0, h | 0) | 0;\n l = H() | 0;\n m = e + (j << 3) | 0;\n s = m;\n r = b[s >> 2] | 0;\n s = b[s + 4 >> 2] | 0;\n k = (r | 0) == (a | 0) & (s | 0) == (c | 0);\n } while (!((r | 0) == 0 & (s | 0) == 0 | k)); }\n j = f + (j << 2) | 0;\n if (k ? (b[j >> 2] | 0) <= (i | 0) : 0) {\n s = 0;\n T = q;\n return s | 0;\n }\n s = m;\n b[s >> 2] = a;\n b[s + 4 >> 2] = c;\n b[j >> 2] = i;\n if ((i | 0) >= (d | 0)) {\n s = 0;\n T = q;\n return s | 0;\n }\n k = i + 1 | 0;\n b[o >> 2] = 0;\n j = ea(a, c, 2, o, p) | 0;\n switch (j | 0) {\n case 9:\n {\n n = 9;\n break;\n }\n case 0:\n {\n j = p;\n j = da(b[j >> 2] | 0, b[j + 4 >> 2] | 0, d, e, f, g, h, k) | 0;\n if (!j) { n = 9; }\n break;\n }\n default:\n\n }\n a: do { if ((n | 0) == 9) {\n b[o >> 2] = 0;\n j = ea(a, c, 3, o, p) | 0;\n switch (j | 0) {\n case 9:\n break;\n case 0:\n {\n j = p;\n j = da(b[j >> 2] | 0, b[j + 4 >> 2] | 0, d, e, f, g, h, k) | 0;\n if (j | 0) { break a; }\n break;\n }\n default:\n break a;\n }\n b[o >> 2] = 0;\n j = ea(a, c, 1, o, p) | 0;\n switch (j | 0) {\n case 9:\n break;\n case 0:\n {\n j = p;\n j = da(b[j >> 2] | 0, b[j + 4 >> 2] | 0, d, e, f, g, h, k) | 0;\n if (j | 0) { break a; }\n break;\n }\n default:\n break a;\n }\n b[o >> 2] = 0;\n j = ea(a, c, 5, o, p) | 0;\n switch (j | 0) {\n case 9:\n break;\n case 0:\n {\n j = p;\n j = da(b[j >> 2] | 0, b[j + 4 >> 2] | 0, d, e, f, g, h, k) | 0;\n if (j | 0) { break a; }\n break;\n }\n default:\n break a;\n }\n b[o >> 2] = 0;\n j = ea(a, c, 4, o, p) | 0;\n switch (j | 0) {\n case 9:\n break;\n case 0:\n {\n j = p;\n j = da(b[j >> 2] | 0, b[j + 4 >> 2] | 0, d, e, f, g, h, k) | 0;\n if (j | 0) { break a; }\n break;\n }\n default:\n break a;\n }\n b[o >> 2] = 0;\n j = ea(a, c, 6, o, p) | 0;\n switch (j | 0) {\n case 9:\n break;\n case 0:\n {\n j = p;\n j = da(b[j >> 2] | 0, b[j + 4 >> 2] | 0, d, e, f, g, h, k) | 0;\n if (j | 0) { break a; }\n break;\n }\n default:\n break a;\n }\n s = 0;\n T = q;\n return s | 0;\n } } while (0);\n s = j;\n T = q;\n return s | 0;\n }\n function ea(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;\n if (d >>> 0 > 6) {\n f = 1;\n return f | 0;\n }\n m = (b[e >> 2] | 0) % 6 | 0;\n b[e >> 2] = m;\n if ((m | 0) > 0) {\n g = 0;\n do {\n d = $a(d) | 0;\n g = g + 1 | 0;\n } while ((g | 0) < (b[e >> 2] | 0));\n }\n m = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n l = m & 127;\n if (l >>> 0 > 121) {\n f = 5;\n return f | 0;\n }\n j = Pb(a, c) | 0;\n g = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n g = g & 15;\n a: do { if (!g) { k = 8; }else {\n while (1) {\n h = (15 - g | 0) * 3 | 0;\n i = Qd(a | 0, c | 0, h | 0) | 0;\n H() | 0;\n i = i & 7;\n if ((i | 0) == 7) {\n c = 5;\n break;\n }\n p = (Vb(g) | 0) == 0;\n g = g + -1 | 0;\n n = Rd(7, 0, h | 0) | 0;\n c = c & ~(H() | 0);\n o = Rd(b[(p ? 432 : 16) + (i * 28 | 0) + (d << 2) >> 2] | 0, 0, h | 0) | 0;\n h = H() | 0;\n d = b[(p ? 640 : 224) + (i * 28 | 0) + (d << 2) >> 2] | 0;\n a = o | a & ~n;\n c = h | c;\n if (!d) {\n d = 0;\n break a;\n }\n if (!g) {\n k = 8;\n break a;\n }\n }\n return c | 0;\n } } while (0);\n if ((k | 0) == 8) {\n p = b[848 + (l * 28 | 0) + (d << 2) >> 2] | 0;\n o = Rd(p | 0, 0, 45) | 0;\n a = o | a;\n c = H() | 0 | c & -1040385;\n d = b[4272 + (l * 28 | 0) + (d << 2) >> 2] | 0;\n if ((p & 127 | 0) == 127) {\n p = Rd(b[848 + (l * 28 | 0) + 20 >> 2] | 0, 0, 45) | 0;\n c = H() | 0 | c & -1040385;\n d = b[4272 + (l * 28 | 0) + 20 >> 2] | 0;\n a = Rb(p | a, c) | 0;\n c = H() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n }\n }\n i = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n i = i & 127;\n b: do { if (!(oa(i) | 0)) {\n if ((d | 0) > 0) {\n g = 0;\n do {\n a = Rb(a, c) | 0;\n c = H() | 0;\n g = g + 1 | 0;\n } while ((g | 0) != (d | 0));\n }\n } else {\n c: do { if ((Pb(a, c) | 0) == 1) {\n if ((l | 0) != (i | 0)) { if (ua(i, b[7696 + (l * 28 | 0) >> 2] | 0) | 0) {\n a = Tb(a, c) | 0;\n h = 1;\n c = H() | 0;\n break;\n } else { I(27795, 26864, 533, 26872); } }\n switch (j | 0) {\n case 3:\n {\n a = Rb(a, c) | 0;\n c = H() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n h = 0;\n break c;\n }\n case 5:\n {\n a = Tb(a, c) | 0;\n c = H() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 5;\n h = 0;\n break c;\n }\n case 0:\n {\n p = 9;\n return p | 0;\n }\n default:\n {\n p = 1;\n return p | 0;\n }\n }\n } else { h = 0; } } while (0);\n if ((d | 0) > 0) {\n g = 0;\n do {\n a = Qb(a, c) | 0;\n c = H() | 0;\n g = g + 1 | 0;\n } while ((g | 0) != (d | 0));\n }\n if ((l | 0) != (i | 0)) {\n if (!(pa(i) | 0)) {\n if ((h | 0) != 0 | (Pb(a, c) | 0) != 5) { break; }\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n break;\n }\n switch (m & 127) {\n case 8:\n case 118:\n break b;\n default:\n\n }\n if ((Pb(a, c) | 0) != 3) { b[e >> 2] = (b[e >> 2] | 0) + 1; }\n }\n } } while (0);\n b[e >> 2] = ((b[e >> 2] | 0) + d | 0) % 6 | 0;\n p = f;\n b[p >> 2] = a;\n b[p + 4 >> 2] = c;\n p = 0;\n return p | 0;\n }\n function fa(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n if (!(ga(a, b, c, d) | 0)) {\n d = 0;\n return d | 0;\n }\n Xd(d | 0, 0, c * 48 | 0) | 0;\n d = ha(a, b, c, d) | 0;\n return d | 0;\n }\n function ga(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;\n p = T;\n T = T + 16 | 0;\n n = p;\n o = p + 8 | 0;\n m = n;\n b[m >> 2] = a;\n b[m + 4 >> 2] = c;\n if ((d | 0) < 0) {\n o = 2;\n T = p;\n return o | 0;\n }\n if (!d) {\n o = e;\n b[o >> 2] = a;\n b[o + 4 >> 2] = c;\n o = 0;\n T = p;\n return o | 0;\n }\n b[o >> 2] = 0;\n a: do { if (!(Hb(a, c) | 0)) {\n f = 0;\n m = a;\n do {\n a = ea(m, c, 4, o, n) | 0;\n if (a | 0) { break a; }\n c = n;\n m = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n f = f + 1 | 0;\n if (Hb(m, c) | 0) {\n a = 9;\n break a;\n }\n } while ((f | 0) < (d | 0));\n l = e;\n b[l >> 2] = m;\n b[l + 4 >> 2] = c;\n l = d + -1 | 0;\n k = 0;\n a = 1;\n do {\n f = 26800 + (k << 2) | 0;\n if ((k | 0) == 5) {\n h = b[f >> 2] | 0;\n g = 0;\n f = a;\n while (1) {\n a = n;\n a = ea(b[a >> 2] | 0, b[a + 4 >> 2] | 0, h, o, n) | 0;\n if (a | 0) { break a; }\n if ((g | 0) != (l | 0)) {\n j = n;\n i = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n a = e + (f << 3) | 0;\n b[a >> 2] = i;\n b[a + 4 >> 2] = j;\n if (!(Hb(i, j) | 0)) { a = f + 1 | 0; }else {\n a = 9;\n break a;\n }\n } else { a = f; }\n g = g + 1 | 0;\n if ((g | 0) >= (d | 0)) { break; }else { f = a; }\n }\n } else {\n h = n;\n j = b[f >> 2] | 0;\n i = 0;\n f = a;\n g = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n while (1) {\n a = ea(g, h, j, o, n) | 0;\n if (a | 0) { break a; }\n h = n;\n g = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n a = e + (f << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = h;\n a = f + 1 | 0;\n if (Hb(g, h) | 0) {\n a = 9;\n break a;\n }\n i = i + 1 | 0;\n if ((i | 0) >= (d | 0)) { break; }else { f = a; }\n }\n }\n k = k + 1 | 0;\n } while (k >>> 0 < 6);\n a = n;\n a = ((m | 0) == (b[a >> 2] | 0) ? (c | 0) == (b[a + 4 >> 2] | 0) : 0) ? 0 : 9;\n } else { a = 9; } } while (0);\n o = a;\n T = p;\n return o | 0;\n }\n function ha(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0;\n m = T;\n T = T + 16 | 0;\n h = m;\n if (!d) {\n b[e >> 2] = a;\n b[e + 4 >> 2] = c;\n e = 0;\n T = m;\n return e | 0;\n }\n do { if ((d | 0) >= 0) {\n if ((d | 0) > 13780509) {\n f = uc(15, h) | 0;\n if (f | 0) { break; }\n g = h;\n f = b[g >> 2] | 0;\n g = b[g + 4 >> 2] | 0;\n } else {\n f = ((d | 0) < 0) << 31 >> 31;\n l = Md(d | 0, f | 0, 3, 0) | 0;\n g = H() | 0;\n f = Gd(d | 0, f | 0, 1, 0) | 0;\n f = Md(l | 0, g | 0, f | 0, H() | 0) | 0;\n f = Gd(f | 0, H() | 0, 1, 0) | 0;\n g = H() | 0;\n l = h;\n b[l >> 2] = f;\n b[l + 4 >> 2] = g;\n }\n k = Fd(f, 8) | 0;\n if (!k) { f = 13; }else {\n l = Fd(f, 4) | 0;\n if (!l) {\n Ed(k);\n f = 13;\n break;\n }\n f = da(a, c, d, k, l, f, g, 0) | 0;\n if (f | 0) {\n Ed(k);\n Ed(l);\n break;\n }\n c = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n if ((h | 0) > 0 | (h | 0) == 0 & c >>> 0 > 0) {\n f = 0;\n i = 0;\n j = 0;\n do {\n a = k + (i << 3) | 0;\n g = b[a >> 2] | 0;\n a = b[a + 4 >> 2] | 0;\n if (!((g | 0) == 0 & (a | 0) == 0) ? (b[l + (i << 2) >> 2] | 0) == (d | 0) : 0) {\n n = e + (f << 3) | 0;\n b[n >> 2] = g;\n b[n + 4 >> 2] = a;\n f = f + 1 | 0;\n }\n i = Gd(i | 0, j | 0, 1, 0) | 0;\n j = H() | 0;\n } while ((j | 0) < (h | 0) | (j | 0) == (h | 0) & i >>> 0 < c >>> 0);\n }\n Ed(k);\n Ed(l);\n f = 0;\n }\n } else { f = 2; } } while (0);\n n = f;\n T = m;\n return n | 0;\n }\n function ia(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n i = T;\n T = T + 16 | 0;\n g = i;\n h = i + 8 | 0;\n f = (Hb(a, c) | 0) == 0;\n f = f ? 1 : 2;\n while (1) {\n b[h >> 2] = 0;\n k = (ea(a, c, f, h, g) | 0) == 0;\n j = g;\n if (k & ((b[j >> 2] | 0) == (d | 0) ? (b[j + 4 >> 2] | 0) == (e | 0) : 0)) {\n a = 4;\n break;\n }\n f = f + 1 | 0;\n if (f >>> 0 >= 7) {\n f = 7;\n a = 4;\n break;\n }\n }\n if ((a | 0) == 4) {\n T = i;\n return f | 0;\n }\n return 0;\n }\n function ja(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n i = T;\n T = T + 48 | 0;\n f = i + 16 | 0;\n g = i + 8 | 0;\n h = i;\n d = Xc(d) | 0;\n if (d | 0) {\n h = d;\n T = i;\n return h | 0;\n }\n k = a;\n j = b[k + 4 >> 2] | 0;\n d = g;\n b[d >> 2] = b[k >> 2];\n b[d + 4 >> 2] = j;\n Wc(g, f);\n d = Ha(f, c, h) | 0;\n if (!d) {\n c = b[g >> 2] | 0;\n g = b[a + 8 >> 2] | 0;\n if ((g | 0) > 0) {\n f = b[a + 12 >> 2] | 0;\n d = 0;\n do {\n c = (b[f + (d << 3) >> 2] | 0) + c | 0;\n d = d + 1 | 0;\n } while ((d | 0) < (g | 0));\n }\n d = h;\n f = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n g = ((c | 0) < 0) << 31 >> 31;\n if ((d | 0) < (g | 0) | (d | 0) == (g | 0) & f >>> 0 < c >>> 0) {\n d = h;\n b[d >> 2] = c;\n b[d + 4 >> 2] = g;\n d = g;\n } else { c = f; }\n j = Gd(c | 0, d | 0, 12, 0) | 0;\n k = H() | 0;\n d = h;\n b[d >> 2] = j;\n b[d + 4 >> 2] = k;\n d = e;\n b[d >> 2] = j;\n b[d + 4 >> 2] = k;\n d = 0;\n }\n k = d;\n T = i;\n return k | 0;\n }\n function ka(a, c, d, f, g, h, i) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n i = i | 0;\n var j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n I = 0,\n J = 0.0,\n K = 0.0,\n L = 0.0,\n M = 0.0;\n I = T;\n T = T + 64 | 0;\n D = I + 48 | 0;\n E = I + 32 | 0;\n F = I + 24 | 0;\n x = I + 8 | 0;\n y = I;\n k = b[a >> 2] | 0;\n if ((k | 0) <= 0) {\n G = 0;\n T = I;\n return G | 0;\n }\n z = a + 4 | 0;\n A = D + 8 | 0;\n B = E + 8 | 0;\n C = x + 8 | 0;\n j = 0;\n v = 0;\n while (1) {\n l = b[z >> 2] | 0;\n u = l + (v << 4) | 0;\n b[D >> 2] = b[u >> 2];\n b[D + 4 >> 2] = b[u + 4 >> 2];\n b[D + 8 >> 2] = b[u + 8 >> 2];\n b[D + 12 >> 2] = b[u + 12 >> 2];\n if ((v | 0) == (k + -1 | 0)) {\n b[E >> 2] = b[l >> 2];\n b[E + 4 >> 2] = b[l + 4 >> 2];\n b[E + 8 >> 2] = b[l + 8 >> 2];\n b[E + 12 >> 2] = b[l + 12 >> 2];\n } else {\n u = l + (v + 1 << 4) | 0;\n b[E >> 2] = b[u >> 2];\n b[E + 4 >> 2] = b[u + 4 >> 2];\n b[E + 8 >> 2] = b[u + 8 >> 2];\n b[E + 12 >> 2] = b[u + 12 >> 2];\n }\n k = Ia(D, E, f, F) | 0;\n a: do { if (!k) {\n k = F;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n if ((k | 0) > 0 | (k | 0) == 0 & l >>> 0 > 0) {\n t = 0;\n u = 0;\n b: while (1) {\n K = 1.0 / (+(l >>> 0) + 4294967296.0 * +(k | 0));\n M = +e[D >> 3];\n k = Hd(l | 0, k | 0, t | 0, u | 0) | 0;\n L = +(k >>> 0) + 4294967296.0 * +(H() | 0);\n J = +(t >>> 0) + 4294967296.0 * +(u | 0);\n e[x >> 3] = K * (M * L) + K * (+e[E >> 3] * J);\n e[C >> 3] = K * (+e[A >> 3] * L) + K * (+e[B >> 3] * J);\n k = Wb(x, f, y) | 0;\n if (k | 0) {\n j = k;\n break;\n }\n s = y;\n r = b[s >> 2] | 0;\n s = b[s + 4 >> 2] | 0;\n o = Od(r | 0, s | 0, c | 0, d | 0) | 0;\n m = H() | 0;\n k = i + (o << 3) | 0;\n n = k;\n l = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n c: do { if ((l | 0) == 0 & (n | 0) == 0) {\n w = k;\n G = 16;\n } else {\n p = 0;\n q = 0;\n while (1) {\n if ((p | 0) > (d | 0) | (p | 0) == (d | 0) & q >>> 0 > c >>> 0) {\n j = 1;\n break b;\n }\n if ((l | 0) == (r | 0) & (n | 0) == (s | 0)) { break c; }\n k = Gd(o | 0, m | 0, 1, 0) | 0;\n o = Nd(k | 0, H() | 0, c | 0, d | 0) | 0;\n m = H() | 0;\n q = Gd(q | 0, p | 0, 1, 0) | 0;\n p = H() | 0;\n k = i + (o << 3) | 0;\n n = k;\n l = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n if ((l | 0) == 0 & (n | 0) == 0) {\n w = k;\n G = 16;\n break;\n }\n }\n } } while (0);\n if ((G | 0) == 16 ? (G = 0, !((r | 0) == 0 & (s | 0) == 0)) : 0) {\n q = w;\n b[q >> 2] = r;\n b[q + 4 >> 2] = s;\n q = h + (b[g >> 2] << 3) | 0;\n b[q >> 2] = r;\n b[q + 4 >> 2] = s;\n q = g;\n q = Gd(b[q >> 2] | 0, b[q + 4 >> 2] | 0, 1, 0) | 0;\n r = H() | 0;\n s = g;\n b[s >> 2] = q;\n b[s + 4 >> 2] = r;\n }\n t = Gd(t | 0, u | 0, 1, 0) | 0;\n u = H() | 0;\n k = F;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n if (!((k | 0) > (u | 0) | (k | 0) == (u | 0) & l >>> 0 > t >>> 0)) {\n l = 1;\n break a;\n }\n }\n l = 0;\n } else { l = 1; }\n } else {\n l = 0;\n j = k;\n } } while (0);\n v = v + 1 | 0;\n if (!l) {\n G = 21;\n break;\n }\n k = b[a >> 2] | 0;\n if ((v | 0) >= (k | 0)) {\n j = 0;\n G = 21;\n break;\n }\n }\n if ((G | 0) == 21) {\n T = I;\n return j | 0;\n }\n return 0;\n }\n function la(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n I = 0,\n J = 0,\n K = 0;\n K = T;\n T = T + 112 | 0;\n F = K + 80 | 0;\n j = K + 72 | 0;\n G = K;\n I = K + 56 | 0;\n f = Xc(d) | 0;\n if (f | 0) {\n J = f;\n T = K;\n return J | 0;\n }\n k = a + 8 | 0;\n J = Dd((b[k >> 2] << 5) + 32 | 0) | 0;\n if (!J) {\n J = 13;\n T = K;\n return J | 0;\n }\n Yc(a, J);\n f = Xc(d) | 0;\n if (!f) {\n D = a;\n E = b[D + 4 >> 2] | 0;\n f = j;\n b[f >> 2] = b[D >> 2];\n b[f + 4 >> 2] = E;\n Wc(j, F);\n f = Ha(F, c, G) | 0;\n if (!f) {\n f = b[j >> 2] | 0;\n g = b[k >> 2] | 0;\n if ((g | 0) > 0) {\n h = b[a + 12 >> 2] | 0;\n d = 0;\n do {\n f = (b[h + (d << 3) >> 2] | 0) + f | 0;\n d = d + 1 | 0;\n } while ((d | 0) != (g | 0));\n d = f;\n } else { d = f; }\n f = G;\n g = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n h = ((d | 0) < 0) << 31 >> 31;\n if ((f | 0) < (h | 0) | (f | 0) == (h | 0) & g >>> 0 < d >>> 0) {\n f = G;\n b[f >> 2] = d;\n b[f + 4 >> 2] = h;\n f = h;\n } else { d = g; }\n D = Gd(d | 0, f | 0, 12, 0) | 0;\n E = H() | 0;\n f = G;\n b[f >> 2] = D;\n b[f + 4 >> 2] = E;\n f = 0;\n } else {\n D = 0;\n E = 0;\n }\n if (!f) {\n d = Fd(D, 8) | 0;\n if (!d) {\n Ed(J);\n J = 13;\n T = K;\n return J | 0;\n }\n i = Fd(D, 8) | 0;\n if (!i) {\n Ed(J);\n Ed(d);\n J = 13;\n T = K;\n return J | 0;\n }\n B = F;\n b[B >> 2] = 0;\n b[B + 4 >> 2] = 0;\n B = a;\n C = b[B + 4 >> 2] | 0;\n f = j;\n b[f >> 2] = b[B >> 2];\n b[f + 4 >> 2] = C;\n f = ka(j, D, E, c, F, d, i) | 0;\n a: do { if (!f) {\n b: do { if ((b[k >> 2] | 0) > 0) {\n h = a + 12 | 0;\n g = 0;\n while (1) {\n f = ka((b[h >> 2] | 0) + (g << 3) | 0, D, E, c, F, d, i) | 0;\n g = g + 1 | 0;\n if (f | 0) { break; }\n if ((g | 0) >= (b[k >> 2] | 0)) { break b; }\n }\n Ed(d);\n Ed(i);\n Ed(J);\n break a;\n } } while (0);\n if ((E | 0) > 0 | (E | 0) == 0 & D >>> 0 > 0) { Xd(i | 0, 0, D << 3 | 0) | 0; }\n C = F;\n B = b[C + 4 >> 2] | 0;\n c: do { if ((B | 0) > 0 | (B | 0) == 0 & (b[C >> 2] | 0) >>> 0 > 0) {\n y = d;\n z = i;\n A = d;\n B = i;\n C = d;\n f = d;\n v = d;\n w = i;\n x = i;\n d = i;\n d: while (1) {\n r = 0;\n s = 0;\n t = 0;\n u = 0;\n g = 0;\n h = 0;\n while (1) {\n i = G;\n j = i + 56 | 0;\n do {\n b[i >> 2] = 0;\n i = i + 4 | 0;\n } while ((i | 0) < (j | 0));\n c = y + (r << 3) | 0;\n k = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n if (ca(k, c, 1, G, 0) | 0) {\n i = G;\n j = i + 56 | 0;\n do {\n b[i >> 2] = 0;\n i = i + 4 | 0;\n } while ((i | 0) < (j | 0));\n i = Fd(7, 4) | 0;\n if (i | 0) {\n da(k, c, 1, G, i, 7, 0, 0) | 0;\n Ed(i);\n }\n }\n q = 0;\n while (1) {\n p = G + (q << 3) | 0;\n o = b[p >> 2] | 0;\n p = b[p + 4 >> 2] | 0;\n e: do { if ((o | 0) == 0 & (p | 0) == 0) {\n i = g;\n j = h;\n } else {\n l = Od(o | 0, p | 0, D | 0, E | 0) | 0;\n k = H() | 0;\n i = e + (l << 3) | 0;\n c = i;\n j = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n if (!((j | 0) == 0 & (c | 0) == 0)) {\n m = 0;\n n = 0;\n do {\n if ((m | 0) > (E | 0) | (m | 0) == (E | 0) & n >>> 0 > D >>> 0) { break d; }\n if ((j | 0) == (o | 0) & (c | 0) == (p | 0)) {\n i = g;\n j = h;\n break e;\n }\n i = Gd(l | 0, k | 0, 1, 0) | 0;\n l = Nd(i | 0, H() | 0, D | 0, E | 0) | 0;\n k = H() | 0;\n n = Gd(n | 0, m | 0, 1, 0) | 0;\n m = H() | 0;\n i = e + (l << 3) | 0;\n c = i;\n j = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n } while (!((j | 0) == 0 & (c | 0) == 0));\n }\n if ((o | 0) == 0 & (p | 0) == 0) {\n i = g;\n j = h;\n break;\n }\n Zb(o, p, I) | 0;\n if (Zc(a, J, I) | 0) {\n n = Gd(g | 0, h | 0, 1, 0) | 0;\n h = H() | 0;\n m = i;\n b[m >> 2] = o;\n b[m + 4 >> 2] = p;\n g = z + (g << 3) | 0;\n b[g >> 2] = o;\n b[g + 4 >> 2] = p;\n g = n;\n }\n i = g;\n j = h;\n } } while (0);\n q = q + 1 | 0;\n if (q >>> 0 >= 7) { break; }else {\n g = i;\n h = j;\n }\n }\n r = Gd(r | 0, s | 0, 1, 0) | 0;\n s = H() | 0;\n t = Gd(t | 0, u | 0, 1, 0) | 0;\n u = H() | 0;\n h = F;\n g = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n if (!((u | 0) < (h | 0) | (u | 0) == (h | 0) & t >>> 0 < g >>> 0)) { break; }else {\n g = i;\n h = j;\n }\n }\n if ((h | 0) > 0 | (h | 0) == 0 & g >>> 0 > 0) {\n g = 0;\n h = 0;\n do {\n u = y + (g << 3) | 0;\n b[u >> 2] = 0;\n b[u + 4 >> 2] = 0;\n g = Gd(g | 0, h | 0, 1, 0) | 0;\n h = H() | 0;\n u = F;\n t = b[u + 4 >> 2] | 0;\n } while ((h | 0) < (t | 0) | ((h | 0) == (t | 0) ? g >>> 0 < (b[u >> 2] | 0) >>> 0 : 0));\n }\n u = F;\n b[u >> 2] = i;\n b[u + 4 >> 2] = j;\n if ((j | 0) > 0 | (j | 0) == 0 & i >>> 0 > 0) {\n q = d;\n r = x;\n s = C;\n t = w;\n u = z;\n d = v;\n x = f;\n w = A;\n v = q;\n f = r;\n C = B;\n B = s;\n A = t;\n z = y;\n y = u;\n } else { break c; }\n }\n Ed(A);\n Ed(B);\n Ed(J);\n f = 1;\n break a;\n } else { f = i; } } while (0);\n Ed(J);\n Ed(d);\n Ed(f);\n f = 0;\n } else {\n Ed(d);\n Ed(i);\n Ed(J);\n } } while (0);\n J = f;\n T = K;\n return J | 0;\n }\n }\n Ed(J);\n J = f;\n T = K;\n return J | 0;\n }\n function ma(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n l = T;\n T = T + 176 | 0;\n j = l;\n if ((c | 0) < 1) {\n ud(d, 0, 0);\n k = 0;\n T = l;\n return k | 0;\n }\n i = a;\n i = Qd(b[i >> 2] | 0, b[i + 4 >> 2] | 0, 52) | 0;\n H() | 0;\n ud(d, (c | 0) > 6 ? c : 6, i & 15);\n i = 0;\n while (1) {\n e = a + (i << 3) | 0;\n e = _b(b[e >> 2] | 0, b[e + 4 >> 2] | 0, j) | 0;\n if (e | 0) { break; }\n e = b[j >> 2] | 0;\n if ((e | 0) > 0) {\n h = 0;\n do {\n g = j + 8 + (h << 4) | 0;\n h = h + 1 | 0;\n e = j + 8 + (((h | 0) % (e | 0) | 0) << 4) | 0;\n f = zd(d, e, g) | 0;\n if (!f) { yd(d, g, e) | 0; }else { xd(d, f) | 0; }\n e = b[j >> 2] | 0;\n } while ((h | 0) < (e | 0));\n }\n i = i + 1 | 0;\n if ((i | 0) >= (c | 0)) {\n e = 0;\n k = 13;\n break;\n }\n }\n if ((k | 0) == 13) {\n T = l;\n return e | 0;\n }\n vd(d);\n k = e;\n T = l;\n return k | 0;\n }\n function na(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = T;\n T = T + 32 | 0;\n e = g;\n f = g + 16 | 0;\n a = ma(a, c, f) | 0;\n if (a | 0) {\n d = a;\n T = g;\n return d | 0;\n }\n b[d >> 2] = 0;\n b[d + 4 >> 2] = 0;\n b[d + 8 >> 2] = 0;\n a = wd(f) | 0;\n if (a | 0) { do {\n c = Cc(d) | 0;\n do {\n Dc(c, a) | 0;\n h = a + 16 | 0;\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n b[e + 12 >> 2] = b[h + 12 >> 2];\n xd(f, a) | 0;\n a = Ad(f, e) | 0;\n } while ((a | 0) != 0);\n a = wd(f) | 0;\n } while ((a | 0) != 0); }\n vd(f);\n a = Fc(d) | 0;\n if (!a) {\n h = 0;\n T = g;\n return h | 0;\n }\n Ec(d);\n h = a;\n T = g;\n return h | 0;\n }\n function oa(a) {\n a = a | 0;\n if (a >>> 0 > 121) {\n a = 0;\n return a | 0;\n }\n a = b[7696 + (a * 28 | 0) + 16 >> 2] | 0;\n return a | 0;\n }\n function pa(a) {\n a = a | 0;\n return (a | 0) == 4 | (a | 0) == 117 | 0;\n }\n function qa(a) {\n a = a | 0;\n return b[11120 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) >> 2] | 0;\n }\n function ra(a) {\n a = a | 0;\n return b[11120 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) + 4 >> 2] | 0;\n }\n function sa(a, c) {\n a = a | 0;\n c = c | 0;\n a = 7696 + (a * 28 | 0) | 0;\n b[c >> 2] = b[a >> 2];\n b[c + 4 >> 2] = b[a + 4 >> 2];\n b[c + 8 >> 2] = b[a + 8 >> 2];\n b[c + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n function ta(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n if (c >>> 0 > 20) {\n c = -1;\n return c | 0;\n }\n do { if ((b[11120 + (c * 216 | 0) >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 8 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 16 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 24 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 32 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 40 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 48 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 56 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 64 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 72 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 80 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 88 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 96 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 104 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 112 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 120 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 128 >> 2] | 0) != (a | 0)) {\n if ((b[11120 + (c * 216 | 0) + 136 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 1;\n e = 2;\n } else {\n if ((b[11120 + (c * 216 | 0) + 144 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11120 + (c * 216 | 0) + 152 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11120 + (c * 216 | 0) + 160 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 2;\n break;\n }\n if ((b[11120 + (c * 216 | 0) + 168 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11120 + (c * 216 | 0) + 176 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11120 + (c * 216 | 0) + 184 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 2;\n break;\n }\n if ((b[11120 + (c * 216 | 0) + 192 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11120 + (c * 216 | 0) + 200 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11120 + (c * 216 | 0) + 208 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 2;\n break;\n } else { a = -1; }\n return a | 0;\n }\n } else {\n a = 2;\n d = 1;\n e = 1;\n }\n } else {\n a = 2;\n d = 1;\n e = 0;\n }\n } else {\n a = 1;\n d = 1;\n e = 2;\n }\n } else {\n a = 1;\n d = 1;\n e = 1;\n }\n } else {\n a = 1;\n d = 1;\n e = 0;\n }\n } else {\n a = 0;\n d = 1;\n e = 2;\n }\n } else {\n a = 0;\n d = 1;\n e = 1;\n }\n } else {\n a = 0;\n d = 1;\n e = 0;\n }\n } else {\n a = 2;\n d = 0;\n e = 2;\n }\n } else {\n a = 2;\n d = 0;\n e = 1;\n }\n } else {\n a = 2;\n d = 0;\n e = 0;\n }\n } else {\n a = 1;\n d = 0;\n e = 2;\n }\n } else {\n a = 1;\n d = 0;\n e = 1;\n }\n } else {\n a = 1;\n d = 0;\n e = 0;\n }\n } else {\n a = 0;\n d = 0;\n e = 2;\n }\n } else {\n a = 0;\n d = 0;\n e = 1;\n }\n } else {\n a = 0;\n d = 0;\n e = 0;\n } } while (0);\n c = b[11120 + (c * 216 | 0) + (d * 72 | 0) + (a * 24 | 0) + (e << 3) + 4 >> 2] | 0;\n return c | 0;\n }\n function ua(a, c) {\n a = a | 0;\n c = c | 0;\n if ((b[7696 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n c = (b[7696 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0);\n return c | 0;\n }\n function va(a, c) {\n a = a | 0;\n c = c | 0;\n return b[848 + (a * 28 | 0) + (c << 2) >> 2] | 0;\n }\n function wa(a, c) {\n a = a | 0;\n c = c | 0;\n if ((b[848 + (a * 28 | 0) >> 2] | 0) == (c | 0)) {\n c = 0;\n return c | 0;\n }\n if ((b[848 + (a * 28 | 0) + 4 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n if ((b[848 + (a * 28 | 0) + 8 >> 2] | 0) == (c | 0)) {\n c = 2;\n return c | 0;\n }\n if ((b[848 + (a * 28 | 0) + 12 >> 2] | 0) == (c | 0)) {\n c = 3;\n return c | 0;\n }\n if ((b[848 + (a * 28 | 0) + 16 >> 2] | 0) == (c | 0)) {\n c = 4;\n return c | 0;\n }\n if ((b[848 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 5;\n return c | 0;\n } else { return ((b[848 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0) ? 6 : 7) | 0; }\n return 0;\n }\n function xa() {\n return 122;\n }\n function ya(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n c = 0;\n do {\n Rd(c | 0, 0, 45) | 0;\n e = H() | 0 | 134225919;\n d = a + (c << 3) | 0;\n b[d >> 2] = -1;\n b[d + 4 >> 2] = e;\n c = c + 1 | 0;\n } while ((c | 0) != 122);\n return 0;\n }\n function za(a) {\n a = a | 0;\n var b = 0.0,\n c = 0.0,\n d = 0.0;\n d = +e[a + 16 >> 3];\n c = +e[a + 24 >> 3];\n b = d - c;\n return +(d < c ? b + 6.283185307179586 : b);\n }\n function Aa(a) {\n a = a | 0;\n return +e[a + 16 >> 3] < +e[a + 24 >> 3] | 0;\n }\n function Ba(a) {\n a = a | 0;\n return +(+e[a >> 3] - +e[a + 8 >> 3]);\n }\n function Ca(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n c = +e[b >> 3];\n if (!(c >= +e[a + 8 >> 3])) {\n b = 0;\n return b | 0;\n }\n if (!(c <= +e[a >> 3])) {\n b = 0;\n return b | 0;\n }\n d = +e[a + 16 >> 3];\n c = +e[a + 24 >> 3];\n f = +e[b + 8 >> 3];\n b = f >= c;\n a = f <= d & 1;\n if (d < c) {\n if (b) { a = 1; }\n } else if (!b) { a = 0; }\n b = (a | 0) != 0;\n return b | 0;\n }\n function Da(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n f = 0,\n g = 0.0,\n h = 0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n if (+e[a >> 3] < +e[b + 8 >> 3]) {\n d = 0;\n return d | 0;\n }\n if (+e[a + 8 >> 3] > +e[b >> 3]) {\n d = 0;\n return d | 0;\n }\n g = +e[a + 16 >> 3];\n c = a + 24 | 0;\n l = +e[c >> 3];\n h = g < l;\n d = b + 16 | 0;\n k = +e[d >> 3];\n f = b + 24 | 0;\n j = +e[f >> 3];\n i = k < j;\n b = l - k < j - g;\n a = h ? i | b ? 1 : 2 : 0;\n b = i ? h ? 1 : b ? 2 : 1 : 0;\n g = +kc(g, a);\n if (g < +kc(+e[f >> 3], b)) {\n i = 0;\n return i | 0;\n }\n l = +kc(+e[c >> 3], a);\n if (l > +kc(+e[d >> 3], b)) {\n i = 0;\n return i | 0;\n }\n i = 1;\n return i | 0;\n }\n function Ea(a, c, d, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0;\n h = +e[a + 16 >> 3];\n k = +e[a + 24 >> 3];\n a = h < k;\n j = +e[c + 16 >> 3];\n i = +e[c + 24 >> 3];\n g = j < i;\n c = k - j < i - h;\n b[d >> 2] = a ? g | c ? 1 : 2 : 0;\n b[f >> 2] = g ? a ? 1 : c ? 2 : 1 : 0;\n return;\n }\n function Fa(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n f = 0,\n g = 0.0,\n h = 0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n if (+e[a >> 3] < +e[b >> 3]) {\n d = 0;\n return d | 0;\n }\n if (+e[a + 8 >> 3] > +e[b + 8 >> 3]) {\n d = 0;\n return d | 0;\n }\n d = a + 16 | 0;\n j = +e[d >> 3];\n g = +e[a + 24 >> 3];\n h = j < g;\n c = b + 16 | 0;\n l = +e[c >> 3];\n f = b + 24 | 0;\n k = +e[f >> 3];\n i = l < k;\n b = g - l < k - j;\n a = h ? i | b ? 1 : 2 : 0;\n b = i ? h ? 1 : b ? 2 : 1 : 0;\n g = +kc(g, a);\n if (!(g <= +kc(+e[f >> 3], b))) {\n i = 0;\n return i | 0;\n }\n l = +kc(+e[d >> 3], a);\n i = l >= +kc(+e[c >> 3], b);\n return i | 0;\n }\n function Ga(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0;\n g = T;\n T = T + 176 | 0;\n f = g;\n b[f >> 2] = 4;\n j = +e[c >> 3];\n e[f + 8 >> 3] = j;\n h = +e[c + 16 >> 3];\n e[f + 16 >> 3] = h;\n e[f + 24 >> 3] = j;\n j = +e[c + 24 >> 3];\n e[f + 32 >> 3] = j;\n i = +e[c + 8 >> 3];\n e[f + 40 >> 3] = i;\n e[f + 48 >> 3] = j;\n e[f + 56 >> 3] = i;\n e[f + 64 >> 3] = h;\n c = f + 72 | 0;\n d = c + 96 | 0;\n do {\n b[c >> 2] = 0;\n c = c + 4 | 0;\n } while ((c | 0) < (d | 0));\n Wd(a | 0, f | 0, 168) | 0;\n T = g;\n return;\n }\n function Ha(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0.0,\n v = 0.0;\n t = T;\n T = T + 288 | 0;\n n = t + 264 | 0;\n o = t + 96 | 0;\n m = t;\n k = m;\n l = k + 96 | 0;\n do {\n b[k >> 2] = 0;\n k = k + 4 | 0;\n } while ((k | 0) < (l | 0));\n c = cc(c, m) | 0;\n if (c | 0) {\n s = c;\n T = t;\n return s | 0;\n }\n l = m;\n m = b[l >> 2] | 0;\n l = b[l + 4 >> 2] | 0;\n Zb(m, l, n) | 0;\n _b(m, l, o) | 0;\n j = +mc(n, o + 8 | 0);\n e[n >> 3] = +e[a >> 3];\n l = n + 8 | 0;\n e[l >> 3] = +e[a + 16 >> 3];\n e[o >> 3] = +e[a + 8 >> 3];\n m = o + 8 | 0;\n e[m >> 3] = +e[a + 24 >> 3];\n h = +mc(n, o);\n v = +e[l >> 3] - +e[m >> 3];\n i = +q(+v);\n u = +e[n >> 3] - +e[o >> 3];\n g = +q(+u);\n if (!(v == 0.0 | u == 0.0) ? (v = +Td(+i, +g), v = +A(+(h * h / +Ud(+(v / +Ud(+i, +g)), 3.0) / (j * (j * 2.59807621135) * .8))), e[f >> 3] = v, r = ~~v >>> 0, s = +q(v) >= 1.0 ? v > 0.0 ? ~~+C(+p(v / 4294967296.0), 4294967295.0) >>> 0 : ~~+A((v - +(~~v >>> 0)) / 4294967296.0) >>> 0 : 0, !((b[f + 4 >> 2] & 2146435072 | 0) == 2146435072)) : 0) {\n o = (r | 0) == 0 & (s | 0) == 0;\n c = d;\n b[c >> 2] = o ? 1 : r;\n b[c + 4 >> 2] = o ? 0 : s;\n c = 0;\n } else { c = 1; }\n s = c;\n T = t;\n return s | 0;\n }\n function Ia(a, c, d, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0.0;\n m = T;\n T = T + 288 | 0;\n j = m + 264 | 0;\n k = m + 96 | 0;\n l = m;\n h = l;\n i = h + 96 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (i | 0));\n d = cc(d, l) | 0;\n if (d | 0) {\n g = d;\n T = m;\n return g | 0;\n }\n d = l;\n h = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n Zb(h, d, j) | 0;\n _b(h, d, k) | 0;\n n = +mc(j, k + 8 | 0);\n n = +A(+(+mc(a, c) / (n * 2.0)));\n e[f >> 3] = n;\n d = ~~n >>> 0;\n h = +q(n) >= 1.0 ? n > 0.0 ? ~~+C(+p(n / 4294967296.0), 4294967295.0) >>> 0 : ~~+A((n - +(~~n >>> 0)) / 4294967296.0) >>> 0 : 0;\n if ((b[f + 4 >> 2] & 2146435072 | 0) == 2146435072) {\n g = 1;\n T = m;\n return g | 0;\n }\n l = (d | 0) == 0 & (h | 0) == 0;\n b[g >> 2] = l ? 1 : d;\n b[g + 4 >> 2] = l ? 0 : h;\n g = 0;\n T = m;\n return g | 0;\n }\n function Ja(a, b) {\n a = a | 0;\n b = +b;\n var c = 0,\n d = 0.0,\n f = 0.0,\n g = 0,\n h = 0.0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n g = a + 16 | 0;\n h = +e[g >> 3];\n c = a + 24 | 0;\n f = +e[c >> 3];\n d = h - f;\n d = h < f ? d + 6.283185307179586 : d;\n k = +e[a >> 3];\n i = a + 8 | 0;\n j = +e[i >> 3];\n l = k - j;\n d = (d * b - d) * .5;\n b = (l * b - l) * .5;\n k = k + b;\n e[a >> 3] = k > 1.5707963267948966 ? 1.5707963267948966 : k;\n b = j - b;\n e[i >> 3] = b < -1.5707963267948966 ? -1.5707963267948966 : b;\n b = h + d;\n b = b > 3.141592653589793 ? b + -6.283185307179586 : b;\n e[g >> 3] = b < -3.141592653589793 ? b + 6.283185307179586 : b;\n b = f - d;\n b = b > 3.141592653589793 ? b + -6.283185307179586 : b;\n e[c >> 3] = b < -3.141592653589793 ? b + 6.283185307179586 : b;\n return;\n }\n function Ka(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n b[a >> 2] = c;\n b[a + 4 >> 2] = d;\n b[a + 8 >> 2] = e;\n return;\n }\n function La(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0,\n n = 0,\n o = 0.0;\n n = c + 8 | 0;\n b[n >> 2] = 0;\n k = +e[a >> 3];\n i = +q(+k);\n l = +e[a + 8 >> 3];\n j = +q(+l) * 1.1547005383792515;\n i = i + j * .5;\n d = ~~i;\n a = ~~j;\n i = i - +(d | 0);\n j = j - +(a | 0);\n do { if (i < .5) {\n if (i < .3333333333333333) {\n b[c >> 2] = d;\n if (j < (i + 1.0) * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n } else {\n o = 1.0 - i;\n a = (!(j < o) & 1) + a | 0;\n b[c + 4 >> 2] = a;\n if (o <= j & j < i * 2.0) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n break;\n } else {\n b[c >> 2] = d;\n break;\n }\n }\n } else {\n if (!(i < .6666666666666666)) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n if (j < i * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n }\n if (j < 1.0 - i) {\n b[c + 4 >> 2] = a;\n if (i * 2.0 + -1.0 < j) {\n b[c >> 2] = d;\n break;\n }\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n }\n d = d + 1 | 0;\n b[c >> 2] = d;\n } } while (0);\n do { if (k < 0.0) { if (!(a & 1)) {\n m = (a | 0) / 2 | 0;\n m = Hd(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - (+(m >>> 0) + 4294967296.0 * +(H() | 0)) * 2.0);\n b[c >> 2] = d;\n break;\n } else {\n m = (a + 1 | 0) / 2 | 0;\n m = Hd(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - ((+(m >>> 0) + 4294967296.0 * +(H() | 0)) * 2.0 + 1.0));\n b[c >> 2] = d;\n break;\n } } } while (0);\n m = c + 4 | 0;\n if (l < 0.0) {\n d = d - ((a << 1 | 1 | 0) / 2 | 0) | 0;\n b[c >> 2] = d;\n a = 0 - a | 0;\n b[m >> 2] = a;\n }\n f = a - d | 0;\n if ((d | 0) < 0) {\n g = 0 - d | 0;\n b[m >> 2] = f;\n b[n >> 2] = g;\n b[c >> 2] = 0;\n a = f;\n d = 0;\n } else { g = 0; }\n if ((a | 0) < 0) {\n d = d - a | 0;\n b[c >> 2] = d;\n g = g - a | 0;\n b[n >> 2] = g;\n b[m >> 2] = 0;\n a = 0;\n }\n h = d - g | 0;\n f = a - g | 0;\n if ((g | 0) < 0) {\n b[c >> 2] = h;\n b[m >> 2] = f;\n b[n >> 2] = 0;\n a = f;\n d = h;\n g = 0;\n }\n f = (a | 0) < (d | 0) ? a : d;\n f = (g | 0) < (f | 0) ? g : f;\n if ((f | 0) <= 0) { return; }\n b[c >> 2] = d - f;\n b[m >> 2] = a - f;\n b[n >> 2] = g - f;\n return;\n }\n function Ma(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n if ((c | 0) < 0) {\n d = d - c | 0;\n b[h >> 2] = d;\n g = a + 8 | 0;\n b[g >> 2] = (b[g >> 2] | 0) - c;\n b[a >> 2] = 0;\n c = 0;\n }\n if ((d | 0) < 0) {\n c = c - d | 0;\n b[a >> 2] = c;\n g = a + 8 | 0;\n f = (b[g >> 2] | 0) - d | 0;\n b[g >> 2] = f;\n b[h >> 2] = 0;\n d = 0;\n } else {\n f = a + 8 | 0;\n g = f;\n f = b[f >> 2] | 0;\n }\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[a >> 2] = c;\n d = d - f | 0;\n b[h >> 2] = d;\n b[g >> 2] = 0;\n f = 0;\n }\n e = (d | 0) < (c | 0) ? d : c;\n e = (f | 0) < (e | 0) ? f : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = c - e;\n b[h >> 2] = d - e;\n b[g >> 2] = f - e;\n return;\n }\n function Na(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0;\n f = b[a + 8 >> 2] | 0;\n d = +((b[a + 4 >> 2] | 0) - f | 0);\n e[c >> 3] = +((b[a >> 2] | 0) - f | 0) - d * .5;\n e[c + 8 >> 3] = d * .8660254037844386;\n return;\n }\n function Oa(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[c >> 2] | 0) + (b[a >> 2] | 0);\n b[d + 4 >> 2] = (b[c + 4 >> 2] | 0) + (b[a + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[c + 8 >> 2] | 0) + (b[a + 8 >> 2] | 0);\n return;\n }\n function Pa(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[a >> 2] | 0) - (b[c >> 2] | 0);\n b[d + 4 >> 2] = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0);\n return;\n }\n function Qa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = d;\n d = a + 4 | 0;\n e = B(b[d >> 2] | 0, c) | 0;\n b[d >> 2] = e;\n a = a + 8 | 0;\n c = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = c;\n return;\n }\n function Ra(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = b[a >> 2] | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (g ? 0 - e | 0 : 0) + ((b[a + 8 >> 2] | 0) - (i ? h : 0)) | 0;\n d = (f | 0) < 0;\n a = d ? 0 : f;\n c = (g ? 0 : e) - (d ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (d ? f : 0) | 0;\n d = (c | 0) < (f | 0) ? c : f;\n d = (a | 0) < (d | 0) ? a : d;\n e = (d | 0) > 0;\n a = a - (e ? d : 0) | 0;\n c = c - (e ? d : 0) | 0;\n a: do { switch (f - (e ? d : 0) | 0) {\n case 0:\n switch (c | 0) {\n case 0:\n {\n i = (a | 0) == 0 ? 0 : (a | 0) == 1 ? 1 : 7;\n return i | 0;\n }\n case 1:\n {\n i = (a | 0) == 0 ? 2 : (a | 0) == 1 ? 3 : 7;\n return i | 0;\n }\n default:\n break a;\n }\n case 1:\n switch (c | 0) {\n case 0:\n {\n i = (a | 0) == 0 ? 4 : (a | 0) == 1 ? 5 : 7;\n return i | 0;\n }\n case 1:\n {\n if (!a) { a = 6; }else { break a; }\n return a | 0;\n }\n default:\n break a;\n }\n default:\n\n } } while (0);\n i = 7;\n return i | 0;\n }\n function Sa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n j = a + 8 | 0;\n h = b[j >> 2] | 0;\n i = (b[a >> 2] | 0) - h | 0;\n k = a + 4 | 0;\n h = (b[k >> 2] | 0) - h | 0;\n if (i >>> 0 > 715827881 | h >>> 0 > 715827881) {\n e = (i | 0) > 0;\n f = 2147483647 - i | 0;\n g = -2147483648 - i | 0;\n if (e ? (f | 0) < (i | 0) : (g | 0) > (i | 0)) {\n k = 1;\n return k | 0;\n }\n d = i << 1;\n if (e ? (2147483647 - d | 0) < (i | 0) : (-2147483648 - d | 0) > (i | 0)) {\n k = 1;\n return k | 0;\n }\n if ((h | 0) > 0 ? (2147483647 - h | 0) < (h | 0) : (-2147483648 - h | 0) > (h | 0)) {\n k = 1;\n return k | 0;\n }\n c = i * 3 | 0;\n d = h << 1;\n if ((e ? (f | 0) < (d | 0) : (g | 0) > (d | 0)) ? 1 : (i | 0) > -1 ? (c | -2147483648 | 0) >= (h | 0) : (c ^ -2147483648 | 0) < (h | 0)) {\n k = 1;\n return k | 0;\n }\n } else {\n d = h << 1;\n c = i * 3 | 0;\n }\n e = Cd(+(c - h | 0) * .14285714285714285) | 0;\n b[a >> 2] = e;\n f = Cd(+(d + i | 0) * .14285714285714285) | 0;\n b[k >> 2] = f;\n b[j >> 2] = 0;\n d = (f | 0) < (e | 0);\n c = d ? e : f;\n d = d ? f : e;\n if ((d | 0) < 0) {\n if ((d | 0) == -2147483648 ? 1 : (c | 0) > 0 ? (2147483647 - c | 0) < (d | 0) : (-2147483648 - c | 0) > (d | 0)) { I(27795, 26892, 354, 26903); }\n if ((c | 0) > -1 ? (c | -2147483648 | 0) >= (d | 0) : (c ^ -2147483648 | 0) < (d | 0)) { I(27795, 26892, 354, 26903); }\n }\n c = f - e | 0;\n if ((e | 0) < 0) {\n d = 0 - e | 0;\n b[k >> 2] = c;\n b[j >> 2] = d;\n b[a >> 2] = 0;\n e = 0;\n } else {\n c = f;\n d = 0;\n }\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[j >> 2] = d;\n b[k >> 2] = 0;\n c = 0;\n }\n g = e - d | 0;\n f = c - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[k >> 2] = f;\n b[j >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else { f = e; }\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) {\n k = 0;\n return k | 0;\n }\n b[a >> 2] = f - e;\n b[k >> 2] = c - e;\n b[j >> 2] = d - e;\n k = 0;\n return k | 0;\n }\n function Ta(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n h = a + 8 | 0;\n f = b[h >> 2] | 0;\n g = (b[a >> 2] | 0) - f | 0;\n i = a + 4 | 0;\n f = (b[i >> 2] | 0) - f | 0;\n if (g >>> 0 > 715827881 | f >>> 0 > 715827881) {\n d = (g | 0) > 0;\n if (d ? (2147483647 - g | 0) < (g | 0) : (-2147483648 - g | 0) > (g | 0)) {\n i = 1;\n return i | 0;\n }\n c = g << 1;\n e = (f | 0) > 0;\n if (e ? (2147483647 - f | 0) < (f | 0) : (-2147483648 - f | 0) > (f | 0)) {\n i = 1;\n return i | 0;\n }\n j = f << 1;\n if (e ? (2147483647 - j | 0) < (f | 0) : (-2147483648 - j | 0) > (f | 0)) {\n j = 1;\n return j | 0;\n }\n if (d ? (2147483647 - c | 0) < (f | 0) : (-2147483648 - c | 0) > (f | 0)) {\n j = 1;\n return j | 0;\n }\n d = f * 3 | 0;\n if ((f | 0) > -1 ? (d | -2147483648 | 0) >= (g | 0) : (d ^ -2147483648 | 0) < (g | 0)) {\n j = 1;\n return j | 0;\n }\n } else {\n d = f * 3 | 0;\n c = g << 1;\n }\n e = Cd(+(c + f | 0) * .14285714285714285) | 0;\n b[a >> 2] = e;\n f = Cd(+(d - g | 0) * .14285714285714285) | 0;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n d = (f | 0) < (e | 0);\n c = d ? e : f;\n d = d ? f : e;\n if ((d | 0) < 0) {\n if ((d | 0) == -2147483648 ? 1 : (c | 0) > 0 ? (2147483647 - c | 0) < (d | 0) : (-2147483648 - c | 0) > (d | 0)) { I(27795, 26892, 402, 26917); }\n if ((c | 0) > -1 ? (c | -2147483648 | 0) >= (d | 0) : (c ^ -2147483648 | 0) < (d | 0)) { I(27795, 26892, 402, 26917); }\n }\n c = f - e | 0;\n if ((e | 0) < 0) {\n d = 0 - e | 0;\n b[i >> 2] = c;\n b[h >> 2] = d;\n b[a >> 2] = 0;\n e = 0;\n } else {\n c = f;\n d = 0;\n }\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n g = e - d | 0;\n f = c - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else { f = e; }\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) {\n j = 0;\n return j | 0;\n }\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n j = 0;\n return j | 0;\n }\n function Ua(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Cd(+((c * 3 | 0) - d | 0) * .14285714285714285) | 0;\n b[a >> 2] = e;\n c = Cd(+((d << 1) + c | 0) * .14285714285714285) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else { d = 0; }\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n g = e - d | 0;\n f = c - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else { f = e; }\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n function Va(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Cd(+((c << 1) + d | 0) * .14285714285714285) | 0;\n b[a >> 2] = e;\n c = Cd(+((d * 3 | 0) - c | 0) * .14285714285714285) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else { d = 0; }\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n g = e - d | 0;\n f = c - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else { f = e; }\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n function Wa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c * 3 | 0) | 0;\n b[a >> 2] = f;\n d = e + (d * 3 | 0) | 0;\n b[h >> 2] = d;\n c = (e * 3 | 0) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else { e = f; }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function Xa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c * 3 | 0) + f | 0;\n f = d + (f * 3 | 0) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d * 3 | 0) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else { d = e; }\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = f - c | 0;\n e = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else { e = d; }\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n function Ya(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n if ((c + -1 | 0) >>> 0 >= 6) { return; }\n f = (b[15440 + (c * 12 | 0) >> 2] | 0) + (b[a >> 2] | 0) | 0;\n b[a >> 2] = f;\n i = a + 4 | 0;\n e = (b[15440 + (c * 12 | 0) + 4 >> 2] | 0) + (b[i >> 2] | 0) | 0;\n b[i >> 2] = e;\n h = a + 8 | 0;\n c = (b[15440 + (c * 12 | 0) + 8 >> 2] | 0) + (b[h >> 2] | 0) | 0;\n b[h >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[i >> 2] = d;\n b[h >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[h >> 2] = c;\n b[i >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[i >> 2] = f - d;\n b[h >> 2] = c - d;\n return;\n }\n function Za(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = c + f | 0;\n f = d + f | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function _a(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n e = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n f = e + c | 0;\n b[a >> 2] = f;\n e = d + e | 0;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function $a(a) {\n a = a | 0;\n switch (a | 0) {\n case 1:\n {\n a = 5;\n break;\n }\n case 5:\n {\n a = 4;\n break;\n }\n case 4:\n {\n a = 6;\n break;\n }\n case 6:\n {\n a = 2;\n break;\n }\n case 2:\n {\n a = 3;\n break;\n }\n case 3:\n {\n a = 1;\n break;\n }\n default:\n\n }\n return a | 0;\n }\n function ab(a) {\n a = a | 0;\n switch (a | 0) {\n case 1:\n {\n a = 3;\n break;\n }\n case 3:\n {\n a = 2;\n break;\n }\n case 2:\n {\n a = 6;\n break;\n }\n case 6:\n {\n a = 4;\n break;\n }\n case 4:\n {\n a = 5;\n break;\n }\n case 5:\n {\n a = 1;\n break;\n }\n default:\n\n }\n return a | 0;\n }\n function bb(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c << 1) | 0;\n b[a >> 2] = f;\n d = e + (d << 1) | 0;\n b[h >> 2] = d;\n c = (e << 1) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else { e = f; }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function cb(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c << 1) + f | 0;\n f = d + (f << 1) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d << 1) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else { d = e; }\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = f - c | 0;\n e = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else { e = d; }\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n function db(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = (b[a >> 2] | 0) - (b[c >> 2] | 0) | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (i ? 0 - h | 0 : 0) + (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0) + (g ? 0 - e | 0 : 0) | 0;\n a = (f | 0) < 0;\n c = a ? 0 : f;\n d = (g ? 0 : e) - (a ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (a ? f : 0) | 0;\n a = (d | 0) < (f | 0) ? d : f;\n a = (c | 0) < (a | 0) ? c : a;\n e = (a | 0) > 0;\n c = c - (e ? a : 0) | 0;\n d = d - (e ? a : 0) | 0;\n a = f - (e ? a : 0) | 0;\n a = (a | 0) > -1 ? a : 0 - a | 0;\n d = (d | 0) > -1 ? d : 0 - d | 0;\n c = (c | 0) > -1 ? c : 0 - c | 0;\n c = (d | 0) > (c | 0) ? d : c;\n return ((a | 0) > (c | 0) ? a : c) | 0;\n }\n function eb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = b[a + 8 >> 2] | 0;\n b[c >> 2] = (b[a >> 2] | 0) - d;\n b[c + 4 >> 2] = (b[a + 4 >> 2] | 0) - d;\n return;\n }\n function fb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n e = b[a >> 2] | 0;\n b[c >> 2] = e;\n f = b[a + 4 >> 2] | 0;\n h = c + 4 | 0;\n b[h >> 2] = f;\n i = c + 8 | 0;\n b[i >> 2] = 0;\n d = (f | 0) < (e | 0);\n a = d ? e : f;\n d = d ? f : e;\n if ((d | 0) < 0) {\n if ((d | 0) == -2147483648 ? 1 : (a | 0) > 0 ? (2147483647 - a | 0) < (d | 0) : (-2147483648 - a | 0) > (d | 0)) {\n c = 1;\n return c | 0;\n }\n if ((a | 0) > -1 ? (a | -2147483648 | 0) >= (d | 0) : (a ^ -2147483648 | 0) < (d | 0)) {\n c = 1;\n return c | 0;\n }\n }\n a = f - e | 0;\n if ((e | 0) < 0) {\n d = 0 - e | 0;\n b[h >> 2] = a;\n b[i >> 2] = d;\n b[c >> 2] = 0;\n e = 0;\n } else {\n a = f;\n d = 0;\n }\n if ((a | 0) < 0) {\n e = e - a | 0;\n b[c >> 2] = e;\n d = d - a | 0;\n b[i >> 2] = d;\n b[h >> 2] = 0;\n a = 0;\n }\n g = e - d | 0;\n f = a - d | 0;\n if ((d | 0) < 0) {\n b[c >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n a = f;\n f = g;\n d = 0;\n } else { f = e; }\n e = (a | 0) < (f | 0) ? a : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) {\n c = 0;\n return c | 0;\n }\n b[c >> 2] = f - e;\n b[h >> 2] = a - e;\n b[i >> 2] = d - e;\n c = 0;\n return c | 0;\n }\n function gb(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0;\n c = a + 8 | 0;\n f = b[c >> 2] | 0;\n d = f - (b[a >> 2] | 0) | 0;\n b[a >> 2] = d;\n e = a + 4 | 0;\n a = (b[e >> 2] | 0) - f | 0;\n b[e >> 2] = a;\n b[c >> 2] = 0 - (a + d);\n return;\n }\n function hb(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n d = b[a >> 2] | 0;\n c = 0 - d | 0;\n b[a >> 2] = c;\n h = a + 8 | 0;\n b[h >> 2] = 0;\n i = a + 4 | 0;\n e = b[i >> 2] | 0;\n f = e + d | 0;\n if ((d | 0) > 0) {\n b[i >> 2] = f;\n b[h >> 2] = d;\n b[a >> 2] = 0;\n c = 0;\n e = f;\n } else { d = 0; }\n if ((e | 0) < 0) {\n g = c - e | 0;\n b[a >> 2] = g;\n d = d - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n f = g - d | 0;\n c = 0 - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = f;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n e = c;\n d = 0;\n } else {\n e = 0;\n f = g;\n }\n } else { f = c; }\n c = (e | 0) < (f | 0) ? e : f;\n c = (d | 0) < (c | 0) ? d : c;\n if ((c | 0) <= 0) { return; }\n b[a >> 2] = f - c;\n b[i >> 2] = e - c;\n b[h >> 2] = d - c;\n return;\n }\n function ib(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0;\n m = T;\n T = T + 64 | 0;\n l = m;\n i = m + 56 | 0;\n if (!(0 == 0 & (c & 2013265920 | 0) == 134217728 & (0 == 0 & (e & 2013265920 | 0) == 134217728))) {\n f = 5;\n T = m;\n return f | 0;\n }\n if ((a | 0) == (d | 0) & (c | 0) == (e | 0)) {\n b[f >> 2] = 0;\n f = 0;\n T = m;\n return f | 0;\n }\n h = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n h = h & 15;\n k = Qd(d | 0, e | 0, 52) | 0;\n H() | 0;\n if ((h | 0) != (k & 15 | 0)) {\n f = 12;\n T = m;\n return f | 0;\n }\n g = h + -1 | 0;\n if (h >>> 0 > 1) {\n Fb(a, c, g, l) | 0;\n Fb(d, e, g, i) | 0;\n k = l;\n j = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n a: do { if ((j | 0) == (b[i >> 2] | 0) ? (k | 0) == (b[i + 4 >> 2] | 0) : 0) {\n h = (h ^ 15) * 3 | 0;\n g = Qd(a | 0, c | 0, h | 0) | 0;\n H() | 0;\n g = g & 7;\n h = Qd(d | 0, e | 0, h | 0) | 0;\n H() | 0;\n h = h & 7;\n do { if (!((g | 0) == 0 | (h | 0) == 0)) {\n if ((g | 0) == 7) { g = 5; }else {\n if ((g | 0) == 1 | (h | 0) == 1 ? Hb(j, k) | 0 : 0) {\n g = 5;\n break;\n }\n if ((b[15536 + (g << 2) >> 2] | 0) != (h | 0) ? (b[15568 + (g << 2) >> 2] | 0) != (h | 0) : 0) { break a; }\n b[f >> 2] = 1;\n g = 0;\n }\n } else {\n b[f >> 2] = 1;\n g = 0;\n } } while (0);\n f = g;\n T = m;\n return f | 0;\n } } while (0);\n }\n g = l;\n h = g + 56 | 0;\n do {\n b[g >> 2] = 0;\n g = g + 4 | 0;\n } while ((g | 0) < (h | 0));\n aa(a, c, 1, l) | 0;\n c = l;\n if (((((!((b[c >> 2] | 0) == (d | 0) ? (b[c + 4 >> 2] | 0) == (e | 0) : 0) ? (c = l + 8 | 0, !((b[c >> 2] | 0) == (d | 0) ? (b[c + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (c = l + 16 | 0, !((b[c >> 2] | 0) == (d | 0) ? (b[c + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (c = l + 24 | 0, !((b[c >> 2] | 0) == (d | 0) ? (b[c + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (c = l + 32 | 0, !((b[c >> 2] | 0) == (d | 0) ? (b[c + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (c = l + 40 | 0, !((b[c >> 2] | 0) == (d | 0) ? (b[c + 4 >> 2] | 0) == (e | 0) : 0)) : 0) {\n g = l + 48 | 0;\n g = ((b[g >> 2] | 0) == (d | 0) ? (b[g + 4 >> 2] | 0) == (e | 0) : 0) & 1;\n } else { g = 1; }\n b[f >> 2] = g;\n f = 0;\n T = m;\n return f | 0;\n }\n function jb(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n d = ia(a, c, d, e) | 0;\n if ((d | 0) == 7) {\n f = 11;\n return f | 0;\n }\n e = Rd(d | 0, 0, 56) | 0;\n c = c & -2130706433 | (H() | 0) | 268435456;\n b[f >> 2] = a | e;\n b[f + 4 >> 2] = c;\n f = 0;\n return f | 0;\n }\n function kb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n if (!(0 == 0 & (c & 2013265920 | 0) == 268435456)) {\n d = 6;\n return d | 0;\n }\n b[d >> 2] = a;\n b[d + 4 >> 2] = c & -2130706433 | 134217728;\n d = 0;\n return d | 0;\n }\n function lb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n f = T;\n T = T + 16 | 0;\n e = f;\n b[e >> 2] = 0;\n if (!(0 == 0 & (c & 2013265920 | 0) == 268435456)) {\n e = 6;\n T = f;\n return e | 0;\n }\n g = Qd(a | 0, c | 0, 56) | 0;\n H() | 0;\n e = ea(a, c & -2130706433 | 134217728, g & 7, e, d) | 0;\n T = f;\n return e | 0;\n }\n function mb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n c = Qd(a | 0, b | 0, 56) | 0;\n H() | 0;\n switch (c & 7) {\n case 0:\n case 7:\n {\n c = 0;\n return c | 0;\n }\n default:\n\n }\n c = b & -2130706433 | 134217728;\n if (!(0 == 0 & (b & 2013265920 | 0) == 268435456)) {\n c = 0;\n return c | 0;\n }\n if (0 == 0 & (b & 117440512 | 0) == 16777216 & (Hb(a, c) | 0) != 0) {\n c = 0;\n return c | 0;\n }\n c = Db(a, c) | 0;\n return c | 0;\n }\n function nb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n f = T;\n T = T + 16 | 0;\n e = f;\n if (!(0 == 0 & (c & 2013265920 | 0) == 268435456)) {\n e = 6;\n T = f;\n return e | 0;\n }\n g = c & -2130706433 | 134217728;\n h = d;\n b[h >> 2] = a;\n b[h + 4 >> 2] = g;\n b[e >> 2] = 0;\n c = Qd(a | 0, c | 0, 56) | 0;\n H() | 0;\n e = ea(a, g, c & 7, e, d + 8 | 0) | 0;\n T = f;\n return e | 0;\n }\n function ob(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n f = (Hb(a, c) | 0) == 0;\n c = c & -2130706433;\n e = d;\n b[e >> 2] = f ? a : 0;\n b[e + 4 >> 2] = f ? c | 285212672 : 0;\n e = d + 8 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 301989888;\n e = d + 16 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 318767104;\n e = d + 24 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 335544320;\n e = d + 32 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 352321536;\n d = d + 40 | 0;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c | 369098752;\n return 0;\n }\n function pb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n h = T;\n T = T + 16 | 0;\n f = h;\n g = c & -2130706433 | 134217728;\n if (!(0 == 0 & (c & 2013265920 | 0) == 268435456)) {\n g = 6;\n T = h;\n return g | 0;\n }\n e = Qd(a | 0, c | 0, 56) | 0;\n H() | 0;\n e = od(a, g, e & 7) | 0;\n if ((e | 0) == -1) {\n b[d >> 2] = 0;\n g = 6;\n T = h;\n return g | 0;\n }\n if (Yb(a, g, f) | 0) { I(27795, 26932, 282, 26947); }\n c = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n c = c & 15;\n if (!(Hb(a, g) | 0)) { zb(f, c, e, 2, d); }else { vb(f, c, e, 2, d); }\n g = 0;\n T = h;\n return g | 0;\n }\n function qb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = T;\n T = T + 16 | 0;\n e = d;\n rb(a, b, c, e);\n La(e, c + 4 | 0);\n T = d;\n return;\n }\n function rb(a, c, d, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0,\n k = 0;\n j = T;\n T = T + 16 | 0;\n k = j;\n sb(a, d, k);\n h = +w(+(1.0 - +e[k >> 3] * .5));\n if (h < 1.0e-16) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[f + 8 >> 2] = 0;\n b[f + 12 >> 2] = 0;\n T = j;\n return;\n }\n k = b[d >> 2] | 0;\n g = +e[15920 + (k * 24 | 0) >> 3];\n g = +ic(g - +ic(+oc(15600 + (k << 4) | 0, a)));\n if (!(Vb(c) | 0)) { i = g; }else { i = +ic(g + -.3334731722518321); }\n g = +v(+h) * 2.618033988749896;\n if ((c | 0) > 0) {\n a = 0;\n do {\n g = g * 2.6457513110645907;\n a = a + 1 | 0;\n } while ((a | 0) != (c | 0));\n }\n h = +t(+i) * g;\n e[f >> 3] = h;\n i = +u(+i) * g;\n e[f + 8 >> 3] = i;\n T = j;\n return;\n }\n function sb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0,\n h = 0;\n h = T;\n T = T + 32 | 0;\n g = h;\n nd(a, g);\n b[c >> 2] = 0;\n e[d >> 3] = 5.0;\n f = +md(16400, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 0;\n e[d >> 3] = f;\n }\n f = +md(16424, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 1;\n e[d >> 3] = f;\n }\n f = +md(16448, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 2;\n e[d >> 3] = f;\n }\n f = +md(16472, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 3;\n e[d >> 3] = f;\n }\n f = +md(16496, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 4;\n e[d >> 3] = f;\n }\n f = +md(16520, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 5;\n e[d >> 3] = f;\n }\n f = +md(16544, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 6;\n e[d >> 3] = f;\n }\n f = +md(16568, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 7;\n e[d >> 3] = f;\n }\n f = +md(16592, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 8;\n e[d >> 3] = f;\n }\n f = +md(16616, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 9;\n e[d >> 3] = f;\n }\n f = +md(16640, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 10;\n e[d >> 3] = f;\n }\n f = +md(16664, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 11;\n e[d >> 3] = f;\n }\n f = +md(16688, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 12;\n e[d >> 3] = f;\n }\n f = +md(16712, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 13;\n e[d >> 3] = f;\n }\n f = +md(16736, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 14;\n e[d >> 3] = f;\n }\n f = +md(16760, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 15;\n e[d >> 3] = f;\n }\n f = +md(16784, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 16;\n e[d >> 3] = f;\n }\n f = +md(16808, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 17;\n e[d >> 3] = f;\n }\n f = +md(16832, g);\n if (f < +e[d >> 3]) {\n b[c >> 2] = 18;\n e[d >> 3] = f;\n }\n f = +md(16856, g);\n if (!(f < +e[d >> 3])) {\n T = h;\n return;\n }\n b[c >> 2] = 19;\n e[d >> 3] = f;\n T = h;\n return;\n }\n function tb(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0.0,\n i = 0.0,\n j = 0.0;\n h = +jd(a);\n if (h < 1.0e-16) {\n c = 15600 + (c << 4) | 0;\n b[g >> 2] = b[c >> 2];\n b[g + 4 >> 2] = b[c + 4 >> 2];\n b[g + 8 >> 2] = b[c + 8 >> 2];\n b[g + 12 >> 2] = b[c + 12 >> 2];\n return;\n }\n i = +z(+ +e[a + 8 >> 3], + +e[a >> 3]);\n if ((d | 0) > 0) {\n a = 0;\n do {\n h = h * .37796447300922725;\n a = a + 1 | 0;\n } while ((a | 0) != (d | 0));\n }\n j = h * .3333333333333333;\n if (!f) {\n h = +y(+(h * .381966011250105));\n if (Vb(d) | 0) { i = +ic(i + .3334731722518321); }\n } else {\n d = (Vb(d) | 0) == 0;\n h = +y(+((d ? j : j * .37796447300922725) * .381966011250105));\n }\n pc(15600 + (c << 4) | 0, +ic(+e[15920 + (c * 24 | 0) >> 3] - i), h, g);\n return;\n }\n function ub(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n e = T;\n T = T + 16 | 0;\n f = e;\n Na(a + 4 | 0, f);\n tb(f, b[a >> 2] | 0, c, 0, d);\n T = e;\n return;\n }\n function vb(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n H = 0.0,\n J = 0.0;\n G = T;\n T = T + 272 | 0;\n h = G + 256 | 0;\n u = G + 240 | 0;\n D = G;\n E = G + 224 | 0;\n F = G + 208 | 0;\n v = G + 176 | 0;\n w = G + 160 | 0;\n x = G + 192 | 0;\n y = G + 144 | 0;\n z = G + 128 | 0;\n A = G + 112 | 0;\n B = G + 96 | 0;\n C = G + 80 | 0;\n b[h >> 2] = c;\n b[u >> 2] = b[a >> 2];\n b[u + 4 >> 2] = b[a + 4 >> 2];\n b[u + 8 >> 2] = b[a + 8 >> 2];\n b[u + 12 >> 2] = b[a + 12 >> 2];\n wb(u, h, D);\n b[g >> 2] = 0;\n u = f + d + ((f | 0) == 5 & 1) | 0;\n if ((u | 0) <= (d | 0)) {\n T = G;\n return;\n }\n k = b[h >> 2] | 0;\n l = E + 4 | 0;\n m = v + 4 | 0;\n n = d + 5 | 0;\n o = 16880 + (k << 2) | 0;\n p = 16960 + (k << 2) | 0;\n q = z + 8 | 0;\n r = A + 8 | 0;\n s = B + 8 | 0;\n t = F + 4 | 0;\n j = d;\n a: while (1) {\n i = D + (((j | 0) % 5 | 0) << 4) | 0;\n b[F >> 2] = b[i >> 2];\n b[F + 4 >> 2] = b[i + 4 >> 2];\n b[F + 8 >> 2] = b[i + 8 >> 2];\n b[F + 12 >> 2] = b[i + 12 >> 2];\n do {} while ((xb(F, k, 0, 1) | 0) == 2);\n if ((j | 0) > (d | 0) & (Vb(c) | 0) != 0) {\n b[v >> 2] = b[F >> 2];\n b[v + 4 >> 2] = b[F + 4 >> 2];\n b[v + 8 >> 2] = b[F + 8 >> 2];\n b[v + 12 >> 2] = b[F + 12 >> 2];\n Na(l, w);\n f = b[v >> 2] | 0;\n h = b[17040 + (f * 80 | 0) + (b[E >> 2] << 2) >> 2] | 0;\n b[v >> 2] = b[18640 + (f * 80 | 0) + (h * 20 | 0) >> 2];\n i = b[18640 + (f * 80 | 0) + (h * 20 | 0) + 16 >> 2] | 0;\n if ((i | 0) > 0) {\n a = 0;\n do {\n Za(m);\n a = a + 1 | 0;\n } while ((a | 0) < (i | 0));\n }\n i = 18640 + (f * 80 | 0) + (h * 20 | 0) + 4 | 0;\n b[x >> 2] = b[i >> 2];\n b[x + 4 >> 2] = b[i + 4 >> 2];\n b[x + 8 >> 2] = b[i + 8 >> 2];\n Qa(x, (b[o >> 2] | 0) * 3 | 0);\n Oa(m, x, m);\n Ma(m);\n Na(m, y);\n H = +(b[p >> 2] | 0);\n e[z >> 3] = H * 3.0;\n e[q >> 3] = 0.0;\n J = H * -1.5;\n e[A >> 3] = J;\n e[r >> 3] = H * 2.598076211353316;\n e[B >> 3] = J;\n e[s >> 3] = H * -2.598076211353316;\n switch (b[17040 + ((b[v >> 2] | 0) * 80 | 0) + (b[F >> 2] << 2) >> 2] | 0) {\n case 1:\n {\n a = A;\n f = z;\n break;\n }\n case 3:\n {\n a = B;\n f = A;\n break;\n }\n case 2:\n {\n a = z;\n f = B;\n break;\n }\n default:\n {\n a = 12;\n break a;\n }\n }\n kd(w, y, f, a, C);\n tb(C, b[v >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n if ((j | 0) < (n | 0)) {\n Na(t, v);\n tb(v, b[F >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n b[E >> 2] = b[F >> 2];\n b[E + 4 >> 2] = b[F + 4 >> 2];\n b[E + 8 >> 2] = b[F + 8 >> 2];\n b[E + 12 >> 2] = b[F + 12 >> 2];\n j = j + 1 | 0;\n if ((j | 0) >= (u | 0)) {\n a = 3;\n break;\n }\n }\n if ((a | 0) == 3) {\n T = G;\n return;\n } else if ((a | 0) == 12) { I(26970, 27017, 572, 27027); }\n }\n function wb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = T;\n T = T + 128 | 0;\n e = j + 64 | 0;\n f = j;\n g = e;\n h = 20240;\n i = g + 60 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n g = f;\n h = 20304;\n i = g + 60 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n i = (Vb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n bb(f);\n cb(f);\n if (Vb(b[c >> 2] | 0) | 0) {\n Xa(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Oa(f, e, c);\n Ma(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Oa(f, e + 12 | 0, c);\n Ma(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Oa(f, e + 24 | 0, c);\n Ma(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Oa(f, e + 36 | 0, c);\n Ma(c);\n b[d + 64 >> 2] = b[a >> 2];\n d = d + 68 | 0;\n Oa(f, e + 48 | 0, d);\n Ma(d);\n T = j;\n return;\n }\n function xb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;\n p = T;\n T = T + 32 | 0;\n n = p + 12 | 0;\n i = p;\n o = a + 4 | 0;\n m = b[16960 + (c << 2) >> 2] | 0;\n l = (e | 0) != 0;\n m = l ? m * 3 | 0 : m;\n f = b[o >> 2] | 0;\n k = a + 8 | 0;\n h = b[k >> 2] | 0;\n if (l) {\n g = a + 12 | 0;\n e = b[g >> 2] | 0;\n f = h + f + e | 0;\n if ((f | 0) == (m | 0)) {\n o = 1;\n T = p;\n return o | 0;\n } else { j = g; }\n } else {\n j = a + 12 | 0;\n e = b[j >> 2] | 0;\n f = h + f + e | 0;\n }\n if ((f | 0) <= (m | 0)) {\n o = 0;\n T = p;\n return o | 0;\n }\n do { if ((e | 0) > 0) {\n e = b[a >> 2] | 0;\n if ((h | 0) > 0) {\n g = 18640 + (e * 80 | 0) + 60 | 0;\n e = a;\n break;\n }\n e = 18640 + (e * 80 | 0) + 40 | 0;\n if (!d) {\n g = e;\n e = a;\n } else {\n Ka(n, m, 0, 0);\n Pa(o, n, i);\n _a(i);\n Oa(i, n, o);\n g = e;\n e = a;\n }\n } else {\n g = 18640 + ((b[a >> 2] | 0) * 80 | 0) + 20 | 0;\n e = a;\n } } while (0);\n b[e >> 2] = b[g >> 2];\n f = g + 16 | 0;\n if ((b[f >> 2] | 0) > 0) {\n e = 0;\n do {\n Za(o);\n e = e + 1 | 0;\n } while ((e | 0) < (b[f >> 2] | 0));\n }\n a = g + 4 | 0;\n b[n >> 2] = b[a >> 2];\n b[n + 4 >> 2] = b[a + 4 >> 2];\n b[n + 8 >> 2] = b[a + 8 >> 2];\n c = b[16880 + (c << 2) >> 2] | 0;\n Qa(n, l ? c * 3 | 0 : c);\n Oa(o, n, o);\n Ma(o);\n if (l) { e = ((b[k >> 2] | 0) + (b[o >> 2] | 0) + (b[j >> 2] | 0) | 0) == (m | 0) ? 1 : 2; }else { e = 2; }\n o = e;\n T = p;\n return o | 0;\n }\n function yb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n do { c = xb(a, b, 0, 1) | 0; } while ((c | 0) == 2);\n return c | 0;\n }\n function zb(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0.0,\n D = 0.0;\n B = T;\n T = T + 240 | 0;\n h = B + 224 | 0;\n x = B + 208 | 0;\n y = B;\n z = B + 192 | 0;\n A = B + 176 | 0;\n s = B + 160 | 0;\n t = B + 144 | 0;\n u = B + 128 | 0;\n v = B + 112 | 0;\n w = B + 96 | 0;\n b[h >> 2] = c;\n b[x >> 2] = b[a >> 2];\n b[x + 4 >> 2] = b[a + 4 >> 2];\n b[x + 8 >> 2] = b[a + 8 >> 2];\n b[x + 12 >> 2] = b[a + 12 >> 2];\n Ab(x, h, y);\n b[g >> 2] = 0;\n r = f + d + ((f | 0) == 6 & 1) | 0;\n if ((r | 0) <= (d | 0)) {\n T = B;\n return;\n }\n k = b[h >> 2] | 0;\n l = d + 6 | 0;\n m = 16960 + (k << 2) | 0;\n n = t + 8 | 0;\n o = u + 8 | 0;\n p = v + 8 | 0;\n q = z + 4 | 0;\n i = 0;\n j = d;\n f = -1;\n a: while (1) {\n h = (j | 0) % 6 | 0;\n a = y + (h << 4) | 0;\n b[z >> 2] = b[a >> 2];\n b[z + 4 >> 2] = b[a + 4 >> 2];\n b[z + 8 >> 2] = b[a + 8 >> 2];\n b[z + 12 >> 2] = b[a + 12 >> 2];\n a = i;\n i = xb(z, k, 0, 1) | 0;\n if ((j | 0) > (d | 0) & (Vb(c) | 0) != 0 ? (a | 0) != 1 ? (b[z >> 2] | 0) != (f | 0) : 0 : 0) {\n Na(y + (((h + 5 | 0) % 6 | 0) << 4) + 4 | 0, A);\n Na(y + (h << 4) + 4 | 0, s);\n C = +(b[m >> 2] | 0);\n e[t >> 3] = C * 3.0;\n e[n >> 3] = 0.0;\n D = C * -1.5;\n e[u >> 3] = D;\n e[o >> 3] = C * 2.598076211353316;\n e[v >> 3] = D;\n e[p >> 3] = C * -2.598076211353316;\n h = b[x >> 2] | 0;\n switch (b[17040 + (h * 80 | 0) + (((f | 0) == (h | 0) ? b[z >> 2] | 0 : f) << 2) >> 2] | 0) {\n case 1:\n {\n a = u;\n f = t;\n break;\n }\n case 3:\n {\n a = v;\n f = u;\n break;\n }\n case 2:\n {\n a = t;\n f = v;\n break;\n }\n default:\n {\n a = 8;\n break a;\n }\n }\n kd(A, s, f, a, w);\n if (!(ld(A, w) | 0) ? !(ld(s, w) | 0) : 0) {\n tb(w, b[x >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n }\n if ((j | 0) < (l | 0)) {\n Na(q, A);\n tb(A, b[z >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n j = j + 1 | 0;\n if ((j | 0) >= (r | 0)) {\n a = 3;\n break;\n } else { f = b[z >> 2] | 0; }\n }\n if ((a | 0) == 3) {\n T = B;\n return;\n } else if ((a | 0) == 8) { I(27054, 27017, 737, 27099); }\n }\n function Ab(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = T;\n T = T + 160 | 0;\n e = j + 80 | 0;\n f = j;\n g = e;\n h = 20368;\n i = g + 72 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n g = f;\n h = 20448;\n i = g + 72 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n i = (Vb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n bb(f);\n cb(f);\n if (Vb(b[c >> 2] | 0) | 0) {\n Xa(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Oa(f, e, c);\n Ma(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Oa(f, e + 12 | 0, c);\n Ma(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Oa(f, e + 24 | 0, c);\n Ma(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Oa(f, e + 36 | 0, c);\n Ma(c);\n b[d + 64 >> 2] = b[a >> 2];\n c = d + 68 | 0;\n Oa(f, e + 48 | 0, c);\n Ma(c);\n b[d + 80 >> 2] = b[a >> 2];\n d = d + 84 | 0;\n Oa(f, e + 60 | 0, d);\n Ma(d);\n T = j;\n return;\n }\n function Bb(a, b) {\n a = a | 0;\n b = b | 0;\n b = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n return b & 15 | 0;\n }\n function Cb(a, b) {\n a = a | 0;\n b = b | 0;\n b = Qd(a | 0, b | 0, 45) | 0;\n H() | 0;\n return b & 127 | 0;\n }\n function Db(b, c) {\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n if (!(0 == 0 & (c & -16777216 | 0) == 134217728)) {\n b = 0;\n return b | 0;\n }\n e = Qd(b | 0, c | 0, 52) | 0;\n H() | 0;\n e = e & 15;\n d = Qd(b | 0, c | 0, 45) | 0;\n H() | 0;\n d = d & 127;\n if (d >>> 0 > 121) {\n b = 0;\n return b | 0;\n }\n h = (e ^ 15) * 3 | 0;\n f = Qd(b | 0, c | 0, h | 0) | 0;\n h = Rd(f | 0, H() | 0, h | 0) | 0;\n f = H() | 0;\n g = Hd(-1227133514, -1171, h | 0, f | 0) | 0;\n if (!((h & 613566756 & g | 0) == 0 & (f & 4681 & (H() | 0) | 0) == 0)) {\n h = 0;\n return h | 0;\n }\n h = (e * 3 | 0) + 19 | 0;\n g = Rd(~b | 0, ~c | 0, h | 0) | 0;\n h = Qd(g | 0, H() | 0, h | 0) | 0;\n if (!((e | 0) == 15 | (h | 0) == 0 & (H() | 0) == 0)) {\n h = 0;\n return h | 0;\n }\n if (!(a[20528 + d >> 0] | 0)) {\n h = 1;\n return h | 0;\n }\n c = c & 8191;\n if ((b | 0) == 0 & (c | 0) == 0) {\n h = 1;\n return h | 0;\n } else {\n h = Sd(b | 0, c | 0, 0) | 0;\n H() | 0;\n return ((63 - h | 0) % 3 | 0 | 0) != 0 | 0;\n }\n return 0;\n }\n function Eb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = Rd(c | 0, 0, 52) | 0;\n g = H() | 0;\n d = Rd(d | 0, 0, 45) | 0;\n d = g | (H() | 0) | 134225919;\n if ((c | 0) < 1) {\n g = -1;\n e = d;\n c = a;\n b[c >> 2] = g;\n a = a + 4 | 0;\n b[a >> 2] = e;\n return;\n }\n g = 1;\n f = -1;\n while (1) {\n h = (15 - g | 0) * 3 | 0;\n i = Rd(7, 0, h | 0) | 0;\n d = d & ~(H() | 0);\n h = Rd(e | 0, 0, h | 0) | 0;\n f = f & ~i | h;\n d = d | (H() | 0);\n if ((g | 0) == (c | 0)) { break; }else { g = g + 1 | 0; }\n }\n i = a;\n h = i;\n b[h >> 2] = f;\n i = i + 4 | 0;\n b[i >> 2] = d;\n return;\n }\n function Fb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0;\n g = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n g = g & 15;\n if (d >>> 0 > 15) {\n e = 4;\n return e | 0;\n }\n if ((g | 0) < (d | 0)) {\n e = 12;\n return e | 0;\n }\n if ((g | 0) == (d | 0)) {\n b[e >> 2] = a;\n b[e + 4 >> 2] = c;\n e = 0;\n return e | 0;\n }\n f = Rd(d | 0, 0, 52) | 0;\n f = f | a;\n a = H() | 0 | c & -15728641;\n if ((g | 0) > (d | 0)) { do {\n c = Rd(7, 0, (14 - d | 0) * 3 | 0) | 0;\n d = d + 1 | 0;\n f = c | f;\n a = H() | 0 | a;\n } while ((d | 0) < (g | 0)); }\n b[e >> 2] = f;\n b[e + 4 >> 2] = a;\n e = 0;\n return e | 0;\n }\n function Gb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0;\n g = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n g = g & 15;\n if (!((d | 0) < 16 & (g | 0) <= (d | 0))) {\n e = 4;\n return e | 0;\n }\n f = d - g | 0;\n d = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n a: do { if (!(oa(d & 127) | 0)) {\n d = Oc(7, 0, f, ((f | 0) < 0) << 31 >> 31) | 0;\n f = H() | 0;\n } else {\n b: do { if (g | 0) {\n d = 1;\n while (1) {\n h = Rd(7, 0, (15 - d | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((H() | 0) & c | 0) == 0)) { break; }\n if (d >>> 0 < g >>> 0) { d = d + 1 | 0; }else { break b; }\n }\n d = Oc(7, 0, f, ((f | 0) < 0) << 31 >> 31) | 0;\n f = H() | 0;\n break a;\n } } while (0);\n d = Oc(7, 0, f, ((f | 0) < 0) << 31 >> 31) | 0;\n d = Md(d | 0, H() | 0, 5, 0) | 0;\n d = Gd(d | 0, H() | 0, -5, -1) | 0;\n d = Kd(d | 0, H() | 0, 6, 0) | 0;\n d = Gd(d | 0, H() | 0, 1, 0) | 0;\n f = H() | 0;\n } } while (0);\n h = e;\n b[h >> 2] = d;\n b[h + 4 >> 2] = f;\n h = 0;\n return h | 0;\n }\n function Hb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = Qd(a | 0, b | 0, 45) | 0;\n H() | 0;\n if (!(oa(e & 127) | 0)) {\n e = 0;\n return e | 0;\n }\n e = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n e = e & 15;\n a: do { if (!e) { c = 0; }else {\n d = 1;\n while (1) {\n c = Qd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n H() | 0;\n c = c & 7;\n if (c | 0) { break a; }\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {\n c = 0;\n break;\n }\n }\n } } while (0);\n e = (c | 0) == 0 & 1;\n return e | 0;\n }\n function Ib(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = T;\n T = T + 16 | 0;\n g = h;\n fc(g, a, c, d);\n c = g;\n a = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n if ((a | 0) == 0 & (c | 0) == 0) {\n T = h;\n return 0;\n }\n f = 0;\n d = 0;\n do {\n i = e + (f << 3) | 0;\n b[i >> 2] = a;\n b[i + 4 >> 2] = c;\n f = Gd(f | 0, d | 0, 1, 0) | 0;\n d = H() | 0;\n hc(g);\n i = g;\n a = b[i >> 2] | 0;\n c = b[i + 4 >> 2] | 0;\n } while (!((a | 0) == 0 & (c | 0) == 0));\n T = h;\n return 0;\n }\n function Jb(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n if ((d | 0) < (c | 0)) {\n c = b;\n d = a;\n G(c | 0);\n return d | 0;\n }\n c = Rd(-1, -1, ((d - c | 0) * 3 | 0) + 3 | 0) | 0;\n d = Rd(~c | 0, ~(H() | 0) | 0, (15 - d | 0) * 3 | 0) | 0;\n c = ~(H() | 0) & b;\n d = ~d & a;\n G(c | 0);\n return d | 0;\n }\n function Kb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0;\n f = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n f = f & 15;\n if (!((d | 0) < 16 & (f | 0) <= (d | 0))) {\n e = 4;\n return e | 0;\n }\n if ((f | 0) < (d | 0)) {\n f = Rd(-1, -1, ((d + -1 - f | 0) * 3 | 0) + 3 | 0) | 0;\n f = Rd(~f | 0, ~(H() | 0) | 0, (15 - d | 0) * 3 | 0) | 0;\n c = ~(H() | 0) & c;\n a = ~f & a;\n }\n f = Rd(d | 0, 0, 52) | 0;\n d = c & -15728641 | (H() | 0);\n b[e >> 2] = a | f;\n b[e + 4 >> 2] = d;\n e = 0;\n return e | 0;\n }\n function Lb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0;\n if ((d | 0) == 0 & (e | 0) == 0) {\n E = 0;\n return E | 0;\n }\n f = a;\n g = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n if (0 == 0 & (f & 15728640 | 0) == 0) {\n if (!((e | 0) > 0 | (e | 0) == 0 & d >>> 0 > 0)) {\n E = 0;\n return E | 0;\n }\n E = c;\n b[E >> 2] = g;\n b[E + 4 >> 2] = f;\n if ((d | 0) == 1 & (e | 0) == 0) {\n E = 0;\n return E | 0;\n }\n f = 1;\n g = 0;\n do {\n C = a + (f << 3) | 0;\n D = b[C + 4 >> 2] | 0;\n E = c + (f << 3) | 0;\n b[E >> 2] = b[C >> 2];\n b[E + 4 >> 2] = D;\n f = Gd(f | 0, g | 0, 1, 0) | 0;\n g = H() | 0;\n } while ((g | 0) < (e | 0) | (g | 0) == (e | 0) & f >>> 0 < d >>> 0);\n f = 0;\n return f | 0;\n }\n B = d << 3;\n D = Dd(B) | 0;\n if (!D) {\n E = 13;\n return E | 0;\n }\n Wd(D | 0, a | 0, B | 0) | 0;\n C = Fd(d, 8) | 0;\n if (!C) {\n Ed(D);\n E = 13;\n return E | 0;\n }\n a: while (1) {\n f = D;\n k = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n z = Qd(k | 0, f | 0, 52) | 0;\n H() | 0;\n z = z & 15;\n A = z + -1 | 0;\n y = (z | 0) != 0;\n x = (e | 0) > 0 | (e | 0) == 0 & d >>> 0 > 0;\n b: do { if (y & x) {\n t = Rd(A | 0, 0, 52) | 0;\n u = H() | 0;\n if (A >>> 0 > 15) {\n if (!((k | 0) == 0 & (f | 0) == 0)) {\n E = 16;\n break a;\n }\n g = 0;\n a = 0;\n while (1) {\n g = Gd(g | 0, a | 0, 1, 0) | 0;\n a = H() | 0;\n if (!((a | 0) < (e | 0) | (a | 0) == (e | 0) & g >>> 0 < d >>> 0)) { break b; }\n h = D + (g << 3) | 0;\n w = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n if (!((w | 0) == 0 & (h | 0) == 0)) {\n f = h;\n E = 16;\n break a;\n }\n }\n }\n i = k;\n a = f;\n g = 0;\n h = 0;\n while (1) {\n if (!((i | 0) == 0 & (a | 0) == 0)) {\n if (!(0 == 0 & (a & 117440512 | 0) == 0)) {\n E = 21;\n break a;\n }\n l = Qd(i | 0, a | 0, 52) | 0;\n H() | 0;\n l = l & 15;\n if ((l | 0) < (A | 0)) {\n f = 12;\n E = 27;\n break a;\n }\n if ((l | 0) != (A | 0)) {\n i = i | t;\n a = a & -15728641 | u;\n if (l >>> 0 >= z >>> 0) {\n j = A;\n do {\n w = Rd(7, 0, (14 - j | 0) * 3 | 0) | 0;\n j = j + 1 | 0;\n i = w | i;\n a = H() | 0 | a;\n } while (j >>> 0 < l >>> 0);\n }\n }\n n = Od(i | 0, a | 0, d | 0, e | 0) | 0;\n o = H() | 0;\n j = C + (n << 3) | 0;\n l = j;\n m = b[l >> 2] | 0;\n l = b[l + 4 >> 2] | 0;\n if (!((m | 0) == 0 & (l | 0) == 0)) {\n r = 0;\n s = 0;\n do {\n if ((r | 0) > (e | 0) | (r | 0) == (e | 0) & s >>> 0 > d >>> 0) {\n E = 31;\n break a;\n }\n if ((m | 0) == (i | 0) & (l & -117440513 | 0) == (a | 0)) {\n p = Qd(m | 0, l | 0, 56) | 0;\n H() | 0;\n p = p & 7;\n q = p + 1 | 0;\n w = Qd(m | 0, l | 0, 45) | 0;\n H() | 0;\n c: do { if (!(oa(w & 127) | 0)) { l = 7; }else {\n m = Qd(m | 0, l | 0, 52) | 0;\n H() | 0;\n m = m & 15;\n if (!m) {\n l = 6;\n break;\n }\n l = 1;\n while (1) {\n w = Rd(7, 0, (15 - l | 0) * 3 | 0) | 0;\n if (!((w & i | 0) == 0 & ((H() | 0) & a | 0) == 0)) {\n l = 7;\n break c;\n }\n if (l >>> 0 < m >>> 0) { l = l + 1 | 0; }else {\n l = 6;\n break;\n }\n }\n } } while (0);\n if ((p + 2 | 0) >>> 0 > l >>> 0) {\n E = 41;\n break a;\n }\n w = Rd(q | 0, 0, 56) | 0;\n a = H() | 0 | a & -117440513;\n v = j;\n b[v >> 2] = 0;\n b[v + 4 >> 2] = 0;\n i = w | i;\n } else {\n n = Gd(n | 0, o | 0, 1, 0) | 0;\n n = Nd(n | 0, H() | 0, d | 0, e | 0) | 0;\n o = H() | 0;\n }\n s = Gd(s | 0, r | 0, 1, 0) | 0;\n r = H() | 0;\n j = C + (n << 3) | 0;\n l = j;\n m = b[l >> 2] | 0;\n l = b[l + 4 >> 2] | 0;\n } while (!((m | 0) == 0 & (l | 0) == 0));\n }\n w = j;\n b[w >> 2] = i;\n b[w + 4 >> 2] = a;\n }\n g = Gd(g | 0, h | 0, 1, 0) | 0;\n h = H() | 0;\n if (!((h | 0) < (e | 0) | (h | 0) == (e | 0) & g >>> 0 < d >>> 0)) { break b; }\n a = D + (g << 3) | 0;\n i = b[a >> 2] | 0;\n a = b[a + 4 >> 2] | 0;\n }\n } } while (0);\n w = Gd(d | 0, e | 0, 5, 0) | 0;\n v = H() | 0;\n if (v >>> 0 < 0 | (v | 0) == 0 & w >>> 0 < 11) {\n E = 85;\n break;\n }\n w = Kd(d | 0, e | 0, 6, 0) | 0;\n H() | 0;\n w = Fd(w, 8) | 0;\n if (!w) {\n E = 48;\n break;\n }\n do { if (x) {\n q = 0;\n a = 0;\n p = 0;\n r = 0;\n while (1) {\n l = C + (q << 3) | 0;\n h = l;\n g = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n if (!((g | 0) == 0 & (h | 0) == 0)) {\n m = Qd(g | 0, h | 0, 56) | 0;\n H() | 0;\n m = m & 7;\n i = m + 1 | 0;\n n = h & -117440513;\n v = Qd(g | 0, h | 0, 45) | 0;\n H() | 0;\n d: do { if (oa(v & 127) | 0) {\n o = Qd(g | 0, h | 0, 52) | 0;\n H() | 0;\n o = o & 15;\n if (o | 0) {\n j = 1;\n while (1) {\n v = Rd(7, 0, (15 - j | 0) * 3 | 0) | 0;\n if (!((g & v | 0) == 0 & (n & (H() | 0) | 0) == 0)) { break d; }\n if (j >>> 0 < o >>> 0) { j = j + 1 | 0; }else { break; }\n }\n }\n h = Rd(i | 0, 0, 56) | 0;\n g = h | g;\n h = H() | 0 | n;\n i = l;\n b[i >> 2] = g;\n b[i + 4 >> 2] = h;\n i = m + 2 | 0;\n } } while (0);\n if ((i | 0) == 7) {\n v = w + (a << 3) | 0;\n b[v >> 2] = g;\n b[v + 4 >> 2] = h & -117440513;\n a = Gd(a | 0, p | 0, 1, 0) | 0;\n v = H() | 0;\n } else { v = p; }\n } else { v = p; }\n q = Gd(q | 0, r | 0, 1, 0) | 0;\n r = H() | 0;\n if (!((r | 0) < (e | 0) | (r | 0) == (e | 0) & q >>> 0 < d >>> 0)) { break; }else { p = v; }\n }\n if (x) {\n s = A >>> 0 > 15;\n t = Rd(A | 0, 0, 52) | 0;\n u = H() | 0;\n if (!y) {\n g = 0;\n j = 0;\n i = 0;\n h = 0;\n while (1) {\n if (!((k | 0) == 0 & (f | 0) == 0)) {\n A = c + (g << 3) | 0;\n b[A >> 2] = k;\n b[A + 4 >> 2] = f;\n g = Gd(g | 0, j | 0, 1, 0) | 0;\n j = H() | 0;\n }\n i = Gd(i | 0, h | 0, 1, 0) | 0;\n h = H() | 0;\n if (!((h | 0) < (e | 0) | (h | 0) == (e | 0) & i >>> 0 < d >>> 0)) { break; }\n f = D + (i << 3) | 0;\n k = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n }\n f = v;\n break;\n }\n g = 0;\n j = 0;\n h = 0;\n i = 0;\n while (1) {\n do { if (!((k | 0) == 0 & (f | 0) == 0)) {\n o = Qd(k | 0, f | 0, 52) | 0;\n H() | 0;\n o = o & 15;\n if (s | (o | 0) < (A | 0)) {\n E = 80;\n break a;\n }\n if ((o | 0) != (A | 0)) {\n l = k | t;\n m = f & -15728641 | u;\n if (o >>> 0 >= z >>> 0) {\n n = A;\n do {\n y = Rd(7, 0, (14 - n | 0) * 3 | 0) | 0;\n n = n + 1 | 0;\n l = y | l;\n m = H() | 0 | m;\n } while (n >>> 0 < o >>> 0);\n }\n } else {\n l = k;\n m = f;\n }\n p = Od(l | 0, m | 0, d | 0, e | 0) | 0;\n n = 0;\n o = 0;\n r = H() | 0;\n do {\n if ((n | 0) > (e | 0) | (n | 0) == (e | 0) & o >>> 0 > d >>> 0) {\n E = 81;\n break a;\n }\n y = C + (p << 3) | 0;\n q = b[y + 4 >> 2] | 0;\n if ((q & -117440513 | 0) == (m | 0) ? (b[y >> 2] | 0) == (l | 0) : 0) {\n E = 65;\n break;\n }\n y = Gd(p | 0, r | 0, 1, 0) | 0;\n p = Nd(y | 0, H() | 0, d | 0, e | 0) | 0;\n r = H() | 0;\n o = Gd(o | 0, n | 0, 1, 0) | 0;\n n = H() | 0;\n y = C + (p << 3) | 0;\n } while (!((b[y >> 2] | 0) == (l | 0) ? (b[y + 4 >> 2] | 0) == (m | 0) : 0));\n if ((E | 0) == 65 ? (E = 0, 0 == 0 & (q & 117440512 | 0) == 100663296) : 0) { break; }\n y = c + (g << 3) | 0;\n b[y >> 2] = k;\n b[y + 4 >> 2] = f;\n g = Gd(g | 0, j | 0, 1, 0) | 0;\n j = H() | 0;\n } } while (0);\n h = Gd(h | 0, i | 0, 1, 0) | 0;\n i = H() | 0;\n if (!((i | 0) < (e | 0) | (i | 0) == (e | 0) & h >>> 0 < d >>> 0)) { break; }\n f = D + (h << 3) | 0;\n k = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n }\n f = v;\n } else {\n g = 0;\n f = v;\n }\n } else {\n g = 0;\n a = 0;\n f = 0;\n } } while (0);\n Xd(C | 0, 0, B | 0) | 0;\n Wd(D | 0, w | 0, a << 3 | 0) | 0;\n Ed(w);\n if ((a | 0) == 0 & (f | 0) == 0) {\n E = 89;\n break;\n } else {\n c = c + (g << 3) | 0;\n e = f;\n d = a;\n }\n }\n if ((E | 0) == 16) {\n if (0 == 0 & (f & 117440512 | 0) == 0) {\n f = 4;\n E = 27;\n } else { E = 21; }\n } else if ((E | 0) == 31) { I(27795, 27122, 529, 27132); }else if ((E | 0) == 41) {\n Ed(D);\n Ed(C);\n E = 10;\n return E | 0;\n } else if ((E | 0) == 48) {\n Ed(D);\n Ed(C);\n E = 13;\n return E | 0;\n } else if ((E | 0) == 80) { I(27795, 27122, 620, 27132); }else if ((E | 0) == 81) { I(27795, 27122, 632, 27132); }else if ((E | 0) == 85) {\n Wd(c | 0, D | 0, d << 3 | 0) | 0;\n E = 89;\n }\n if ((E | 0) == 21) {\n Ed(D);\n Ed(C);\n E = 5;\n return E | 0;\n } else if ((E | 0) == 27) {\n Ed(D);\n Ed(C);\n E = f;\n return E | 0;\n } else if ((E | 0) == 89) {\n Ed(D);\n Ed(C);\n E = 0;\n return E | 0;\n }\n return 0;\n }\n function Mb(a, c, d, e, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0;\n q = T;\n T = T + 16 | 0;\n p = q;\n if (!((d | 0) > 0 | (d | 0) == 0 & c >>> 0 > 0)) {\n p = 0;\n T = q;\n return p | 0;\n }\n if ((h | 0) >= 16) {\n p = 12;\n T = q;\n return p | 0;\n }\n n = 0;\n o = 0;\n m = 0;\n i = 0;\n a: while (1) {\n k = a + (n << 3) | 0;\n j = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n l = Qd(j | 0, k | 0, 52) | 0;\n H() | 0;\n if ((l & 15 | 0) > (h | 0)) {\n i = 12;\n j = 11;\n break;\n }\n fc(p, j, k, h);\n l = p;\n k = b[l >> 2] | 0;\n l = b[l + 4 >> 2] | 0;\n if ((k | 0) == 0 & (l | 0) == 0) { j = m; }else {\n j = m;\n do {\n if (!((i | 0) < (g | 0) | (i | 0) == (g | 0) & j >>> 0 < f >>> 0)) {\n j = 10;\n break a;\n }\n m = e + (j << 3) | 0;\n b[m >> 2] = k;\n b[m + 4 >> 2] = l;\n j = Gd(j | 0, i | 0, 1, 0) | 0;\n i = H() | 0;\n hc(p);\n m = p;\n k = b[m >> 2] | 0;\n l = b[m + 4 >> 2] | 0;\n } while (!((k | 0) == 0 & (l | 0) == 0));\n }\n n = Gd(n | 0, o | 0, 1, 0) | 0;\n o = H() | 0;\n if (!((o | 0) < (d | 0) | (o | 0) == (d | 0) & n >>> 0 < c >>> 0)) {\n i = 0;\n j = 11;\n break;\n } else { m = j; }\n }\n if ((j | 0) == 10) {\n p = 14;\n T = q;\n return p | 0;\n } else if ((j | 0) == 11) {\n T = q;\n return i | 0;\n }\n return 0;\n }\n function Nb(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0;\n n = T;\n T = T + 16 | 0;\n m = n;\n a: do { if ((d | 0) > 0 | (d | 0) == 0 & c >>> 0 > 0) {\n k = 0;\n h = 0;\n g = 0;\n l = 0;\n while (1) {\n j = a + (k << 3) | 0;\n i = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n if (!((i | 0) == 0 & (j | 0) == 0)) {\n j = (Gb(i, j, e, m) | 0) == 0;\n i = m;\n h = Gd(b[i >> 2] | 0, b[i + 4 >> 2] | 0, h | 0, g | 0) | 0;\n g = H() | 0;\n if (!j) {\n g = 12;\n break;\n }\n }\n k = Gd(k | 0, l | 0, 1, 0) | 0;\n l = H() | 0;\n if (!((l | 0) < (d | 0) | (l | 0) == (d | 0) & k >>> 0 < c >>> 0)) { break a; }\n }\n T = n;\n return g | 0;\n } else {\n h = 0;\n g = 0;\n } } while (0);\n b[f >> 2] = h;\n b[f + 4 >> 2] = g;\n f = 0;\n T = n;\n return f | 0;\n }\n function Ob(a, b) {\n a = a | 0;\n b = b | 0;\n b = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n return b & 1 | 0;\n }\n function Pb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n e = e & 15;\n if (!e) {\n e = 0;\n return e | 0;\n }\n d = 1;\n while (1) {\n c = Qd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n H() | 0;\n c = c & 7;\n if (c | 0) {\n d = 5;\n break;\n }\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {\n c = 0;\n d = 5;\n break;\n }\n }\n if ((d | 0) == 5) { return c | 0; }\n return 0;\n }\n function Qb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n i = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n i = i & 15;\n if (!i) {\n h = b;\n i = a;\n G(h | 0);\n return i | 0;\n }\n h = 1;\n c = 0;\n while (1) {\n f = (15 - h | 0) * 3 | 0;\n d = Rd(7, 0, f | 0) | 0;\n e = H() | 0;\n g = Qd(a | 0, b | 0, f | 0) | 0;\n H() | 0;\n f = Rd($a(g & 7) | 0, 0, f | 0) | 0;\n g = H() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n d = d & 15;\n if (!d) { c = 1; }else {\n c = 1;\n b: while (1) {\n g = Qd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n H() | 0;\n switch (g & 7) {\n case 1:\n break b;\n case 0:\n break;\n default:\n {\n c = 1;\n break a;\n }\n }\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break a;\n }\n }\n c = 1;\n while (1) {\n g = (15 - c | 0) * 3 | 0;\n e = Qd(a | 0, b | 0, g | 0) | 0;\n H() | 0;\n f = Rd(7, 0, g | 0) | 0;\n b = b & ~(H() | 0);\n g = Rd($a(e & 7) | 0, 0, g | 0) | 0;\n a = a & ~f | g;\n b = b | (H() | 0);\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break;\n }\n }\n }\n } else { c = 0; } } } while (0);\n if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n }\n G(b | 0);\n return a | 0;\n }\n function Rb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0;\n d = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n d = d & 15;\n if (!d) {\n c = b;\n d = a;\n G(c | 0);\n return d | 0;\n }\n c = 1;\n while (1) {\n f = (15 - c | 0) * 3 | 0;\n g = Qd(a | 0, b | 0, f | 0) | 0;\n H() | 0;\n e = Rd(7, 0, f | 0) | 0;\n b = b & ~(H() | 0);\n f = Rd($a(g & 7) | 0, 0, f | 0) | 0;\n a = f | a & ~e;\n b = H() | 0 | b;\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }\n }\n G(b | 0);\n return a | 0;\n }\n function Sb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n i = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n i = i & 15;\n if (!i) {\n h = b;\n i = a;\n G(h | 0);\n return i | 0;\n }\n h = 1;\n c = 0;\n while (1) {\n f = (15 - h | 0) * 3 | 0;\n d = Rd(7, 0, f | 0) | 0;\n e = H() | 0;\n g = Qd(a | 0, b | 0, f | 0) | 0;\n H() | 0;\n f = Rd(ab(g & 7) | 0, 0, f | 0) | 0;\n g = H() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n d = d & 15;\n if (!d) { c = 1; }else {\n c = 1;\n b: while (1) {\n g = Qd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n H() | 0;\n switch (g & 7) {\n case 1:\n break b;\n case 0:\n break;\n default:\n {\n c = 1;\n break a;\n }\n }\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break a;\n }\n }\n c = 1;\n while (1) {\n e = (15 - c | 0) * 3 | 0;\n f = Rd(7, 0, e | 0) | 0;\n g = b & ~(H() | 0);\n b = Qd(a | 0, b | 0, e | 0) | 0;\n H() | 0;\n b = Rd(ab(b & 7) | 0, 0, e | 0) | 0;\n a = a & ~f | b;\n b = g | (H() | 0);\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break;\n }\n }\n }\n } else { c = 0; } } } while (0);\n if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n }\n G(b | 0);\n return a | 0;\n }\n function Tb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0;\n d = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n d = d & 15;\n if (!d) {\n c = b;\n d = a;\n G(c | 0);\n return d | 0;\n }\n c = 1;\n while (1) {\n g = (15 - c | 0) * 3 | 0;\n f = Rd(7, 0, g | 0) | 0;\n e = b & ~(H() | 0);\n b = Qd(a | 0, b | 0, g | 0) | 0;\n H() | 0;\n b = Rd(ab(b & 7) | 0, 0, g | 0) | 0;\n a = b | a & ~f;\n b = H() | 0 | e;\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }\n }\n G(b | 0);\n return a | 0;\n }\n function Ub(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n j = T;\n T = T + 64 | 0;\n i = j + 40 | 0;\n e = j + 24 | 0;\n f = j + 12 | 0;\n g = j;\n Rd(c | 0, 0, 52) | 0;\n d = H() | 0 | 134225919;\n if (!c) {\n if ((b[a + 4 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n G(h | 0);\n T = j;\n return i | 0;\n }\n if ((b[a + 8 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n G(h | 0);\n T = j;\n return i | 0;\n }\n if ((b[a + 12 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n G(h | 0);\n T = j;\n return i | 0;\n }\n Rd(qa(a) | 0, 0, 45) | 0;\n h = H() | 0 | d;\n i = -1;\n G(h | 0);\n T = j;\n return i | 0;\n }\n b[i >> 2] = b[a >> 2];\n b[i + 4 >> 2] = b[a + 4 >> 2];\n b[i + 8 >> 2] = b[a + 8 >> 2];\n b[i + 12 >> 2] = b[a + 12 >> 2];\n h = i + 4 | 0;\n if ((c | 0) > 0) {\n a = -1;\n while (1) {\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n if (!(c & 1)) {\n Va(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n Xa(f);\n } else {\n Ua(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n Wa(f);\n }\n Pa(e, f, g);\n Ma(g);\n l = (15 - c | 0) * 3 | 0;\n k = Rd(7, 0, l | 0) | 0;\n d = d & ~(H() | 0);\n l = Rd(Ra(g) | 0, 0, l | 0) | 0;\n a = l | a & ~k;\n d = H() | 0 | d;\n if ((c | 0) > 1) { c = c + -1 | 0; }else { break; }\n }\n } else { a = -1; }\n a: do { if (((b[h >> 2] | 0) <= 2 ? (b[i + 8 >> 2] | 0) <= 2 : 0) ? (b[i + 12 >> 2] | 0) <= 2 : 0) {\n e = qa(i) | 0;\n c = Rd(e | 0, 0, 45) | 0;\n c = c | a;\n a = H() | 0 | d & -1040385;\n g = ra(i) | 0;\n if (!(oa(e) | 0)) {\n if ((g | 0) <= 0) { break; }\n f = 0;\n while (1) {\n e = Qd(c | 0, a | 0, 52) | 0;\n H() | 0;\n e = e & 15;\n if (e) {\n d = 1;\n while (1) {\n l = (15 - d | 0) * 3 | 0;\n i = Qd(c | 0, a | 0, l | 0) | 0;\n H() | 0;\n k = Rd(7, 0, l | 0) | 0;\n a = a & ~(H() | 0);\n l = Rd($a(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (H() | 0);\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n f = f + 1 | 0;\n if ((f | 0) == (g | 0)) { break a; }\n }\n }\n f = Qd(c | 0, a | 0, 52) | 0;\n H() | 0;\n f = f & 15;\n b: do { if (f) {\n d = 1;\n c: while (1) {\n l = Qd(c | 0, a | 0, (15 - d | 0) * 3 | 0) | 0;\n H() | 0;\n switch (l & 7) {\n case 1:\n break c;\n case 0:\n break;\n default:\n break b;\n }\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break b; }\n }\n if (ua(e, b[i >> 2] | 0) | 0) {\n d = 1;\n while (1) {\n i = (15 - d | 0) * 3 | 0;\n k = Rd(7, 0, i | 0) | 0;\n l = a & ~(H() | 0);\n a = Qd(c | 0, a | 0, i | 0) | 0;\n H() | 0;\n a = Rd(ab(a & 7) | 0, 0, i | 0) | 0;\n c = c & ~k | a;\n a = l | (H() | 0);\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }\n }\n } else {\n d = 1;\n while (1) {\n l = (15 - d | 0) * 3 | 0;\n i = Qd(c | 0, a | 0, l | 0) | 0;\n H() | 0;\n k = Rd(7, 0, l | 0) | 0;\n a = a & ~(H() | 0);\n l = Rd($a(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (H() | 0);\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n } } while (0);\n if ((g | 0) > 0) {\n d = 0;\n do {\n c = Qb(c, a) | 0;\n a = H() | 0;\n d = d + 1 | 0;\n } while ((d | 0) != (g | 0));\n }\n } else {\n c = 0;\n a = 0;\n } } while (0);\n k = a;\n l = c;\n G(k | 0);\n T = j;\n return l | 0;\n }\n function Vb(a) {\n a = a | 0;\n return (a | 0) % 2 | 0 | 0;\n }\n function Wb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n f = T;\n T = T + 16 | 0;\n e = f;\n if (c >>> 0 > 15) {\n e = 4;\n T = f;\n return e | 0;\n }\n if ((b[a + 4 >> 2] & 2146435072 | 0) == 2146435072) {\n e = 3;\n T = f;\n return e | 0;\n }\n if ((b[a + 8 + 4 >> 2] & 2146435072 | 0) == 2146435072) {\n e = 3;\n T = f;\n return e | 0;\n }\n qb(a, c, e);\n c = Ub(e, c) | 0;\n e = H() | 0;\n b[d >> 2] = c;\n b[d + 4 >> 2] = e;\n if ((c | 0) == 0 & (e | 0) == 0) { I(27795, 27122, 959, 27145); }\n e = 0;\n T = f;\n return e | 0;\n }\n function Xb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n f = d + 4 | 0;\n g = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n g = g & 15;\n h = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n e = (g | 0) == 0;\n if (!(oa(h & 127) | 0)) {\n if (e) {\n h = 0;\n return h | 0;\n }\n if ((b[f >> 2] | 0) == 0 ? (b[d + 8 >> 2] | 0) == 0 : 0) { e = (b[d + 12 >> 2] | 0) != 0 & 1; }else { e = 1; }\n } else if (e) {\n h = 1;\n return h | 0;\n } else { e = 1; }\n d = 1;\n while (1) {\n if (!(d & 1)) { Xa(f); }else { Wa(f); }\n h = Qd(a | 0, c | 0, (15 - d | 0) * 3 | 0) | 0;\n H() | 0;\n Ya(f, h & 7);\n if (d >>> 0 < g >>> 0) { d = d + 1 | 0; }else { break; }\n }\n return e | 0;\n }\n function Yb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n l = T;\n T = T + 16 | 0;\n j = l;\n k = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n k = k & 127;\n if (k >>> 0 > 121) {\n b[d >> 2] = 0;\n b[d + 4 >> 2] = 0;\n b[d + 8 >> 2] = 0;\n b[d + 12 >> 2] = 0;\n k = 5;\n T = l;\n return k | 0;\n }\n a: do { if ((oa(k) | 0) != 0 ? (g = Qd(a | 0, c | 0, 52) | 0, H() | 0, g = g & 15, (g | 0) != 0) : 0) {\n e = 1;\n b: while (1) {\n i = Qd(a | 0, c | 0, (15 - e | 0) * 3 | 0) | 0;\n H() | 0;\n switch (i & 7) {\n case 5:\n break b;\n case 0:\n break;\n default:\n {\n e = c;\n break a;\n }\n }\n if (e >>> 0 < g >>> 0) { e = e + 1 | 0; }else {\n e = c;\n break a;\n }\n }\n f = 1;\n e = c;\n while (1) {\n c = (15 - f | 0) * 3 | 0;\n h = Rd(7, 0, c | 0) | 0;\n i = e & ~(H() | 0);\n e = Qd(a | 0, e | 0, c | 0) | 0;\n H() | 0;\n e = Rd(ab(e & 7) | 0, 0, c | 0) | 0;\n a = a & ~h | e;\n e = i | (H() | 0);\n if (f >>> 0 < g >>> 0) { f = f + 1 | 0; }else { break; }\n }\n } else { e = c; } } while (0);\n i = 7696 + (k * 28 | 0) | 0;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = b[i + 4 >> 2];\n b[d + 8 >> 2] = b[i + 8 >> 2];\n b[d + 12 >> 2] = b[i + 12 >> 2];\n if (!(Xb(a, e, d) | 0)) {\n k = 0;\n T = l;\n return k | 0;\n }\n h = d + 4 | 0;\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n g = Qd(a | 0, e | 0, 52) | 0;\n H() | 0;\n i = g & 15;\n if (!(g & 1)) { g = i; }else {\n Xa(h);\n g = i + 1 | 0;\n }\n if (!(oa(k) | 0)) { e = 0; }else {\n c: do { if (!i) { e = 0; }else {\n c = 1;\n while (1) {\n f = Qd(a | 0, e | 0, (15 - c | 0) * 3 | 0) | 0;\n H() | 0;\n f = f & 7;\n if (f | 0) {\n e = f;\n break c;\n }\n if (c >>> 0 < i >>> 0) { c = c + 1 | 0; }else {\n e = 0;\n break;\n }\n }\n } } while (0);\n e = (e | 0) == 4 & 1;\n }\n if (!(xb(d, g, e, 0) | 0)) {\n if ((g | 0) != (i | 0)) {\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = b[j + 4 >> 2];\n b[h + 8 >> 2] = b[j + 8 >> 2];\n }\n } else {\n if (oa(k) | 0) { do {} while ((xb(d, g, 0, 0) | 0) != 0); }\n if ((g | 0) != (i | 0)) { Va(h); }\n }\n k = 0;\n T = l;\n return k | 0;\n }\n function Zb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0;\n f = T;\n T = T + 16 | 0;\n d = f;\n e = Yb(a, b, d) | 0;\n if (e | 0) {\n T = f;\n return e | 0;\n }\n e = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n ub(d, e & 15, c);\n e = 0;\n T = f;\n return e | 0;\n }\n function _b(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = T;\n T = T + 16 | 0;\n f = g;\n d = Yb(a, b, f) | 0;\n if (d | 0) {\n f = d;\n T = g;\n return f | 0;\n }\n d = Qd(a | 0, b | 0, 45) | 0;\n H() | 0;\n d = (oa(d & 127) | 0) == 0;\n e = Qd(a | 0, b | 0, 52) | 0;\n H() | 0;\n e = e & 15;\n a: do { if (!d) {\n if (e | 0) {\n d = 1;\n while (1) {\n h = Rd(7, 0, (15 - d | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((H() | 0) & b | 0) == 0)) { break a; }\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n vb(f, e, 0, 5, c);\n h = 0;\n T = g;\n return h | 0;\n } } while (0);\n zb(f, e, 0, 6, c);\n h = 0;\n T = g;\n return h | 0;\n }\n function $b(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n f = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n if (!(oa(f & 127) | 0)) {\n f = 2;\n b[d >> 2] = f;\n return 0;\n }\n f = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n f = f & 15;\n if (!f) {\n f = 5;\n b[d >> 2] = f;\n return 0;\n }\n e = 1;\n while (1) {\n g = Rd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n if (!((g & a | 0) == 0 & ((H() | 0) & c | 0) == 0)) {\n e = 2;\n a = 6;\n break;\n }\n if (e >>> 0 < f >>> 0) { e = e + 1 | 0; }else {\n e = 5;\n a = 6;\n break;\n }\n }\n if ((a | 0) == 6) {\n b[d >> 2] = e;\n return 0;\n }\n return 0;\n }\n function ac(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0;\n m = T;\n T = T + 128 | 0;\n k = m + 112 | 0;\n g = m + 96 | 0;\n l = m;\n f = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n i = f & 15;\n b[k >> 2] = i;\n h = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n h = h & 127;\n a: do { if (oa(h) | 0) {\n if (i | 0) {\n e = 1;\n while (1) {\n j = Rd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n if (!((j & a | 0) == 0 & ((H() | 0) & c | 0) == 0)) {\n f = 0;\n break a;\n }\n if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else { break; }\n }\n }\n if (!(f & 1)) {\n j = Rd(i + 1 | 0, 0, 52) | 0;\n l = H() | 0 | c & -15728641;\n k = Rd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n l = ac((j | a) & ~k, l & ~(H() | 0), d) | 0;\n T = m;\n return l | 0;\n } else { f = 1; }\n } else { f = 0; } } while (0);\n e = Yb(a, c, g) | 0;\n if (!e) {\n if (f) {\n wb(g, k, l);\n j = 5;\n } else {\n Ab(g, k, l);\n j = 6;\n }\n b: do { if (oa(h) | 0) {\n if (!i) { a = 5; }else {\n e = 1;\n while (1) {\n h = Rd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((H() | 0) & c | 0) == 0)) {\n a = 2;\n break b;\n }\n if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else {\n a = 5;\n break;\n }\n }\n }\n } else { a = 2; } } while (0);\n Xd(d | 0, -1, a << 2 | 0) | 0;\n c: do { if (f) {\n g = 0;\n while (1) {\n h = l + (g << 4) | 0;\n yb(h, b[k >> 2] | 0) | 0;\n h = b[h >> 2] | 0;\n i = b[d >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (h | 0)) { e = d; }else {\n f = 0;\n do {\n f = f + 1 | 0;\n if (f >>> 0 >= a >>> 0) {\n e = 1;\n break c;\n }\n e = d + (f << 2) | 0;\n i = b[e >> 2] | 0;\n } while (!((i | 0) == -1 | (i | 0) == (h | 0)));\n }\n b[e >> 2] = h;\n g = g + 1 | 0;\n if (g >>> 0 >= j >>> 0) {\n e = 0;\n break;\n }\n }\n } else {\n g = 0;\n while (1) {\n h = l + (g << 4) | 0;\n xb(h, b[k >> 2] | 0, 0, 1) | 0;\n h = b[h >> 2] | 0;\n i = b[d >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (h | 0)) { e = d; }else {\n f = 0;\n do {\n f = f + 1 | 0;\n if (f >>> 0 >= a >>> 0) {\n e = 1;\n break c;\n }\n e = d + (f << 2) | 0;\n i = b[e >> 2] | 0;\n } while (!((i | 0) == -1 | (i | 0) == (h | 0)));\n }\n b[e >> 2] = h;\n g = g + 1 | 0;\n if (g >>> 0 >= j >>> 0) {\n e = 0;\n break;\n }\n }\n } } while (0);\n }\n l = e;\n T = m;\n return l | 0;\n }\n function bc() {\n return 12;\n }\n function cc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n if (a >>> 0 > 15) {\n i = 4;\n return i | 0;\n }\n Rd(a | 0, 0, 52) | 0;\n i = H() | 0 | 134225919;\n if (!a) {\n d = 0;\n e = 0;\n do {\n if (oa(e) | 0) {\n Rd(e | 0, 0, 45) | 0;\n h = i | (H() | 0);\n a = c + (d << 3) | 0;\n b[a >> 2] = -1;\n b[a + 4 >> 2] = h;\n d = d + 1 | 0;\n }\n e = e + 1 | 0;\n } while ((e | 0) != 122);\n d = 0;\n return d | 0;\n }\n d = 0;\n h = 0;\n do {\n if (oa(h) | 0) {\n Rd(h | 0, 0, 45) | 0;\n e = 1;\n f = -1;\n g = i | (H() | 0);\n while (1) {\n j = Rd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n f = f & ~j;\n g = g & ~(H() | 0);\n if ((e | 0) == (a | 0)) { break; }else { e = e + 1 | 0; }\n }\n j = c + (d << 3) | 0;\n b[j >> 2] = f;\n b[j + 4 >> 2] = g;\n d = d + 1 | 0;\n }\n h = h + 1 | 0;\n } while ((h | 0) != 122);\n d = 0;\n return d | 0;\n }\n function dc(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0;\n t = T;\n T = T + 16 | 0;\n r = t;\n s = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n s = s & 15;\n if (d >>> 0 > 15) {\n s = 4;\n T = t;\n return s | 0;\n }\n if ((s | 0) < (d | 0)) {\n s = 12;\n T = t;\n return s | 0;\n }\n if ((s | 0) != (d | 0)) {\n g = Rd(d | 0, 0, 52) | 0;\n g = g | a;\n i = H() | 0 | c & -15728641;\n if ((s | 0) > (d | 0)) {\n j = d;\n do {\n q = Rd(7, 0, (14 - j | 0) * 3 | 0) | 0;\n j = j + 1 | 0;\n g = q | g;\n i = H() | 0 | i;\n } while ((j | 0) < (s | 0));\n q = g;\n } else { q = g; }\n } else {\n q = a;\n i = c;\n }\n p = Qd(q | 0, i | 0, 45) | 0;\n H() | 0;\n a: do { if (oa(p & 127) | 0) {\n j = Qd(q | 0, i | 0, 52) | 0;\n H() | 0;\n j = j & 15;\n if (j | 0) {\n g = 1;\n while (1) {\n p = Rd(7, 0, (15 - g | 0) * 3 | 0) | 0;\n if (!((p & q | 0) == 0 & ((H() | 0) & i | 0) == 0)) {\n k = 33;\n break a;\n }\n if (g >>> 0 < j >>> 0) { g = g + 1 | 0; }else { break; }\n }\n }\n p = e;\n b[p >> 2] = 0;\n b[p + 4 >> 2] = 0;\n if ((s | 0) > (d | 0)) {\n p = c & -15728641;\n o = s;\n while (1) {\n n = o;\n o = o + -1 | 0;\n if (o >>> 0 > 15 | (s | 0) < (o | 0)) {\n k = 19;\n break;\n }\n if ((s | 0) != (o | 0)) {\n g = Rd(o | 0, 0, 52) | 0;\n g = g | a;\n j = H() | 0 | p;\n if ((s | 0) < (n | 0)) { m = g; }else {\n k = o;\n do {\n m = Rd(7, 0, (14 - k | 0) * 3 | 0) | 0;\n k = k + 1 | 0;\n g = m | g;\n j = H() | 0 | j;\n } while ((k | 0) < (s | 0));\n m = g;\n }\n } else {\n m = a;\n j = c;\n }\n l = Qd(m | 0, j | 0, 45) | 0;\n H() | 0;\n if (!(oa(l & 127) | 0)) { g = 0; }else {\n l = Qd(m | 0, j | 0, 52) | 0;\n H() | 0;\n l = l & 15;\n b: do { if (!l) { g = 0; }else {\n k = 1;\n while (1) {\n g = Qd(m | 0, j | 0, (15 - k | 0) * 3 | 0) | 0;\n H() | 0;\n g = g & 7;\n if (g | 0) { break b; }\n if (k >>> 0 < l >>> 0) { k = k + 1 | 0; }else {\n g = 0;\n break;\n }\n }\n } } while (0);\n g = (g | 0) == 0 & 1;\n }\n j = Qd(a | 0, c | 0, (15 - n | 0) * 3 | 0) | 0;\n H() | 0;\n j = j & 7;\n if ((j | 0) == 7) {\n f = 5;\n k = 42;\n break;\n }\n g = (g | 0) != 0;\n if ((j | 0) == 1 & g) {\n f = 5;\n k = 42;\n break;\n }\n m = j + (((j | 0) != 0 & g) << 31 >> 31) | 0;\n if (m | 0) {\n k = s - n | 0;\n k = Oc(7, 0, k, ((k | 0) < 0) << 31 >> 31) | 0;\n l = H() | 0;\n if (g) {\n g = Md(k | 0, l | 0, 5, 0) | 0;\n g = Gd(g | 0, H() | 0, -5, -1) | 0;\n g = Kd(g | 0, H() | 0, 6, 0) | 0;\n g = Gd(g | 0, H() | 0, 1, 0) | 0;\n j = H() | 0;\n } else {\n g = k;\n j = l;\n }\n n = m + -1 | 0;\n n = Md(k | 0, l | 0, n | 0, ((n | 0) < 0) << 31 >> 31 | 0) | 0;\n n = Gd(g | 0, j | 0, n | 0, H() | 0) | 0;\n m = H() | 0;\n l = e;\n l = Gd(n | 0, m | 0, b[l >> 2] | 0, b[l + 4 >> 2] | 0) | 0;\n m = H() | 0;\n n = e;\n b[n >> 2] = l;\n b[n + 4 >> 2] = m;\n }\n if ((o | 0) <= (d | 0)) {\n k = 37;\n break;\n }\n }\n if ((k | 0) == 19) { I(27795, 27122, 1276, 27158); }else if ((k | 0) == 37) {\n h = e;\n f = b[h + 4 >> 2] | 0;\n h = b[h >> 2] | 0;\n break;\n } else if ((k | 0) == 42) {\n T = t;\n return f | 0;\n }\n } else {\n f = 0;\n h = 0;\n }\n } else { k = 33; } } while (0);\n c: do { if ((k | 0) == 33) {\n p = e;\n b[p >> 2] = 0;\n b[p + 4 >> 2] = 0;\n if ((s | 0) > (d | 0)) {\n g = s;\n while (1) {\n f = Qd(a | 0, c | 0, (15 - g | 0) * 3 | 0) | 0;\n H() | 0;\n f = f & 7;\n if ((f | 0) == 7) {\n f = 5;\n break;\n }\n h = s - g | 0;\n h = Oc(7, 0, h, ((h | 0) < 0) << 31 >> 31) | 0;\n f = Md(h | 0, H() | 0, f | 0, 0) | 0;\n h = H() | 0;\n p = e;\n h = Gd(b[p >> 2] | 0, b[p + 4 >> 2] | 0, f | 0, h | 0) | 0;\n f = H() | 0;\n p = e;\n b[p >> 2] = h;\n b[p + 4 >> 2] = f;\n g = g + -1 | 0;\n if ((g | 0) <= (d | 0)) { break c; }\n }\n T = t;\n return f | 0;\n } else {\n f = 0;\n h = 0;\n }\n } } while (0);\n if (Gb(q, i, s, r) | 0) { I(27795, 27122, 1236, 27173); }\n s = r;\n r = b[s + 4 >> 2] | 0;\n if (((f | 0) > -1 | (f | 0) == -1 & h >>> 0 > 4294967295) & ((r | 0) > (f | 0) | ((r | 0) == (f | 0) ? (b[s >> 2] | 0) >>> 0 > h >>> 0 : 0))) {\n s = 0;\n T = t;\n return s | 0;\n } else { I(27795, 27122, 1316, 27158); }\n return 0;\n }\n function ec(a, c, d, e, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0;\n m = T;\n T = T + 16 | 0;\n h = m;\n if (f >>> 0 > 15) {\n g = 4;\n T = m;\n return g | 0;\n }\n i = Qd(d | 0, e | 0, 52) | 0;\n H() | 0;\n i = i & 15;\n if ((i | 0) > (f | 0)) {\n g = 12;\n T = m;\n return g | 0;\n }\n if (Gb(d, e, f, h) | 0) { I(27795, 27122, 1236, 27173); }\n l = h;\n k = b[l + 4 >> 2] | 0;\n if (!(((c | 0) > -1 | (c | 0) == -1 & a >>> 0 > 4294967295) & ((k | 0) > (c | 0) | ((k | 0) == (c | 0) ? (b[l >> 2] | 0) >>> 0 > a >>> 0 : 0)))) {\n g = 2;\n T = m;\n return g | 0;\n }\n l = f - i | 0;\n f = Rd(f | 0, 0, 52) | 0;\n j = H() | 0 | e & -15728641;\n k = g;\n b[k >> 2] = f | d;\n b[k + 4 >> 2] = j;\n k = Qd(d | 0, e | 0, 45) | 0;\n H() | 0;\n a: do { if (oa(k & 127) | 0) {\n if (i | 0) {\n h = 1;\n while (1) {\n k = Rd(7, 0, (15 - h | 0) * 3 | 0) | 0;\n if (!((k & d | 0) == 0 & ((H() | 0) & e | 0) == 0)) { break a; }\n if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n }\n }\n if ((l | 0) < 1) {\n g = 0;\n T = m;\n return g | 0;\n }\n k = i ^ 15;\n e = -1;\n j = 1;\n h = 1;\n while (1) {\n i = l - j | 0;\n i = Oc(7, 0, i, ((i | 0) < 0) << 31 >> 31) | 0;\n d = H() | 0;\n do { if (h) {\n h = Md(i | 0, d | 0, 5, 0) | 0;\n h = Gd(h | 0, H() | 0, -5, -1) | 0;\n h = Kd(h | 0, H() | 0, 6, 0) | 0;\n f = H() | 0;\n if ((c | 0) > (f | 0) | (c | 0) == (f | 0) & a >>> 0 > h >>> 0) {\n c = Gd(a | 0, c | 0, -1, -1) | 0;\n c = Hd(c | 0, H() | 0, h | 0, f | 0) | 0;\n h = H() | 0;\n n = g;\n p = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n q = (k + e | 0) * 3 | 0;\n o = Rd(7, 0, q | 0) | 0;\n n = n & ~(H() | 0);\n e = Kd(c | 0, h | 0, i | 0, d | 0) | 0;\n a = H() | 0;\n f = Gd(e | 0, a | 0, 2, 0) | 0;\n q = Rd(f | 0, H() | 0, q | 0) | 0;\n n = H() | 0 | n;\n f = g;\n b[f >> 2] = q | p & ~o;\n b[f + 4 >> 2] = n;\n a = Md(e | 0, a | 0, i | 0, d | 0) | 0;\n a = Hd(c | 0, h | 0, a | 0, H() | 0) | 0;\n h = 0;\n c = H() | 0;\n break;\n } else {\n q = g;\n o = b[q >> 2] | 0;\n q = b[q + 4 >> 2] | 0;\n p = Rd(7, 0, (k + e | 0) * 3 | 0) | 0;\n q = q & ~(H() | 0);\n h = g;\n b[h >> 2] = o & ~p;\n b[h + 4 >> 2] = q;\n h = 1;\n break;\n }\n } else {\n o = g;\n f = b[o >> 2] | 0;\n o = b[o + 4 >> 2] | 0;\n e = (k + e | 0) * 3 | 0;\n n = Rd(7, 0, e | 0) | 0;\n o = o & ~(H() | 0);\n q = Kd(a | 0, c | 0, i | 0, d | 0) | 0;\n h = H() | 0;\n e = Rd(q | 0, h | 0, e | 0) | 0;\n o = H() | 0 | o;\n p = g;\n b[p >> 2] = e | f & ~n;\n b[p + 4 >> 2] = o;\n h = Md(q | 0, h | 0, i | 0, d | 0) | 0;\n a = Hd(a | 0, c | 0, h | 0, H() | 0) | 0;\n h = 0;\n c = H() | 0;\n } } while (0);\n if ((l | 0) > (j | 0)) {\n e = ~j;\n j = j + 1 | 0;\n } else {\n c = 0;\n break;\n }\n }\n T = m;\n return c | 0;\n } } while (0);\n if ((l | 0) < 1) {\n q = 0;\n T = m;\n return q | 0;\n }\n f = i ^ 15;\n h = 1;\n while (1) {\n p = l - h | 0;\n p = Oc(7, 0, p, ((p | 0) < 0) << 31 >> 31) | 0;\n q = H() | 0;\n j = g;\n d = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n i = (f - h | 0) * 3 | 0;\n e = Rd(7, 0, i | 0) | 0;\n j = j & ~(H() | 0);\n n = Kd(a | 0, c | 0, p | 0, q | 0) | 0;\n o = H() | 0;\n i = Rd(n | 0, o | 0, i | 0) | 0;\n j = H() | 0 | j;\n k = g;\n b[k >> 2] = i | d & ~e;\n b[k + 4 >> 2] = j;\n q = Md(n | 0, o | 0, p | 0, q | 0) | 0;\n a = Hd(a | 0, c | 0, q | 0, H() | 0) | 0;\n c = H() | 0;\n if ((l | 0) <= (h | 0)) {\n c = 0;\n break;\n } else { h = h + 1 | 0; }\n }\n T = m;\n return c | 0;\n }\n function fc(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0;\n f = Qd(c | 0, d | 0, 52) | 0;\n H() | 0;\n f = f & 15;\n if ((c | 0) == 0 & (d | 0) == 0 | ((e | 0) > 15 | (f | 0) > (e | 0))) {\n g = -1;\n c = -1;\n d = 0;\n f = 0;\n } else {\n c = Jb(c, d, f + 1 | 0, e) | 0;\n h = (H() | 0) & -15728641;\n d = Rd(e | 0, 0, 52) | 0;\n d = c | d;\n h = h | (H() | 0);\n c = (Hb(d, h) | 0) == 0;\n g = f;\n c = c ? -1 : e;\n f = h;\n }\n h = a;\n b[h >> 2] = d;\n b[h + 4 >> 2] = f;\n b[a + 8 >> 2] = g;\n b[a + 12 >> 2] = c;\n return;\n }\n function gc(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0;\n f = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n f = f & 15;\n g = e + 8 | 0;\n b[g >> 2] = f;\n if ((a | 0) == 0 & (c | 0) == 0 | ((d | 0) > 15 | (f | 0) > (d | 0))) {\n d = e;\n b[d >> 2] = 0;\n b[d + 4 >> 2] = 0;\n b[g >> 2] = -1;\n b[e + 12 >> 2] = -1;\n return;\n }\n a = Jb(a, c, f + 1 | 0, d) | 0;\n g = (H() | 0) & -15728641;\n f = Rd(d | 0, 0, 52) | 0;\n f = a | f;\n g = g | (H() | 0);\n a = e;\n b[a >> 2] = f;\n b[a + 4 >> 2] = g;\n a = e + 12 | 0;\n if (!(Hb(f, g) | 0)) {\n b[a >> 2] = -1;\n return;\n } else {\n b[a >> 2] = d;\n return;\n }\n }\n function hc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n d = a;\n c = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n if ((c | 0) == 0 & (d | 0) == 0) { return; }\n e = Qd(c | 0, d | 0, 52) | 0;\n H() | 0;\n e = e & 15;\n i = Rd(1, 0, (e ^ 15) * 3 | 0) | 0;\n c = Gd(i | 0, H() | 0, c | 0, d | 0) | 0;\n d = H() | 0;\n i = a;\n b[i >> 2] = c;\n b[i + 4 >> 2] = d;\n i = a + 8 | 0;\n h = b[i >> 2] | 0;\n if ((e | 0) < (h | 0)) { return; }\n j = a + 12 | 0;\n g = e;\n while (1) {\n if ((g | 0) == (h | 0)) {\n e = 5;\n break;\n }\n k = (g | 0) == (b[j >> 2] | 0);\n f = (15 - g | 0) * 3 | 0;\n e = Qd(c | 0, d | 0, f | 0) | 0;\n H() | 0;\n e = e & 7;\n if (k & ((e | 0) == 1 & 0 == 0)) {\n e = 7;\n break;\n }\n if (!((e | 0) == 7 & 0 == 0)) {\n e = 10;\n break;\n }\n k = Rd(1, 0, f | 0) | 0;\n c = Gd(c | 0, d | 0, k | 0, H() | 0) | 0;\n d = H() | 0;\n k = a;\n b[k >> 2] = c;\n b[k + 4 >> 2] = d;\n if ((g | 0) > (h | 0)) { g = g + -1 | 0; }else {\n e = 10;\n break;\n }\n }\n if ((e | 0) == 5) {\n k = a;\n b[k >> 2] = 0;\n b[k + 4 >> 2] = 0;\n b[i >> 2] = -1;\n b[j >> 2] = -1;\n return;\n } else if ((e | 0) == 7) {\n h = Rd(1, 0, f | 0) | 0;\n h = Gd(c | 0, d | 0, h | 0, H() | 0) | 0;\n i = H() | 0;\n k = a;\n b[k >> 2] = h;\n b[k + 4 >> 2] = i;\n b[j >> 2] = g + -1;\n return;\n } else if ((e | 0) == 10) { return; }\n }\n function ic(a) {\n a = +a;\n var b = 0.0;\n b = a < 0.0 ? a + 6.283185307179586 : a;\n return +(!(a >= 6.283185307179586) ? b : b + -6.283185307179586);\n }\n function jc(a, b) {\n a = a | 0;\n b = b | 0;\n if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < 1.7453292519943298e-11)) {\n b = 0;\n return b | 0;\n }\n b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < 1.7453292519943298e-11;\n return b | 0;\n }\n function kc(a, b) {\n a = +a;\n b = b | 0;\n switch (b | 0) {\n case 1:\n {\n a = a < 0.0 ? a + 6.283185307179586 : a;\n break;\n }\n case 2:\n {\n a = a > 0.0 ? a + -6.283185307179586 : a;\n break;\n }\n default:\n\n }\n return +a;\n }\n function lc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0);\n }\n function mc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0 * 6371.007180918475);\n }\n function nc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0 * 6371.007180918475 * 1.0e3);\n }\n function oc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0;\n g = +e[b >> 3];\n d = +t(+g);\n f = +e[b + 8 >> 3] - +e[a + 8 >> 3];\n h = d * +u(+f);\n c = +e[a >> 3];\n return + +z(+h, +(+u(+g) * +t(+c) - +t(+f) * (d * +u(+c))));\n }\n function pc(a, c, d, f) {\n a = a | 0;\n c = +c;\n d = +d;\n f = f | 0;\n var g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0;\n if (d < 1.0e-16) {\n b[f >> 2] = b[a >> 2];\n b[f + 4 >> 2] = b[a + 4 >> 2];\n b[f + 8 >> 2] = b[a + 8 >> 2];\n b[f + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n h = c < 0.0 ? c + 6.283185307179586 : c;\n h = !(c >= 6.283185307179586) ? h : h + -6.283185307179586;\n do { if (h < 1.0e-16) {\n c = +e[a >> 3] + d;\n e[f >> 3] = c;\n g = f;\n } else {\n g = +q(+(h + -3.141592653589793)) < 1.0e-16;\n c = +e[a >> 3];\n if (g) {\n c = c - d;\n e[f >> 3] = c;\n g = f;\n break;\n }\n i = +t(+d);\n d = +u(+d);\n c = i * +u(+c) + +t(+h) * (d * +t(+c));\n c = c > 1.0 ? 1.0 : c;\n c = +x(+(c < -1.0 ? -1.0 : c));\n e[f >> 3] = c;\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n j = 1.0 / +t(+c);\n h = d * +u(+h) * j;\n d = +e[a >> 3];\n c = j * ((i - +u(+c) * +u(+d)) / +t(+d));\n i = h > 1.0 ? 1.0 : h;\n c = c > 1.0 ? 1.0 : c;\n c = +e[a + 8 >> 3] + +z(+(i < -1.0 ? -1.0 : i), +(c < -1.0 ? -1.0 : c));\n if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }\n if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }\n e[f + 8 >> 3] = c;\n return;\n } } while (0);\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n c = +e[a + 8 >> 3];\n if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }\n if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }\n e[f + 8 >> 3] = c;\n return;\n }\n function qc(a, b) {\n a = a | 0;\n b = b | 0;\n if (a >>> 0 > 15) {\n b = 4;\n return b | 0;\n }\n e[b >> 3] = +e[20656 + (a << 3) >> 3];\n b = 0;\n return b | 0;\n }\n function rc(a, b) {\n a = a | 0;\n b = b | 0;\n if (a >>> 0 > 15) {\n b = 4;\n return b | 0;\n }\n e[b >> 3] = +e[20784 + (a << 3) >> 3];\n b = 0;\n return b | 0;\n }\n function sc(a, b) {\n a = a | 0;\n b = b | 0;\n if (a >>> 0 > 15) {\n b = 4;\n return b | 0;\n }\n e[b >> 3] = +e[20912 + (a << 3) >> 3];\n b = 0;\n return b | 0;\n }\n function tc(a, b) {\n a = a | 0;\n b = b | 0;\n if (a >>> 0 > 15) {\n b = 4;\n return b | 0;\n }\n e[b >> 3] = +e[21040 + (a << 3) >> 3];\n b = 0;\n return b | 0;\n }\n function uc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n if (a >>> 0 > 15) {\n c = 4;\n return c | 0;\n }\n d = Oc(7, 0, a, ((a | 0) < 0) << 31 >> 31) | 0;\n d = Md(d | 0, H() | 0, 120, 0) | 0;\n a = H() | 0;\n b[c >> 2] = d | 2;\n b[c + 4 >> 2] = a;\n c = 0;\n return c | 0;\n }\n function vc(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0;\n n = +e[b >> 3];\n l = +e[a >> 3];\n j = +u(+((n - l) * .5));\n g = +e[b + 8 >> 3];\n k = +e[a + 8 >> 3];\n h = +u(+((g - k) * .5));\n i = +t(+l);\n m = +t(+n);\n h = j * j + h * (m * i * h);\n h = +z(+ +r(+h), + +r(+(1.0 - h))) * 2.0;\n j = +e[c >> 3];\n n = +u(+((j - n) * .5));\n d = +e[c + 8 >> 3];\n g = +u(+((d - g) * .5));\n f = +t(+j);\n g = n * n + g * (m * f * g);\n g = +z(+ +r(+g), + +r(+(1.0 - g))) * 2.0;\n j = +u(+((l - j) * .5));\n d = +u(+((k - d) * .5));\n d = j * j + d * (i * f * d);\n d = +z(+ +r(+d), + +r(+(1.0 - d))) * 2.0;\n f = (h + g + d) * .5;\n return +(+y(+ +r(+(+v(+(f * .5)) * +v(+((f - h) * .5)) * +v(+((f - g) * .5)) * +v(+((f - d) * .5))))) * 4.0);\n }\n function wc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = T;\n T = T + 192 | 0;\n h = j + 168 | 0;\n i = j;\n g = Zb(a, c, h) | 0;\n if (g | 0) {\n d = g;\n T = j;\n return d | 0;\n }\n if (_b(a, c, i) | 0) { I(27795, 27190, 415, 27199); }\n c = b[i >> 2] | 0;\n if ((c | 0) > 0) {\n f = +vc(i + 8 | 0, i + 8 + (((c | 0) != 1 & 1) << 4) | 0, h) + 0.0;\n if ((c | 0) != 1) {\n a = 1;\n do {\n g = a;\n a = a + 1 | 0;\n f = f + +vc(i + 8 + (g << 4) | 0, i + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, h);\n } while ((a | 0) < (c | 0));\n }\n } else { f = 0.0; }\n e[d >> 3] = f;\n d = 0;\n T = j;\n return d | 0;\n }\n function xc(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n a = wc(a, b, c) | 0;\n if (a | 0) { return a | 0; }\n e[c >> 3] = +e[c >> 3] * 6371.007180918475 * 6371.007180918475;\n return a | 0;\n }\n function yc(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n a = wc(a, b, c) | 0;\n if (a | 0) { return a | 0; }\n e[c >> 3] = +e[c >> 3] * 6371.007180918475 * 6371.007180918475 * 1.0e3 * 1.0e3;\n return a | 0;\n }\n function zc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0,\n j = 0,\n k = 0.0,\n l = 0.0,\n m = 0.0;\n j = T;\n T = T + 176 | 0;\n i = j;\n a = pb(a, c, i) | 0;\n if (a | 0) {\n i = a;\n T = j;\n return i | 0;\n }\n e[d >> 3] = 0.0;\n a = b[i >> 2] | 0;\n if ((a | 0) <= 1) {\n i = 0;\n T = j;\n return i | 0;\n }\n c = a + -1 | 0;\n a = 0;\n f = +e[i + 8 >> 3];\n g = +e[i + 16 >> 3];\n h = 0.0;\n do {\n a = a + 1 | 0;\n l = f;\n f = +e[i + 8 + (a << 4) >> 3];\n m = +u(+((f - l) * .5));\n k = g;\n g = +e[i + 8 + (a << 4) + 8 >> 3];\n k = +u(+((g - k) * .5));\n k = m * m + k * (+t(+f) * +t(+l) * k);\n h = h + +z(+ +r(+k), + +r(+(1.0 - k))) * 2.0;\n } while ((a | 0) < (c | 0));\n e[d >> 3] = h;\n i = 0;\n T = j;\n return i | 0;\n }\n function Ac(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0,\n j = 0,\n k = 0.0,\n l = 0.0,\n m = 0.0;\n j = T;\n T = T + 176 | 0;\n i = j;\n a = pb(a, c, i) | 0;\n if (a | 0) {\n i = a;\n h = +e[d >> 3];\n h = h * 6371.007180918475;\n e[d >> 3] = h;\n T = j;\n return i | 0;\n }\n e[d >> 3] = 0.0;\n a = b[i >> 2] | 0;\n if ((a | 0) <= 1) {\n i = 0;\n h = 0.0;\n h = h * 6371.007180918475;\n e[d >> 3] = h;\n T = j;\n return i | 0;\n }\n c = a + -1 | 0;\n a = 0;\n f = +e[i + 8 >> 3];\n g = +e[i + 16 >> 3];\n h = 0.0;\n do {\n a = a + 1 | 0;\n l = f;\n f = +e[i + 8 + (a << 4) >> 3];\n m = +u(+((f - l) * .5));\n k = g;\n g = +e[i + 8 + (a << 4) + 8 >> 3];\n k = +u(+((g - k) * .5));\n k = m * m + k * (+t(+l) * +t(+f) * k);\n h = h + +z(+ +r(+k), + +r(+(1.0 - k))) * 2.0;\n } while ((a | 0) != (c | 0));\n e[d >> 3] = h;\n i = 0;\n m = h;\n m = m * 6371.007180918475;\n e[d >> 3] = m;\n T = j;\n return i | 0;\n }\n function Bc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0,\n j = 0,\n k = 0.0,\n l = 0.0,\n m = 0.0;\n j = T;\n T = T + 176 | 0;\n i = j;\n a = pb(a, c, i) | 0;\n if (a | 0) {\n i = a;\n h = +e[d >> 3];\n h = h * 6371.007180918475;\n h = h * 1.0e3;\n e[d >> 3] = h;\n T = j;\n return i | 0;\n }\n e[d >> 3] = 0.0;\n a = b[i >> 2] | 0;\n if ((a | 0) <= 1) {\n i = 0;\n h = 0.0;\n h = h * 6371.007180918475;\n h = h * 1.0e3;\n e[d >> 3] = h;\n T = j;\n return i | 0;\n }\n c = a + -1 | 0;\n a = 0;\n f = +e[i + 8 >> 3];\n g = +e[i + 16 >> 3];\n h = 0.0;\n do {\n a = a + 1 | 0;\n l = f;\n f = +e[i + 8 + (a << 4) >> 3];\n m = +u(+((f - l) * .5));\n k = g;\n g = +e[i + 8 + (a << 4) + 8 >> 3];\n k = +u(+((g - k) * .5));\n k = m * m + k * (+t(+l) * +t(+f) * k);\n h = h + +z(+ +r(+k), + +r(+(1.0 - k))) * 2.0;\n } while ((a | 0) != (c | 0));\n e[d >> 3] = h;\n i = 0;\n m = h;\n m = m * 6371.007180918475;\n m = m * 1.0e3;\n e[d >> 3] = m;\n T = j;\n return i | 0;\n }\n function Cc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n c = Fd(1, 12) | 0;\n if (!c) { I(27280, 27235, 49, 27293); }\n d = a + 4 | 0;\n e = b[d >> 2] | 0;\n if (e | 0) {\n e = e + 8 | 0;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n if (b[a >> 2] | 0) { I(27310, 27235, 61, 27333); }\n e = a;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n function Dc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n e = Dd(24) | 0;\n if (!e) { I(27347, 27235, 78, 27361); }\n b[e >> 2] = b[c >> 2];\n b[e + 4 >> 2] = b[c + 4 >> 2];\n b[e + 8 >> 2] = b[c + 8 >> 2];\n b[e + 12 >> 2] = b[c + 12 >> 2];\n b[e + 16 >> 2] = 0;\n c = a + 4 | 0;\n d = b[c >> 2] | 0;\n if (d | 0) {\n b[d + 16 >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n if (b[a >> 2] | 0) { I(27376, 27235, 82, 27361); }\n b[a >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n function Ec(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0;\n if (!a) { return; }\n e = 1;\n while (1) {\n c = b[a >> 2] | 0;\n if (c | 0) { do {\n d = b[c >> 2] | 0;\n if (d | 0) { do {\n f = d;\n d = b[d + 16 >> 2] | 0;\n Ed(f);\n } while ((d | 0) != 0); }\n f = c;\n c = b[c + 8 >> 2] | 0;\n Ed(f);\n } while ((c | 0) != 0); }\n c = a;\n a = b[a + 8 >> 2] | 0;\n if (!e) { Ed(c); }\n if (!a) { break; }else { e = 0; }\n }\n return;\n }\n function Fc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n f = 0,\n g = 0,\n h = 0.0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n r = 0,\n s = 0.0,\n t = 0.0,\n u = 0.0,\n v = 0.0,\n w = 0.0,\n x = 0.0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n H = 0,\n J = 0,\n K = 0;\n g = a + 8 | 0;\n if (b[g >> 2] | 0) {\n K = 1;\n return K | 0;\n }\n f = b[a >> 2] | 0;\n if (!f) {\n K = 0;\n return K | 0;\n }\n c = f;\n d = 0;\n do {\n d = d + 1 | 0;\n c = b[c + 8 >> 2] | 0;\n } while ((c | 0) != 0);\n if (d >>> 0 < 2) {\n K = 0;\n return K | 0;\n }\n H = Dd(d << 2) | 0;\n if (!H) { I(27396, 27235, 317, 27415); }\n G = Dd(d << 5) | 0;\n if (!G) { I(27437, 27235, 321, 27415); }\n b[a >> 2] = 0;\n z = a + 4 | 0;\n b[z >> 2] = 0;\n b[g >> 2] = 0;\n d = 0;\n F = 0;\n y = 0;\n n = 0;\n a: while (1) {\n m = b[f >> 2] | 0;\n if (m) {\n h = 0.0;\n i = m;\n do {\n k = +e[i + 8 >> 3];\n c = i;\n i = b[i + 16 >> 2] | 0;\n l = (i | 0) == 0;\n g = l ? m : i;\n j = +e[g + 8 >> 3];\n if (+q(+(k - j)) > 3.141592653589793) {\n K = 14;\n break;\n }\n h = h + (j - k) * (+e[c >> 3] + +e[g >> 3]);\n } while (!l);\n if ((K | 0) == 14) {\n K = 0;\n h = 0.0;\n c = m;\n do {\n x = +e[c + 8 >> 3];\n E = c + 16 | 0;\n D = b[E >> 2] | 0;\n D = (D | 0) == 0 ? m : D;\n w = +e[D + 8 >> 3];\n h = h + (+e[c >> 3] + +e[D >> 3]) * ((w < 0.0 ? w + 6.283185307179586 : w) - (x < 0.0 ? x + 6.283185307179586 : x));\n c = b[((c | 0) == 0 ? f : E) >> 2] | 0;\n } while ((c | 0) != 0);\n }\n if (h > 0.0) {\n b[H + (F << 2) >> 2] = f;\n F = F + 1 | 0;\n g = y;\n c = n;\n } else { K = 19; }\n } else { K = 19; }\n if ((K | 0) == 19) {\n K = 0;\n do { if (!d) {\n if (!n) {\n if (!(b[a >> 2] | 0)) {\n g = z;\n i = a;\n c = f;\n d = a;\n break;\n } else {\n K = 27;\n break a;\n }\n } else {\n g = z;\n i = n + 8 | 0;\n c = f;\n d = a;\n break;\n }\n } else {\n c = d + 8 | 0;\n if (b[c >> 2] | 0) {\n K = 21;\n break a;\n }\n d = Fd(1, 12) | 0;\n if (!d) {\n K = 23;\n break a;\n }\n b[c >> 2] = d;\n g = d + 4 | 0;\n i = d;\n c = n;\n } } while (0);\n b[i >> 2] = f;\n b[g >> 2] = f;\n i = G + (y << 5) | 0;\n l = b[f >> 2] | 0;\n if (l) {\n m = G + (y << 5) + 8 | 0;\n e[m >> 3] = 1797693134862315708145274.0e284;\n n = G + (y << 5) + 24 | 0;\n e[n >> 3] = 1797693134862315708145274.0e284;\n e[i >> 3] = -1797693134862315708145274.0e284;\n o = G + (y << 5) + 16 | 0;\n e[o >> 3] = -1797693134862315708145274.0e284;\n u = 1797693134862315708145274.0e284;\n v = -1797693134862315708145274.0e284;\n g = 0;\n p = l;\n k = 1797693134862315708145274.0e284;\n s = 1797693134862315708145274.0e284;\n t = -1797693134862315708145274.0e284;\n j = -1797693134862315708145274.0e284;\n while (1) {\n h = +e[p >> 3];\n x = +e[p + 8 >> 3];\n p = b[p + 16 >> 2] | 0;\n r = (p | 0) == 0;\n w = +e[(r ? l : p) + 8 >> 3];\n if (h < k) {\n e[m >> 3] = h;\n k = h;\n }\n if (x < s) {\n e[n >> 3] = x;\n s = x;\n }\n if (h > t) { e[i >> 3] = h; }else { h = t; }\n if (x > j) {\n e[o >> 3] = x;\n j = x;\n }\n u = x > 0.0 & x < u ? x : u;\n v = x < 0.0 & x > v ? x : v;\n g = g | +q(+(x - w)) > 3.141592653589793;\n if (r) { break; }else { t = h; }\n }\n if (g) {\n e[o >> 3] = v;\n e[n >> 3] = u;\n }\n } else {\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n b[i + 8 >> 2] = 0;\n b[i + 12 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n b[i + 20 >> 2] = 0;\n b[i + 24 >> 2] = 0;\n b[i + 28 >> 2] = 0;\n }\n g = y + 1 | 0;\n }\n E = f + 8 | 0;\n f = b[E >> 2] | 0;\n b[E >> 2] = 0;\n if (!f) {\n K = 45;\n break;\n } else {\n y = g;\n n = c;\n }\n }\n if ((K | 0) == 21) { I(27213, 27235, 35, 27247); }else if ((K | 0) == 23) { I(27267, 27235, 37, 27247); }else if ((K | 0) == 27) { I(27310, 27235, 61, 27333); }else if ((K | 0) == 45) {\n b: do { if ((F | 0) > 0) {\n E = (g | 0) == 0;\n C = g << 2;\n D = (a | 0) == 0;\n B = 0;\n c = 0;\n while (1) {\n A = b[H + (B << 2) >> 2] | 0;\n if (!E) {\n y = Dd(C) | 0;\n if (!y) {\n K = 50;\n break;\n }\n z = Dd(C) | 0;\n if (!z) {\n K = 52;\n break;\n }\n c: do { if (!D) {\n g = 0;\n d = 0;\n i = a;\n while (1) {\n f = G + (g << 5) | 0;\n if (Gc(b[i >> 2] | 0, f, b[A >> 2] | 0) | 0) {\n b[y + (d << 2) >> 2] = i;\n b[z + (d << 2) >> 2] = f;\n r = d + 1 | 0;\n } else { r = d; }\n i = b[i + 8 >> 2] | 0;\n if (!i) { break; }else {\n g = g + 1 | 0;\n d = r;\n }\n }\n if ((r | 0) > 0) {\n f = b[y >> 2] | 0;\n if ((r | 0) == 1) { d = f; }else {\n o = 0;\n p = -1;\n d = f;\n n = f;\n while (1) {\n l = b[n >> 2] | 0;\n f = 0;\n i = 0;\n while (1) {\n g = b[b[y + (i << 2) >> 2] >> 2] | 0;\n if ((g | 0) == (l | 0)) { m = f; }else { m = f + ((Gc(g, b[z + (i << 2) >> 2] | 0, b[l >> 2] | 0) | 0) & 1) | 0; }\n i = i + 1 | 0;\n if ((i | 0) == (r | 0)) { break; }else { f = m; }\n }\n g = (m | 0) > (p | 0);\n d = g ? n : d;\n f = o + 1 | 0;\n if ((f | 0) == (r | 0)) { break c; }\n o = f;\n p = g ? m : p;\n n = b[y + (f << 2) >> 2] | 0;\n }\n }\n } else { d = 0; }\n } else { d = 0; } } while (0);\n Ed(y);\n Ed(z);\n if (d) {\n g = d + 4 | 0;\n f = b[g >> 2] | 0;\n if (!f) {\n if (b[d >> 2] | 0) {\n K = 70;\n break;\n }\n } else { d = f + 8 | 0; }\n b[d >> 2] = A;\n b[g >> 2] = A;\n } else { K = 73; }\n } else { K = 73; }\n if ((K | 0) == 73) {\n K = 0;\n c = b[A >> 2] | 0;\n if (c | 0) { do {\n z = c;\n c = b[c + 16 >> 2] | 0;\n Ed(z);\n } while ((c | 0) != 0); }\n Ed(A);\n c = 1;\n }\n B = B + 1 | 0;\n if ((B | 0) >= (F | 0)) {\n J = c;\n break b;\n }\n }\n if ((K | 0) == 50) { I(27452, 27235, 249, 27471); }else if ((K | 0) == 52) { I(27490, 27235, 252, 27471); }else if ((K | 0) == 70) { I(27310, 27235, 61, 27333); }\n } else { J = 0; } } while (0);\n Ed(H);\n Ed(G);\n K = J;\n return K | 0;\n }\n return 0;\n }\n function Gc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0;\n if (!(Ca(c, d) | 0)) {\n a = 0;\n return a | 0;\n }\n c = Aa(c) | 0;\n f = +e[d >> 3];\n g = +e[d + 8 >> 3];\n g = c & g < 0.0 ? g + 6.283185307179586 : g;\n a = b[a >> 2] | 0;\n if (!a) {\n a = 0;\n return a | 0;\n }\n if (c) {\n c = 0;\n l = g;\n d = a;\n a: while (1) {\n while (1) {\n i = +e[d >> 3];\n g = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n j = +e[m + 8 >> 3];\n if (i > h) {\n k = i;\n i = j;\n } else {\n k = h;\n h = i;\n i = g;\n g = j;\n }\n f = f == h | f == k ? f + 2.220446049250313e-16 : f;\n if (!(f < h | f > k)) { break; }\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break a;\n }\n }\n j = i < 0.0 ? i + 6.283185307179586 : i;\n i = g < 0.0 ? g + 6.283185307179586 : g;\n l = j == l | i == l ? l + -2.220446049250313e-16 : l;\n k = j + (i - j) * ((f - h) / (k - h));\n if ((k < 0.0 ? k + 6.283185307179586 : k) > l) { c = c ^ 1; }\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break;\n }\n }\n if ((d | 0) == 22) { return c | 0; }\n } else {\n c = 0;\n l = g;\n d = a;\n b: while (1) {\n while (1) {\n i = +e[d >> 3];\n g = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n j = +e[m + 8 >> 3];\n if (i > h) {\n k = i;\n i = j;\n } else {\n k = h;\n h = i;\n i = g;\n g = j;\n }\n f = f == h | f == k ? f + 2.220446049250313e-16 : f;\n if (!(f < h | f > k)) { break; }\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break b;\n }\n }\n l = i == l | g == l ? l + -2.220446049250313e-16 : l;\n if (i + (g - i) * ((f - h) / (k - h)) > l) { c = c ^ 1; }\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break;\n }\n }\n if ((d | 0) == 22) { return c | 0; }\n }\n return 0;\n }\n function Hc(c, d, e, f, g) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0;\n u = T;\n T = T + 32 | 0;\n t = u + 16 | 0;\n s = u;\n h = Qd(c | 0, d | 0, 52) | 0;\n H() | 0;\n h = h & 15;\n p = Qd(e | 0, f | 0, 52) | 0;\n H() | 0;\n if ((h | 0) != (p & 15 | 0)) {\n t = 12;\n T = u;\n return t | 0;\n }\n l = Qd(c | 0, d | 0, 45) | 0;\n H() | 0;\n l = l & 127;\n m = Qd(e | 0, f | 0, 45) | 0;\n H() | 0;\n m = m & 127;\n if (l >>> 0 > 121 | m >>> 0 > 121) {\n t = 5;\n T = u;\n return t | 0;\n }\n p = (l | 0) != (m | 0);\n if (p) {\n j = wa(l, m) | 0;\n if ((j | 0) == 7) {\n t = 1;\n T = u;\n return t | 0;\n }\n k = wa(m, l) | 0;\n if ((k | 0) == 7) { I(27514, 27538, 161, 27548); }else {\n q = j;\n i = k;\n }\n } else {\n q = 0;\n i = 0;\n }\n n = oa(l) | 0;\n o = oa(m) | 0;\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n do { if (!q) {\n Xb(e, f, t) | 0;\n if ((n | 0) != 0 & (o | 0) != 0) {\n if ((m | 0) != (l | 0)) { I(27621, 27538, 261, 27548); }\n i = Pb(c, d) | 0;\n h = Pb(e, f) | 0;\n if (!((i | 0) == 7 | (h | 0) == 7)) {\n if (!(a[22e3 + (i * 7 | 0) + h >> 0] | 0)) {\n i = b[21168 + (i * 28 | 0) + (h << 2) >> 2] | 0;\n if ((i | 0) > 0) {\n j = t + 4 | 0;\n h = 0;\n do {\n _a(j);\n h = h + 1 | 0;\n } while ((h | 0) != (i | 0));\n r = 51;\n } else { r = 51; }\n } else { h = 1; }\n } else { h = 5; }\n } else { r = 51; }\n } else {\n m = b[4272 + (l * 28 | 0) + (q << 2) >> 2] | 0;\n j = (m | 0) > 0;\n if (!o) {\n if (j) {\n l = 0;\n k = e;\n j = f;\n do {\n k = Tb(k, j) | 0;\n j = H() | 0;\n i = ab(i) | 0;\n l = l + 1 | 0;\n } while ((l | 0) != (m | 0));\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n } else if (j) {\n l = 0;\n k = e;\n j = f;\n do {\n k = Sb(k, j) | 0;\n j = H() | 0;\n i = ab(i) | 0;\n if ((i | 0) == 1) { i = ab(1) | 0; }\n l = l + 1 | 0;\n } while ((l | 0) != (m | 0));\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n Xb(l, k, t) | 0;\n if (!p) { I(27563, 27538, 191, 27548); }\n j = (n | 0) != 0;\n i = (o | 0) != 0;\n if (j & i) { I(27590, 27538, 192, 27548); }\n if (!j) {\n if (i) {\n i = Pb(l, k) | 0;\n if ((i | 0) == 7) {\n h = 5;\n break;\n }\n if (a[22e3 + (i * 7 | 0) + m >> 0] | 0) {\n h = 1;\n break;\n }\n l = 0;\n k = b[21168 + (m * 28 | 0) + (i << 2) >> 2] | 0;\n } else {\n l = 0;\n k = 0;\n }\n } else {\n i = Pb(c, d) | 0;\n if ((i | 0) == 7) {\n h = 5;\n break;\n }\n if (a[22e3 + (i * 7 | 0) + q >> 0] | 0) {\n h = 1;\n break;\n }\n k = b[21168 + (i * 28 | 0) + (q << 2) >> 2] | 0;\n l = k;\n }\n if ((l | k | 0) < 0) { h = 5; }else {\n if ((k | 0) > 0) {\n j = t + 4 | 0;\n i = 0;\n do {\n _a(j);\n i = i + 1 | 0;\n } while ((i | 0) != (k | 0));\n }\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[s + 8 >> 2] = 0;\n Ya(s, q);\n if (h | 0) { while (1) {\n if (!(Vb(h) | 0)) { Xa(s); }else { Wa(s); }\n if ((h | 0) > 1) { h = h + -1 | 0; }else { break; }\n } }\n if ((l | 0) > 0) {\n h = 0;\n do {\n _a(s);\n h = h + 1 | 0;\n } while ((h | 0) != (l | 0));\n }\n r = t + 4 | 0;\n Oa(r, s, r);\n Ma(r);\n r = 51;\n }\n } } while (0);\n if ((r | 0) == 51) {\n h = t + 4 | 0;\n b[g >> 2] = b[h >> 2];\n b[g + 4 >> 2] = b[h + 4 >> 2];\n b[g + 8 >> 2] = b[h + 8 >> 2];\n h = 0;\n }\n t = h;\n T = u;\n return t | 0;\n }\n function Ic(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0;\n q = T;\n T = T + 48 | 0;\n k = q + 36 | 0;\n h = q + 24 | 0;\n i = q + 12 | 0;\n j = q;\n f = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n f = f & 15;\n n = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n n = n & 127;\n if (n >>> 0 > 121) {\n e = 5;\n T = q;\n return e | 0;\n }\n l = oa(n) | 0;\n Rd(f | 0, 0, 52) | 0;\n r = H() | 0 | 134225919;\n g = e;\n b[g >> 2] = -1;\n b[g + 4 >> 2] = r;\n if (!f) {\n f = Ra(d) | 0;\n if ((f | 0) == 7) {\n r = 1;\n T = q;\n return r | 0;\n }\n f = va(n, f) | 0;\n if ((f | 0) == 127) {\n r = 1;\n T = q;\n return r | 0;\n }\n o = Rd(f | 0, 0, 45) | 0;\n p = H() | 0;\n n = e;\n p = b[n + 4 >> 2] & -1040385 | p;\n r = e;\n b[r >> 2] = b[n >> 2] | o;\n b[r + 4 >> 2] = p;\n r = 0;\n T = q;\n return r | 0;\n }\n b[k >> 2] = b[d >> 2];\n b[k + 4 >> 2] = b[d + 4 >> 2];\n b[k + 8 >> 2] = b[d + 8 >> 2];\n d = f;\n while (1) {\n g = d;\n d = d + -1 | 0;\n b[h >> 2] = b[k >> 2];\n b[h + 4 >> 2] = b[k + 4 >> 2];\n b[h + 8 >> 2] = b[k + 8 >> 2];\n if (!(Vb(g) | 0)) {\n f = Ta(k) | 0;\n if (f | 0) {\n d = 13;\n break;\n }\n b[i >> 2] = b[k >> 2];\n b[i + 4 >> 2] = b[k + 4 >> 2];\n b[i + 8 >> 2] = b[k + 8 >> 2];\n Xa(i);\n } else {\n f = Sa(k) | 0;\n if (f | 0) {\n d = 13;\n break;\n }\n b[i >> 2] = b[k >> 2];\n b[i + 4 >> 2] = b[k + 4 >> 2];\n b[i + 8 >> 2] = b[k + 8 >> 2];\n Wa(i);\n }\n Pa(h, i, j);\n Ma(j);\n f = e;\n t = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n u = (15 - g | 0) * 3 | 0;\n s = Rd(7, 0, u | 0) | 0;\n f = f & ~(H() | 0);\n u = Rd(Ra(j) | 0, 0, u | 0) | 0;\n f = H() | 0 | f;\n r = e;\n b[r >> 2] = u | t & ~s;\n b[r + 4 >> 2] = f;\n if ((g | 0) <= 1) {\n d = 14;\n break;\n }\n }\n a: do { if ((d | 0) != 13) { if ((d | 0) == 14) { if (((b[k >> 2] | 0) <= 1 ? (b[k + 4 >> 2] | 0) <= 1 : 0) ? (b[k + 8 >> 2] | 0) <= 1 : 0) {\n d = Ra(k) | 0;\n f = va(n, d) | 0;\n if ((f | 0) == 127) { j = 0; }else { j = oa(f) | 0; }\n b: do { if (!d) {\n if ((l | 0) != 0 & (j | 0) != 0) {\n d = Pb(a, c) | 0;\n g = e;\n g = Pb(b[g >> 2] | 0, b[g + 4 >> 2] | 0) | 0;\n if ((d | 0) == 7 | (g | 0) == 7) {\n f = 5;\n break a;\n }\n g = b[21376 + (d * 28 | 0) + (g << 2) >> 2] | 0;\n if ((g | 0) < 0) {\n f = 5;\n break a;\n }\n if (!g) { d = 59; }else {\n i = e;\n d = 0;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n do {\n h = Rb(h, i) | 0;\n i = H() | 0;\n u = e;\n b[u >> 2] = h;\n b[u + 4 >> 2] = i;\n d = d + 1 | 0;\n } while ((d | 0) < (g | 0));\n d = 58;\n }\n } else { d = 58; }\n } else {\n if (l) {\n f = Pb(a, c) | 0;\n if ((f | 0) == 7) {\n f = 5;\n break a;\n }\n g = b[21376 + (f * 28 | 0) + (d << 2) >> 2] | 0;\n if ((g | 0) > 0) {\n f = d;\n d = 0;\n do {\n f = $a(f) | 0;\n d = d + 1 | 0;\n } while ((d | 0) != (g | 0));\n } else { f = d; }\n if ((f | 0) == 1) {\n f = 9;\n break a;\n }\n d = va(n, f) | 0;\n if ((d | 0) == 127) { I(27648, 27538, 411, 27678); }\n if (!(oa(d) | 0)) {\n p = d;\n o = g;\n m = f;\n } else { I(27693, 27538, 412, 27678); }\n } else {\n p = f;\n o = 0;\n m = d;\n }\n i = b[4272 + (n * 28 | 0) + (m << 2) >> 2] | 0;\n if ((i | 0) <= -1) { I(27724, 27538, 419, 27678); }\n if (!j) {\n if ((o | 0) < 0) {\n f = 5;\n break a;\n }\n if (o | 0) {\n g = e;\n f = 0;\n d = b[g >> 2] | 0;\n g = b[g + 4 >> 2] | 0;\n do {\n d = Rb(d, g) | 0;\n g = H() | 0;\n u = e;\n b[u >> 2] = d;\n b[u + 4 >> 2] = g;\n f = f + 1 | 0;\n } while ((f | 0) < (o | 0));\n }\n if ((i | 0) <= 0) {\n f = p;\n d = 58;\n break;\n }\n g = e;\n f = 0;\n d = b[g >> 2] | 0;\n g = b[g + 4 >> 2] | 0;\n while (1) {\n d = Rb(d, g) | 0;\n g = H() | 0;\n u = e;\n b[u >> 2] = d;\n b[u + 4 >> 2] = g;\n f = f + 1 | 0;\n if ((f | 0) == (i | 0)) {\n f = p;\n d = 58;\n break b;\n }\n }\n }\n h = wa(p, n) | 0;\n if ((h | 0) == 7) { I(27514, 27538, 428, 27678); }\n f = e;\n d = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n if ((i | 0) > 0) {\n g = 0;\n do {\n d = Rb(d, f) | 0;\n f = H() | 0;\n u = e;\n b[u >> 2] = d;\n b[u + 4 >> 2] = f;\n g = g + 1 | 0;\n } while ((g | 0) != (i | 0));\n }\n f = Pb(d, f) | 0;\n if ((f | 0) == 7) { I(27795, 27538, 440, 27678); }\n d = pa(p) | 0;\n d = b[(d ? 21792 : 21584) + (h * 28 | 0) + (f << 2) >> 2] | 0;\n if ((d | 0) < 0) { I(27795, 27538, 454, 27678); }\n if (!d) {\n f = p;\n d = 58;\n } else {\n h = e;\n f = 0;\n g = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n do {\n g = Qb(g, h) | 0;\n h = H() | 0;\n u = e;\n b[u >> 2] = g;\n b[u + 4 >> 2] = h;\n f = f + 1 | 0;\n } while ((f | 0) < (d | 0));\n f = p;\n d = 58;\n }\n } } while (0);\n if ((d | 0) == 58) { if (j) { d = 59; } }\n if ((d | 0) == 59) {\n u = e;\n if ((Pb(b[u >> 2] | 0, b[u + 4 >> 2] | 0) | 0) == 1) {\n f = 9;\n break;\n }\n }\n u = e;\n s = b[u >> 2] | 0;\n u = b[u + 4 >> 2] & -1040385;\n t = Rd(f | 0, 0, 45) | 0;\n u = u | (H() | 0);\n f = e;\n b[f >> 2] = s | t;\n b[f + 4 >> 2] = u;\n f = 0;\n } else { f = 1; } } } } while (0);\n u = f;\n T = q;\n return u | 0;\n }\n function Jc(a, b, c, d, e, f) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0;\n h = T;\n T = T + 16 | 0;\n g = h;\n if (!e) {\n a = Hc(a, b, c, d, g) | 0;\n if (!a) {\n eb(g, f);\n a = 0;\n }\n } else { a = 15; }\n T = h;\n return a | 0;\n }\n function Kc(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0;\n g = T;\n T = T + 16 | 0;\n f = g;\n if (!d) {\n c = fb(c, f) | 0;\n if (!c) { c = Ic(a, b, f, e) | 0; }\n } else { c = 15; }\n T = g;\n return c | 0;\n }\n function Lc(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = T;\n T = T + 32 | 0;\n h = j + 12 | 0;\n i = j;\n g = Hc(a, c, a, c, h) | 0;\n if (g | 0) {\n i = g;\n T = j;\n return i | 0;\n }\n a = Hc(a, c, d, e, i) | 0;\n if (a | 0) {\n i = a;\n T = j;\n return i | 0;\n }\n h = db(h, i) | 0;\n i = f;\n b[i >> 2] = h;\n b[i + 4 >> 2] = ((h | 0) < 0) << 31 >> 31;\n i = 0;\n T = j;\n return i | 0;\n }\n function Mc(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = T;\n T = T + 32 | 0;\n h = j + 12 | 0;\n i = j;\n g = Hc(a, c, a, c, h) | 0;\n if (!g) {\n g = Hc(a, c, d, e, i) | 0;\n if (!g) {\n e = db(h, i) | 0;\n e = Gd(e | 0, ((e | 0) < 0) << 31 >> 31 | 0, 1, 0) | 0;\n h = H() | 0;\n i = f;\n b[i >> 2] = e;\n b[i + 4 >> 2] = h;\n i = 0;\n T = j;\n return i | 0;\n }\n }\n i = g;\n T = j;\n return i | 0;\n }\n function Nc(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0.0,\n j = 0.0,\n k = 0,\n l = 0.0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n r = 0.0,\n s = 0,\n t = 0.0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0.0;\n z = T;\n T = T + 48 | 0;\n x = z + 24 | 0;\n h = z + 12 | 0;\n y = z;\n g = Hc(a, c, a, c, x) | 0;\n if (!g) {\n g = Hc(a, c, d, e, h) | 0;\n if (!g) {\n v = db(x, h) | 0;\n w = ((v | 0) < 0) << 31 >> 31;\n b[x >> 2] = 0;\n b[x + 4 >> 2] = 0;\n b[x + 8 >> 2] = 0;\n b[h >> 2] = 0;\n b[h + 4 >> 2] = 0;\n b[h + 8 >> 2] = 0;\n if (Hc(a, c, a, c, x) | 0) { I(27795, 27538, 692, 27747); }\n if (Hc(a, c, d, e, h) | 0) { I(27795, 27538, 697, 27747); }\n gb(x);\n gb(h);\n l = (v | 0) == 0 ? 0.0 : 1.0 / +(v | 0);\n d = b[x >> 2] | 0;\n r = l * +((b[h >> 2] | 0) - d | 0);\n s = x + 4 | 0;\n e = b[s >> 2] | 0;\n t = l * +((b[h + 4 >> 2] | 0) - e | 0);\n u = x + 8 | 0;\n g = b[u >> 2] | 0;\n l = l * +((b[h + 8 >> 2] | 0) - g | 0);\n b[y >> 2] = d;\n m = y + 4 | 0;\n b[m >> 2] = e;\n n = y + 8 | 0;\n b[n >> 2] = g;\n a: do { if ((v | 0) < 0) { g = 0; }else {\n o = 0;\n p = 0;\n while (1) {\n j = +(p >>> 0) + 4294967296.0 * +(o | 0);\n A = r * j + +(d | 0);\n i = t * j + +(e | 0);\n j = l * j + +(g | 0);\n d = ~~+Vd(+A);\n h = ~~+Vd(+i);\n g = ~~+Vd(+j);\n A = +q(+(+(d | 0) - A));\n i = +q(+(+(h | 0) - i));\n j = +q(+(+(g | 0) - j));\n do { if (!(A > i & A > j)) {\n k = 0 - d | 0;\n if (i > j) {\n e = k - g | 0;\n break;\n } else {\n e = h;\n g = k - h | 0;\n break;\n }\n } else {\n d = 0 - (h + g) | 0;\n e = h;\n } } while (0);\n b[y >> 2] = d;\n b[m >> 2] = e;\n b[n >> 2] = g;\n hb(y);\n g = Ic(a, c, y, f + (p << 3) | 0) | 0;\n if (g | 0) { break a; }\n if (!((o | 0) < (w | 0) | (o | 0) == (w | 0) & p >>> 0 < v >>> 0)) {\n g = 0;\n break a;\n }\n d = Gd(p | 0, o | 0, 1, 0) | 0;\n e = H() | 0;\n o = e;\n p = d;\n d = b[x >> 2] | 0;\n e = b[s >> 2] | 0;\n g = b[u >> 2] | 0;\n }\n } } while (0);\n y = g;\n T = z;\n return y | 0;\n }\n }\n y = g;\n T = z;\n return y | 0;\n }\n function Oc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n if ((c | 0) == 0 & (d | 0) == 0) {\n e = 0;\n f = 1;\n G(e | 0);\n return f | 0;\n }\n f = a;\n e = b;\n a = 1;\n b = 0;\n do {\n g = (c & 1 | 0) == 0 & 0 == 0;\n a = Md((g ? 1 : f) | 0, (g ? 0 : e) | 0, a | 0, b | 0) | 0;\n b = H() | 0;\n c = Pd(c | 0, d | 0, 1) | 0;\n d = H() | 0;\n f = Md(f | 0, e | 0, f | 0, e | 0) | 0;\n e = H() | 0;\n } while (!((c | 0) == 0 & (d | 0) == 0));\n G(b | 0);\n return a | 0;\n }\n function Pc(a, c, d, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0.0,\n l = 0.0,\n m = 0.0;\n j = T;\n T = T + 16 | 0;\n h = j;\n i = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n i = i & 15;\n do { if (!i) {\n g = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n g = g & 127;\n if (g >>> 0 > 121) {\n i = 5;\n T = j;\n return i | 0;\n } else {\n h = 22064 + (g << 5) | 0;\n b[d >> 2] = b[h >> 2];\n b[d + 4 >> 2] = b[h + 4 >> 2];\n b[d + 8 >> 2] = b[h + 8 >> 2];\n b[d + 12 >> 2] = b[h + 12 >> 2];\n b[d + 16 >> 2] = b[h + 16 >> 2];\n b[d + 20 >> 2] = b[h + 20 >> 2];\n b[d + 24 >> 2] = b[h + 24 >> 2];\n b[d + 28 >> 2] = b[h + 28 >> 2];\n break;\n }\n } else {\n g = Zb(a, c, h) | 0;\n if (!g) {\n l = +e[h >> 3];\n k = 1.0 / +t(+l);\n m = +e[25968 + (i << 3) >> 3];\n e[d >> 3] = l + m;\n e[d + 8 >> 3] = l - m;\n l = +e[h + 8 >> 3];\n k = m * k;\n e[d + 16 >> 3] = k + l;\n e[d + 24 >> 3] = l - k;\n break;\n }\n i = g;\n T = j;\n return i | 0;\n } } while (0);\n Ja(d, f ? 1.4 : 1.1);\n f = 26096 + (i << 3) | 0;\n if ((b[f >> 2] | 0) == (a | 0) ? (b[f + 4 >> 2] | 0) == (c | 0) : 0) { e[d >> 3] = 1.5707963267948966; }\n i = 26224 + (i << 3) | 0;\n if ((b[i >> 2] | 0) == (a | 0) ? (b[i + 4 >> 2] | 0) == (c | 0) : 0) { e[d + 8 >> 3] = -1.5707963267948966; }\n if (!(+e[d >> 3] == 1.5707963267948966) ? !(+e[d + 8 >> 3] == -1.5707963267948966) : 0) {\n i = 0;\n T = j;\n return i | 0;\n }\n e[d + 16 >> 3] = 3.141592653589793;\n e[d + 24 >> 3] = -3.141592653589793;\n i = 0;\n T = j;\n return i | 0;\n }\n function Qc(c, d, e, f) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0;\n l = T;\n T = T + 48 | 0;\n i = l + 32 | 0;\n h = l + 40 | 0;\n j = l;\n Eb(i, 0, 0, 0);\n k = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n do { if (e >>> 0 <= 15) {\n g = Xc(f) | 0;\n if (g | 0) {\n f = j;\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[j + 8 >> 2] = g;\n b[j + 12 >> 2] = -1;\n f = j + 16 | 0;\n k = j + 29 | 0;\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[f + 8 >> 2] = 0;\n a[f + 12 >> 0] = 0;\n a[k >> 0] = a[h >> 0] | 0;\n a[k + 1 >> 0] = a[h + 1 >> 0] | 0;\n a[k + 2 >> 0] = a[h + 2 >> 0] | 0;\n break;\n }\n g = Fd((b[d + 8 >> 2] | 0) + 1 | 0, 32) | 0;\n if (!g) {\n f = j;\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[j + 8 >> 2] = 13;\n b[j + 12 >> 2] = -1;\n f = j + 16 | 0;\n k = j + 29 | 0;\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[f + 8 >> 2] = 0;\n a[f + 12 >> 0] = 0;\n a[k >> 0] = a[h >> 0] | 0;\n a[k + 1 >> 0] = a[h + 1 >> 0] | 0;\n a[k + 2 >> 0] = a[h + 2 >> 0] | 0;\n break;\n } else {\n Yc(d, g);\n m = j;\n b[m >> 2] = k;\n b[m + 4 >> 2] = i;\n b[j + 8 >> 2] = 0;\n b[j + 12 >> 2] = e;\n b[j + 16 >> 2] = f;\n b[j + 20 >> 2] = d;\n b[j + 24 >> 2] = g;\n a[j + 28 >> 0] = 0;\n k = j + 29 | 0;\n a[k >> 0] = a[h >> 0] | 0;\n a[k + 1 >> 0] = a[h + 1 >> 0] | 0;\n a[k + 2 >> 0] = a[h + 2 >> 0] | 0;\n break;\n }\n } else {\n k = j;\n b[k >> 2] = 0;\n b[k + 4 >> 2] = 0;\n b[j + 8 >> 2] = 4;\n b[j + 12 >> 2] = -1;\n k = j + 16 | 0;\n m = j + 29 | 0;\n b[k >> 2] = 0;\n b[k + 4 >> 2] = 0;\n b[k + 8 >> 2] = 0;\n a[k + 12 >> 0] = 0;\n a[m >> 0] = a[h >> 0] | 0;\n a[m + 1 >> 0] = a[h + 1 >> 0] | 0;\n a[m + 2 >> 0] = a[h + 2 >> 0] | 0;\n } } while (0);\n Rc(j);\n b[c >> 2] = b[j >> 2];\n b[c + 4 >> 2] = b[j + 4 >> 2];\n b[c + 8 >> 2] = b[j + 8 >> 2];\n b[c + 12 >> 2] = b[j + 12 >> 2];\n b[c + 16 >> 2] = b[j + 16 >> 2];\n b[c + 20 >> 2] = b[j + 20 >> 2];\n b[c + 24 >> 2] = b[j + 24 >> 2];\n b[c + 28 >> 2] = b[j + 28 >> 2];\n T = l;\n return;\n }\n function Rc(c) {\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0;\n w = T;\n T = T + 336 | 0;\n p = w + 168 | 0;\n q = w;\n f = c;\n e = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n if ((e | 0) == 0 & (f | 0) == 0) {\n T = w;\n return;\n }\n d = c + 28 | 0;\n if (!(a[d >> 0] | 0)) { a[d >> 0] = 1; }else {\n e = Sc(e, f) | 0;\n f = H() | 0;\n }\n v = c + 20 | 0;\n if (!(b[b[v >> 2] >> 2] | 0)) {\n d = c + 24 | 0;\n e = b[d >> 2] | 0;\n if (e | 0) { Ed(e); }\n u = c;\n b[u >> 2] = 0;\n b[u + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[v >> 2] = 0;\n b[c + 12 >> 2] = -1;\n b[c + 16 >> 2] = 0;\n b[d >> 2] = 0;\n T = w;\n return;\n }\n u = c + 16 | 0;\n d = b[u >> 2] | 0;\n g = d & 15;\n a: do { if (!((e | 0) == 0 & (f | 0) == 0)) {\n r = c + 12 | 0;\n n = (g | 0) == 3;\n m = d & 255;\n k = (g | 1 | 0) == 3;\n o = c + 24 | 0;\n l = (g + -1 | 0) >>> 0 < 3;\n i = (g | 2 | 0) == 3;\n j = q + 8 | 0;\n b: while (1) {\n h = Qd(e | 0, f | 0, 52) | 0;\n H() | 0;\n h = h & 15;\n if ((h | 0) == (b[r >> 2] | 0)) {\n switch (m & 15) {\n case 0:\n case 2:\n case 3:\n {\n g = Zb(e, f, p) | 0;\n if (g | 0) {\n s = 15;\n break b;\n }\n if (Zc(b[v >> 2] | 0, b[o >> 2] | 0, p) | 0) {\n s = 19;\n break b;\n }\n break;\n }\n default:\n\n }\n if (k ? (g = b[(b[v >> 2] | 0) + 4 >> 2] | 0, b[p >> 2] = b[g >> 2], b[p + 4 >> 2] = b[g + 4 >> 2], b[p + 8 >> 2] = b[g + 8 >> 2], b[p + 12 >> 2] = b[g + 12 >> 2], Ca(26832, p) | 0) : 0) {\n if (Wb(b[(b[v >> 2] | 0) + 4 >> 2] | 0, h, q) | 0) {\n s = 25;\n break;\n }\n g = q;\n if ((b[g >> 2] | 0) == (e | 0) ? (b[g + 4 >> 2] | 0) == (f | 0) : 0) {\n s = 29;\n break;\n }\n }\n if (l) {\n g = _b(e, f, p) | 0;\n if (g | 0) {\n s = 32;\n break;\n }\n if (Pc(e, f, q, 0) | 0) {\n s = 36;\n break;\n }\n if (i ? _c(b[v >> 2] | 0, b[o >> 2] | 0, p, q) | 0 : 0) {\n s = 42;\n break;\n }\n if (k ? ad(b[v >> 2] | 0, b[o >> 2] | 0, p, q) | 0 : 0) {\n s = 42;\n break;\n }\n }\n if (n) {\n d = Pc(e, f, p, 1) | 0;\n g = b[o >> 2] | 0;\n if (d | 0) {\n s = 45;\n break;\n }\n if (Da(g, p) | 0) {\n Ga(q, p);\n if (Fa(p, b[o >> 2] | 0) | 0) {\n s = 53;\n break;\n }\n if (Zc(b[v >> 2] | 0, b[o >> 2] | 0, j) | 0) {\n s = 53;\n break;\n }\n if (ad(b[v >> 2] | 0, b[o >> 2] | 0, q, p) | 0) {\n s = 53;\n break;\n }\n }\n }\n }\n do { if ((h | 0) < (b[r >> 2] | 0)) {\n d = Pc(e, f, p, 1) | 0;\n g = b[o >> 2] | 0;\n if (d | 0) {\n s = 58;\n break b;\n }\n if (!(Da(g, p) | 0)) {\n s = 73;\n break;\n }\n if (Fa(b[o >> 2] | 0, p) | 0 ? (Ga(q, p), _c(b[v >> 2] | 0, b[o >> 2] | 0, q, p) | 0) : 0) {\n s = 65;\n break b;\n }\n e = Kb(e, f, h + 1 | 0, q) | 0;\n if (e | 0) {\n s = 67;\n break b;\n }\n f = q;\n e = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n } else { s = 73; } } while (0);\n if ((s | 0) == 73) {\n s = 0;\n e = Sc(e, f) | 0;\n f = H() | 0;\n }\n if ((e | 0) == 0 & (f | 0) == 0) {\n t = o;\n break a;\n }\n }\n switch (s | 0) {\n case 15:\n {\n d = b[o >> 2] | 0;\n if (d | 0) { Ed(d); }\n s = c;\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[v >> 2] = 0;\n b[r >> 2] = -1;\n b[u >> 2] = 0;\n b[o >> 2] = 0;\n b[c + 8 >> 2] = g;\n s = 20;\n break;\n }\n case 19:\n {\n b[c >> 2] = e;\n b[c + 4 >> 2] = f;\n s = 20;\n break;\n }\n case 25:\n {\n I(27795, 27761, 470, 27772);\n break;\n }\n case 29:\n {\n b[c >> 2] = e;\n b[c + 4 >> 2] = f;\n T = w;\n return;\n }\n case 32:\n {\n d = b[o >> 2] | 0;\n if (d | 0) { Ed(d); }\n t = c;\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[v >> 2] = 0;\n b[r >> 2] = -1;\n b[u >> 2] = 0;\n b[o >> 2] = 0;\n b[c + 8 >> 2] = g;\n T = w;\n return;\n }\n case 36:\n {\n I(27795, 27761, 493, 27772);\n break;\n }\n case 42:\n {\n b[c >> 2] = e;\n b[c + 4 >> 2] = f;\n T = w;\n return;\n }\n case 45:\n {\n if (g | 0) { Ed(g); }\n s = c;\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[v >> 2] = 0;\n b[r >> 2] = -1;\n b[u >> 2] = 0;\n b[o >> 2] = 0;\n b[c + 8 >> 2] = d;\n s = 55;\n break;\n }\n case 53:\n {\n b[c >> 2] = e;\n b[c + 4 >> 2] = f;\n s = 55;\n break;\n }\n case 58:\n {\n if (g | 0) { Ed(g); }\n s = c;\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[v >> 2] = 0;\n b[r >> 2] = -1;\n b[u >> 2] = 0;\n b[o >> 2] = 0;\n b[c + 8 >> 2] = d;\n s = 71;\n break;\n }\n case 65:\n {\n b[c >> 2] = e;\n b[c + 4 >> 2] = f;\n s = 71;\n break;\n }\n case 67:\n {\n d = b[o >> 2] | 0;\n if (d | 0) { Ed(d); }\n t = c;\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[v >> 2] = 0;\n b[r >> 2] = -1;\n b[u >> 2] = 0;\n b[o >> 2] = 0;\n b[c + 8 >> 2] = e;\n T = w;\n return;\n }\n }\n if ((s | 0) == 20) {\n T = w;\n return;\n } else if ((s | 0) == 55) {\n T = w;\n return;\n } else if ((s | 0) == 71) {\n T = w;\n return;\n }\n } else { t = c + 24 | 0; } } while (0);\n d = b[t >> 2] | 0;\n if (d | 0) { Ed(d); }\n s = c;\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[v >> 2] = 0;\n b[c + 12 >> 2] = -1;\n b[u >> 2] = 0;\n b[t >> 2] = 0;\n T = w;\n return;\n }\n function Sc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0;\n m = T;\n T = T + 16 | 0;\n l = m;\n e = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n e = e & 15;\n d = Qd(a | 0, c | 0, 45) | 0;\n H() | 0;\n do { if (e) {\n while (1) {\n d = Rd(e + 4095 | 0, 0, 52) | 0;\n f = H() | 0 | c & -15728641;\n g = (15 - e | 0) * 3 | 0;\n h = Rd(7, 0, g | 0) | 0;\n i = H() | 0;\n d = d | a | h;\n f = f | i;\n j = Qd(a | 0, c | 0, g | 0) | 0;\n H() | 0;\n j = j & 7;\n e = e + -1 | 0;\n if (j >>> 0 < 6) { break; }\n if (!e) {\n k = 4;\n break;\n } else {\n c = f;\n a = d;\n }\n }\n if ((k | 0) == 4) {\n d = Qd(d | 0, f | 0, 45) | 0;\n H() | 0;\n break;\n }\n l = (j | 0) == 0 & (Hb(d, f) | 0) != 0;\n l = Rd((l ? 2 : 1) + j | 0, 0, g | 0) | 0;\n k = H() | 0 | c & ~i;\n l = l | a & ~h;\n G(k | 0);\n T = m;\n return l | 0;\n } } while (0);\n d = d & 127;\n if (d >>> 0 > 120) {\n k = 0;\n l = 0;\n G(k | 0);\n T = m;\n return l | 0;\n }\n Eb(l, 0, d + 1 | 0, 0);\n k = b[l + 4 >> 2] | 0;\n l = b[l >> 2] | 0;\n G(k | 0);\n T = m;\n return l | 0;\n }\n function Tc(a, c, d, e, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0;\n r = T;\n T = T + 160 | 0;\n m = r + 80 | 0;\n i = r + 64 | 0;\n n = r + 112 | 0;\n q = r;\n Qc(m, a, c, d);\n k = m;\n fc(i, b[k >> 2] | 0, b[k + 4 >> 2] | 0, c);\n k = i;\n j = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n h = b[m + 8 >> 2] | 0;\n o = n + 4 | 0;\n b[o >> 2] = b[m >> 2];\n b[o + 4 >> 2] = b[m + 4 >> 2];\n b[o + 8 >> 2] = b[m + 8 >> 2];\n b[o + 12 >> 2] = b[m + 12 >> 2];\n b[o + 16 >> 2] = b[m + 16 >> 2];\n b[o + 20 >> 2] = b[m + 20 >> 2];\n b[o + 24 >> 2] = b[m + 24 >> 2];\n b[o + 28 >> 2] = b[m + 28 >> 2];\n o = q;\n b[o >> 2] = j;\n b[o + 4 >> 2] = k;\n o = q + 8 | 0;\n b[o >> 2] = h;\n a = q + 12 | 0;\n c = n;\n d = a + 36 | 0;\n do {\n b[a >> 2] = b[c >> 2];\n a = a + 4 | 0;\n c = c + 4 | 0;\n } while ((a | 0) < (d | 0));\n n = q + 48 | 0;\n b[n >> 2] = b[i >> 2];\n b[n + 4 >> 2] = b[i + 4 >> 2];\n b[n + 8 >> 2] = b[i + 8 >> 2];\n b[n + 12 >> 2] = b[i + 12 >> 2];\n if ((j | 0) == 0 & (k | 0) == 0) {\n q = h;\n T = r;\n return q | 0;\n }\n d = q + 16 | 0;\n l = q + 24 | 0;\n m = q + 28 | 0;\n h = 0;\n i = 0;\n c = j;\n a = k;\n do {\n if (!((h | 0) < (f | 0) | (h | 0) == (f | 0) & i >>> 0 < e >>> 0)) {\n p = 4;\n break;\n }\n k = i;\n i = Gd(i | 0, h | 0, 1, 0) | 0;\n h = H() | 0;\n k = g + (k << 3) | 0;\n b[k >> 2] = c;\n b[k + 4 >> 2] = a;\n hc(n);\n a = n;\n c = b[a >> 2] | 0;\n a = b[a + 4 >> 2] | 0;\n if ((c | 0) == 0 & (a | 0) == 0) {\n Rc(d);\n c = d;\n a = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n if ((a | 0) == 0 & (c | 0) == 0) {\n p = 10;\n break;\n }\n gc(a, c, b[m >> 2] | 0, n);\n a = n;\n c = b[a >> 2] | 0;\n a = b[a + 4 >> 2] | 0;\n }\n k = q;\n b[k >> 2] = c;\n b[k + 4 >> 2] = a;\n } while (!((c | 0) == 0 & (a | 0) == 0));\n if ((p | 0) == 4) {\n a = q + 40 | 0;\n c = b[a >> 2] | 0;\n if (c | 0) { Ed(c); }\n p = q + 16 | 0;\n b[p >> 2] = 0;\n b[p + 4 >> 2] = 0;\n b[l >> 2] = 0;\n b[q + 36 >> 2] = 0;\n b[m >> 2] = -1;\n b[q + 32 >> 2] = 0;\n b[a >> 2] = 0;\n gc(0, 0, 0, n);\n b[q >> 2] = 0;\n b[q + 4 >> 2] = 0;\n b[o >> 2] = 0;\n q = 14;\n T = r;\n return q | 0;\n } else if ((p | 0) == 10) {\n b[q >> 2] = 0;\n b[q + 4 >> 2] = 0;\n b[o >> 2] = b[l >> 2];\n }\n q = b[o >> 2] | 0;\n T = r;\n return q | 0;\n }\n function Uc(c, d, f, g) {\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0.0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0.0,\n r = 0;\n o = T;\n T = T + 48 | 0;\n l = o + 32 | 0;\n k = o + 40 | 0;\n m = o;\n if (!(b[c >> 2] | 0)) {\n n = g;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n n = 0;\n T = o;\n return n | 0;\n }\n Eb(l, 0, 0, 0);\n j = l;\n h = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n do { if (d >>> 0 > 15) {\n n = m;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n b[m + 8 >> 2] = 4;\n b[m + 12 >> 2] = -1;\n n = m + 16 | 0;\n f = m + 29 | 0;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n b[n + 8 >> 2] = 0;\n a[n + 12 >> 0] = 0;\n a[f >> 0] = a[k >> 0] | 0;\n a[f + 1 >> 0] = a[k + 1 >> 0] | 0;\n a[f + 2 >> 0] = a[k + 2 >> 0] | 0;\n f = 4;\n n = 9;\n } else {\n f = Xc(f) | 0;\n if (f | 0) {\n l = m;\n b[l >> 2] = 0;\n b[l + 4 >> 2] = 0;\n b[m + 8 >> 2] = f;\n b[m + 12 >> 2] = -1;\n l = m + 16 | 0;\n n = m + 29 | 0;\n b[l >> 2] = 0;\n b[l + 4 >> 2] = 0;\n b[l + 8 >> 2] = 0;\n a[l + 12 >> 0] = 0;\n a[n >> 0] = a[k >> 0] | 0;\n a[n + 1 >> 0] = a[k + 1 >> 0] | 0;\n a[n + 2 >> 0] = a[k + 2 >> 0] | 0;\n n = 9;\n break;\n }\n f = Fd((b[c + 8 >> 2] | 0) + 1 | 0, 32) | 0;\n if (!f) {\n n = m;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n b[m + 8 >> 2] = 13;\n b[m + 12 >> 2] = -1;\n n = m + 16 | 0;\n f = m + 29 | 0;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n b[n + 8 >> 2] = 0;\n a[n + 12 >> 0] = 0;\n a[f >> 0] = a[k >> 0] | 0;\n a[f + 1 >> 0] = a[k + 1 >> 0] | 0;\n a[f + 2 >> 0] = a[k + 2 >> 0] | 0;\n f = 13;\n n = 9;\n break;\n }\n Yc(c, f);\n r = m;\n b[r >> 2] = h;\n b[r + 4 >> 2] = j;\n j = m + 8 | 0;\n b[j >> 2] = 0;\n b[m + 12 >> 2] = d;\n b[m + 20 >> 2] = c;\n b[m + 24 >> 2] = f;\n a[m + 28 >> 0] = 0;\n h = m + 29 | 0;\n a[h >> 0] = a[k >> 0] | 0;\n a[h + 1 >> 0] = a[k + 1 >> 0] | 0;\n a[h + 2 >> 0] = a[k + 2 >> 0] | 0;\n b[m + 16 >> 2] = 3;\n p = +Ba(f);\n p = p * +za(f);\n i = +q(+ +e[f >> 3]);\n i = p / +t(+ +Ud(+i, + +q(+ +e[f + 8 >> 3]))) * 6371.007180918475 * 6371.007180918475;\n h = m + 12 | 0;\n f = b[h >> 2] | 0;\n a: do { if ((f | 0) > 0) { do {\n qc(f + -1 | 0, l) | 0;\n if (!(i / +e[l >> 3] > 10.0)) { break a; }\n r = b[h >> 2] | 0;\n f = r + -1 | 0;\n b[h >> 2] = f;\n } while ((r | 0) > 1); } } while (0);\n Rc(m);\n h = g;\n b[h >> 2] = 0;\n b[h + 4 >> 2] = 0;\n h = m;\n f = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n if (!((f | 0) == 0 & (h | 0) == 0)) { do {\n Gb(f, h, d, l) | 0;\n k = l;\n c = g;\n k = Gd(b[c >> 2] | 0, b[c + 4 >> 2] | 0, b[k >> 2] | 0, b[k + 4 >> 2] | 0) | 0;\n c = H() | 0;\n r = g;\n b[r >> 2] = k;\n b[r + 4 >> 2] = c;\n Rc(m);\n r = m;\n f = b[r >> 2] | 0;\n h = b[r + 4 >> 2] | 0;\n } while (!((f | 0) == 0 & (h | 0) == 0)); }\n f = b[j >> 2] | 0;\n } } while (0);\n r = f;\n T = o;\n return r | 0;\n }\n function Vc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0,\n m = 0.0,\n n = 0,\n o = 0;\n if (!(Ca(c, d) | 0)) {\n o = 0;\n return o | 0;\n }\n c = Aa(c) | 0;\n f = +e[d >> 3];\n g = +e[d + 8 >> 3];\n g = c & g < 0.0 ? g + 6.283185307179586 : g;\n o = b[a >> 2] | 0;\n if ((o | 0) <= 0) {\n o = 0;\n return o | 0;\n }\n n = b[a + 4 >> 2] | 0;\n if (c) {\n c = 0;\n m = g;\n d = -1;\n a = 0;\n a: while (1) {\n l = a;\n while (1) {\n i = +e[n + (l << 4) >> 3];\n g = +e[n + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (o | 0) | 0;\n h = +e[n + (a << 4) >> 3];\n j = +e[n + (a << 4) + 8 >> 3];\n if (i > h) {\n k = i;\n i = j;\n } else {\n k = h;\n h = i;\n i = g;\n g = j;\n }\n f = f == h | f == k ? f + 2.220446049250313e-16 : f;\n if (!(f < h | f > k)) { break; }\n d = l + 1 | 0;\n if ((d | 0) >= (o | 0)) {\n d = 22;\n break a;\n } else {\n a = l;\n l = d;\n d = a;\n }\n }\n j = i < 0.0 ? i + 6.283185307179586 : i;\n i = g < 0.0 ? g + 6.283185307179586 : g;\n m = j == m | i == m ? m + -2.220446049250313e-16 : m;\n k = j + (i - j) * ((f - h) / (k - h));\n if ((k < 0.0 ? k + 6.283185307179586 : k) > m) { c = c ^ 1; }\n a = l + 1 | 0;\n if ((a | 0) >= (o | 0)) {\n d = 22;\n break;\n } else { d = l; }\n }\n if ((d | 0) == 22) { return c | 0; }\n } else {\n c = 0;\n m = g;\n d = -1;\n a = 0;\n b: while (1) {\n l = a;\n while (1) {\n i = +e[n + (l << 4) >> 3];\n g = +e[n + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (o | 0) | 0;\n h = +e[n + (a << 4) >> 3];\n j = +e[n + (a << 4) + 8 >> 3];\n if (i > h) {\n k = i;\n i = j;\n } else {\n k = h;\n h = i;\n i = g;\n g = j;\n }\n f = f == h | f == k ? f + 2.220446049250313e-16 : f;\n if (!(f < h | f > k)) { break; }\n d = l + 1 | 0;\n if ((d | 0) >= (o | 0)) {\n d = 22;\n break b;\n } else {\n a = l;\n l = d;\n d = a;\n }\n }\n m = i == m | g == m ? m + -2.220446049250313e-16 : m;\n if (i + (g - i) * ((f - h) / (k - h)) > m) { c = c ^ 1; }\n a = l + 1 | 0;\n if ((a | 0) >= (o | 0)) {\n d = 22;\n break;\n } else { d = l; }\n }\n if ((d | 0) == 22) { return c | 0; }\n }\n return 0;\n }\n function Wc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0,\n o = 0,\n p = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0;\n r = b[a >> 2] | 0;\n if (!r) {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n return;\n }\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -1797693134862315708145274.0e284;\n u = c + 16 | 0;\n e[u >> 3] = -1797693134862315708145274.0e284;\n if ((r | 0) <= 0) { return; }\n o = b[a + 4 >> 2] | 0;\n l = 1797693134862315708145274.0e284;\n m = -1797693134862315708145274.0e284;\n n = 0;\n a = -1;\n h = 1797693134862315708145274.0e284;\n i = 1797693134862315708145274.0e284;\n k = -1797693134862315708145274.0e284;\n f = -1797693134862315708145274.0e284;\n p = 0;\n while (1) {\n d = +e[o + (p << 4) >> 3];\n j = +e[o + (p << 4) + 8 >> 3];\n a = a + 2 | 0;\n g = +e[o + (((a | 0) == (r | 0) ? 0 : a) << 4) + 8 >> 3];\n if (d < h) {\n e[s >> 3] = d;\n h = d;\n }\n if (j < i) {\n e[t >> 3] = j;\n i = j;\n }\n if (d > k) { e[c >> 3] = d; }else { d = k; }\n if (j > f) {\n e[u >> 3] = j;\n f = j;\n }\n l = j > 0.0 & j < l ? j : l;\n m = j < 0.0 & j > m ? j : m;\n n = n | +q(+(j - g)) > 3.141592653589793;\n a = p + 1 | 0;\n if ((a | 0) == (r | 0)) { break; }else {\n v = p;\n k = d;\n p = a;\n a = v;\n }\n }\n if (!n) { return; }\n e[u >> 3] = m;\n e[t >> 3] = l;\n return;\n }\n function Xc(a) {\n a = a | 0;\n return (a >>> 0 < 4 ? 0 : 15) | 0;\n }\n function Yc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0,\n o = 0.0,\n p = 0.0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0;\n r = b[a >> 2] | 0;\n if (r) {\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -1797693134862315708145274.0e284;\n u = c + 16 | 0;\n e[u >> 3] = -1797693134862315708145274.0e284;\n if ((r | 0) > 0) {\n g = b[a + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -1797693134862315708145274.0e284;\n f = 0;\n d = -1;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n n = -1797693134862315708145274.0e284;\n i = -1797693134862315708145274.0e284;\n v = 0;\n while (1) {\n h = +e[g + (v << 4) >> 3];\n m = +e[g + (v << 4) + 8 >> 3];\n z = d + 2 | 0;\n j = +e[g + (((z | 0) == (r | 0) ? 0 : z) << 4) + 8 >> 3];\n if (h < k) {\n e[s >> 3] = h;\n k = h;\n }\n if (m < l) {\n e[t >> 3] = m;\n l = m;\n }\n if (h > n) { e[c >> 3] = h; }else { h = n; }\n if (m > i) {\n e[u >> 3] = m;\n i = m;\n }\n o = m > 0.0 & m < o ? m : o;\n p = m < 0.0 & m > p ? m : p;\n f = f | +q(+(m - j)) > 3.141592653589793;\n d = v + 1 | 0;\n if ((d | 0) == (r | 0)) { break; }else {\n z = v;\n n = h;\n v = d;\n d = z;\n }\n }\n if (f) {\n e[u >> 3] = p;\n e[t >> 3] = o;\n }\n }\n } else {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n }\n z = a + 8 | 0;\n d = b[z >> 2] | 0;\n if ((d | 0) <= 0) { return; }\n y = a + 12 | 0;\n x = 0;\n do {\n g = b[y >> 2] | 0;\n f = x;\n x = x + 1 | 0;\n t = c + (x << 5) | 0;\n u = b[g + (f << 3) >> 2] | 0;\n if (u) {\n v = c + (x << 5) + 8 | 0;\n e[v >> 3] = 1797693134862315708145274.0e284;\n a = c + (x << 5) + 24 | 0;\n e[a >> 3] = 1797693134862315708145274.0e284;\n e[t >> 3] = -1797693134862315708145274.0e284;\n w = c + (x << 5) + 16 | 0;\n e[w >> 3] = -1797693134862315708145274.0e284;\n if ((u | 0) > 0) {\n r = b[g + (f << 3) + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -1797693134862315708145274.0e284;\n g = 0;\n f = -1;\n s = 0;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n m = -1797693134862315708145274.0e284;\n i = -1797693134862315708145274.0e284;\n while (1) {\n h = +e[r + (s << 4) >> 3];\n n = +e[r + (s << 4) + 8 >> 3];\n f = f + 2 | 0;\n j = +e[r + (((f | 0) == (u | 0) ? 0 : f) << 4) + 8 >> 3];\n if (h < k) {\n e[v >> 3] = h;\n k = h;\n }\n if (n < l) {\n e[a >> 3] = n;\n l = n;\n }\n if (h > m) { e[t >> 3] = h; }else { h = m; }\n if (n > i) {\n e[w >> 3] = n;\n i = n;\n }\n o = n > 0.0 & n < o ? n : o;\n p = n < 0.0 & n > p ? n : p;\n g = g | +q(+(n - j)) > 3.141592653589793;\n f = s + 1 | 0;\n if ((f | 0) == (u | 0)) { break; }else {\n A = s;\n s = f;\n m = h;\n f = A;\n }\n }\n if (g) {\n e[w >> 3] = p;\n e[a >> 3] = o;\n }\n }\n } else {\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n b[t + 16 >> 2] = 0;\n b[t + 20 >> 2] = 0;\n b[t + 24 >> 2] = 0;\n b[t + 28 >> 2] = 0;\n d = b[z >> 2] | 0;\n }\n } while ((x | 0) < (d | 0));\n return;\n }\n function Zc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n if (!(Vc(a, c, d) | 0)) {\n f = 0;\n return f | 0;\n }\n f = a + 8 | 0;\n if ((b[f >> 2] | 0) <= 0) {\n f = 1;\n return f | 0;\n }\n e = a + 12 | 0;\n a = 0;\n while (1) {\n g = a;\n a = a + 1 | 0;\n if (Vc((b[e >> 2] | 0) + (g << 3) | 0, c + (a << 5) | 0, d) | 0) {\n a = 0;\n e = 6;\n break;\n }\n if ((a | 0) >= (b[f >> 2] | 0)) {\n a = 1;\n e = 6;\n break;\n }\n }\n if ((e | 0) == 6) { return a | 0; }\n return 0;\n }\n function _c(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n k = T;\n T = T + 16 | 0;\n i = k;\n h = d + 8 | 0;\n if (!(Vc(a, c, h) | 0)) {\n j = 0;\n T = k;\n return j | 0;\n }\n j = a + 8 | 0;\n a: do { if ((b[j >> 2] | 0) > 0) {\n g = a + 12 | 0;\n f = 0;\n while (1) {\n l = f;\n f = f + 1 | 0;\n if (Vc((b[g >> 2] | 0) + (l << 3) | 0, c + (f << 5) | 0, h) | 0) {\n f = 0;\n break;\n }\n if ((f | 0) >= (b[j >> 2] | 0)) { break a; }\n }\n T = k;\n return f | 0;\n } } while (0);\n if ($c(a, c, d, e) | 0) {\n l = 0;\n T = k;\n return l | 0;\n }\n b[i >> 2] = b[d >> 2];\n b[i + 4 >> 2] = h;\n f = b[j >> 2] | 0;\n b: do { if ((f | 0) > 0) {\n a = a + 12 | 0;\n h = 0;\n g = f;\n while (1) {\n f = b[a >> 2] | 0;\n if ((b[f + (h << 3) >> 2] | 0) > 0) {\n if (Vc(i, e, b[f + (h << 3) + 4 >> 2] | 0) | 0) {\n f = 0;\n break b;\n }\n f = h + 1 | 0;\n if ($c((b[a >> 2] | 0) + (h << 3) | 0, c + (f << 5) | 0, d, e) | 0) {\n f = 0;\n break b;\n }\n g = b[j >> 2] | 0;\n } else { f = h + 1 | 0; }\n if ((f | 0) < (g | 0)) { h = f; }else {\n f = 1;\n break;\n }\n }\n } else { f = 1; } } while (0);\n l = f;\n T = k;\n return l | 0;\n }\n function $c(a, c, d, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0,\n o = 0.0,\n p = 0.0,\n q = 0.0,\n r = 0.0,\n s = 0.0,\n t = 0.0,\n u = 0,\n v = 0,\n w = 0.0,\n x = 0.0,\n y = 0,\n z = 0,\n A = 0;\n y = T;\n T = T + 176 | 0;\n u = y + 172 | 0;\n g = y + 168 | 0;\n v = y;\n if (!(Da(c, f) | 0)) {\n a = 0;\n T = y;\n return a | 0;\n }\n Ea(c, f, u, g);\n Wd(v | 0, d | 0, 168) | 0;\n if ((b[d >> 2] | 0) > 0) {\n c = 0;\n do {\n z = v + 8 + (c << 4) + 8 | 0;\n t = +kc(+e[z >> 3], b[g >> 2] | 0);\n e[z >> 3] = t;\n c = c + 1 | 0;\n } while ((c | 0) < (b[d >> 2] | 0));\n }\n r = +e[f >> 3];\n s = +e[f + 8 >> 3];\n t = +kc(+e[f + 16 >> 3], b[g >> 2] | 0);\n p = +kc(+e[f + 24 >> 3], b[g >> 2] | 0);\n a: do { if ((b[a >> 2] | 0) > 0) {\n f = a + 4 | 0;\n g = b[v >> 2] | 0;\n if ((g | 0) <= 0) {\n c = 0;\n while (1) {\n c = c + 1 | 0;\n if ((c | 0) >= (b[a >> 2] | 0)) {\n c = 0;\n break a;\n }\n }\n }\n d = 0;\n while (1) {\n c = b[f >> 2] | 0;\n o = +e[c + (d << 4) >> 3];\n q = +kc(+e[c + (d << 4) + 8 >> 3], b[u >> 2] | 0);\n c = b[f >> 2] | 0;\n d = d + 1 | 0;\n z = (d | 0) % (b[a >> 2] | 0) | 0;\n h = +e[c + (z << 4) >> 3];\n i = +kc(+e[c + (z << 4) + 8 >> 3], b[u >> 2] | 0);\n if (((!(o >= r) | !(h >= r) ? !(o <= s) | !(h <= s) : 0) ? !(q <= p) | !(i <= p) : 0) ? !(q >= t) | !(i >= t) : 0) {\n n = h - o;\n l = i - q;\n c = 0;\n do {\n A = c;\n c = c + 1 | 0;\n z = (c | 0) == (g | 0) ? 0 : c;\n h = +e[v + 8 + (A << 4) + 8 >> 3];\n i = +e[v + 8 + (z << 4) + 8 >> 3] - h;\n j = +e[v + 8 + (A << 4) >> 3];\n k = +e[v + 8 + (z << 4) >> 3] - j;\n m = n * i - l * k;\n if ((m != 0.0 ? (w = q - h, x = o - j, k = (w * k - i * x) / m, !(k < 0.0 | k > 1.0)) : 0) ? (m = (n * w - l * x) / m, m >= 0.0 & m <= 1.0) : 0) {\n c = 1;\n break a;\n }\n } while ((c | 0) < (g | 0));\n }\n if ((d | 0) >= (b[a >> 2] | 0)) {\n c = 0;\n break;\n }\n }\n } else { c = 0; } } while (0);\n A = c;\n T = y;\n return A | 0;\n }\n function ad(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0;\n if ($c(a, c, d, e) | 0) {\n g = 1;\n return g | 0;\n }\n g = a + 8 | 0;\n if ((b[g >> 2] | 0) <= 0) {\n g = 0;\n return g | 0;\n }\n f = a + 12 | 0;\n a = 0;\n while (1) {\n h = a;\n a = a + 1 | 0;\n if ($c((b[f >> 2] | 0) + (h << 3) | 0, c + (a << 5) | 0, d, e) | 0) {\n a = 1;\n f = 6;\n break;\n }\n if ((a | 0) >= (b[g >> 2] | 0)) {\n a = 0;\n f = 6;\n break;\n }\n }\n if ((f | 0) == 6) { return a | 0; }\n return 0;\n }\n function bd() {\n return 8;\n }\n function cd() {\n return 16;\n }\n function dd() {\n return 168;\n }\n function ed() {\n return 8;\n }\n function fd() {\n return 16;\n }\n function gd() {\n return 12;\n }\n function hd() {\n return 8;\n }\n function id(a) {\n a = a | 0;\n return +(+((b[a >> 2] | 0) >>> 0) + 4294967296.0 * +(b[a + 4 >> 2] | 0));\n }\n function jd(a) {\n a = a | 0;\n var b = 0.0,\n c = 0.0;\n c = +e[a >> 3];\n b = +e[a + 8 >> 3];\n return + +r(+(c * c + b * b));\n }\n function kd(a, b, c, d, f) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0;\n k = +e[a >> 3];\n j = +e[b >> 3] - k;\n i = +e[a + 8 >> 3];\n h = +e[b + 8 >> 3] - i;\n m = +e[c >> 3];\n g = +e[d >> 3] - m;\n n = +e[c + 8 >> 3];\n l = +e[d + 8 >> 3] - n;\n g = (g * (i - n) - (k - m) * l) / (j * l - h * g);\n e[f >> 3] = k + j * g;\n e[f + 8 >> 3] = i + h * g;\n return;\n }\n function ld(a, b) {\n a = a | 0;\n b = b | 0;\n if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < 1.1920928955078125e-07)) {\n b = 0;\n return b | 0;\n }\n b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < 1.1920928955078125e-07;\n return b | 0;\n }\n function md(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n f = +e[a >> 3] - +e[b >> 3];\n d = +e[a + 8 >> 3] - +e[b + 8 >> 3];\n c = +e[a + 16 >> 3] - +e[b + 16 >> 3];\n return +(f * f + d * d + c * c);\n }\n function nd(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n c = +e[a >> 3];\n d = +t(+c);\n c = +u(+c);\n e[b + 16 >> 3] = c;\n c = +e[a + 8 >> 3];\n f = d * +t(+c);\n e[b >> 3] = f;\n c = d * +u(+c);\n e[b + 8 >> 3] = c;\n return;\n }\n function od(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n g = T;\n T = T + 16 | 0;\n f = g;\n e = Hb(a, c) | 0;\n if ((d + -1 | 0) >>> 0 > 5) {\n f = -1;\n T = g;\n return f | 0;\n }\n e = (e | 0) != 0;\n if ((d | 0) == 1 & e) {\n f = -1;\n T = g;\n return f | 0;\n }\n do { if (!(pd(a, c, f) | 0)) {\n if (e) {\n e = ((b[26352 + (d << 2) >> 2] | 0) + 5 - (b[f >> 2] | 0) | 0) % 5 | 0;\n break;\n } else {\n e = ((b[26384 + (d << 2) >> 2] | 0) + 6 - (b[f >> 2] | 0) | 0) % 6 | 0;\n break;\n }\n } else { e = -1; } } while (0);\n f = e;\n T = g;\n return f | 0;\n }\n function pd(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n k = T;\n T = T + 32 | 0;\n h = k + 16 | 0;\n i = k;\n e = Yb(a, c, h) | 0;\n if (e | 0) {\n d = e;\n T = k;\n return d | 0;\n }\n g = Cb(a, c) | 0;\n j = Pb(a, c) | 0;\n sa(g, i);\n e = ta(g, b[h >> 2] | 0) | 0;\n a: do { if (oa(g) | 0) {\n do { switch (g | 0) {\n case 4:\n {\n a = 0;\n break;\n }\n case 14:\n {\n a = 1;\n break;\n }\n case 24:\n {\n a = 2;\n break;\n }\n case 38:\n {\n a = 3;\n break;\n }\n case 49:\n {\n a = 4;\n break;\n }\n case 58:\n {\n a = 5;\n break;\n }\n case 63:\n {\n a = 6;\n break;\n }\n case 72:\n {\n a = 7;\n break;\n }\n case 83:\n {\n a = 8;\n break;\n }\n case 97:\n {\n a = 9;\n break;\n }\n case 107:\n {\n a = 10;\n break;\n }\n case 117:\n {\n a = 11;\n break;\n }\n default:\n {\n e = 1;\n break a;\n }\n } } while (0);\n f = b[26416 + (a * 24 | 0) + 8 >> 2] | 0;\n c = b[26416 + (a * 24 | 0) + 16 >> 2] | 0;\n a = b[h >> 2] | 0;\n if ((a | 0) != (b[i >> 2] | 0)) {\n i = pa(g) | 0;\n a = b[h >> 2] | 0;\n if (i | (a | 0) == (c | 0)) { e = (e + 1 | 0) % 6 | 0; }\n }\n if ((j | 0) == 3 & (a | 0) == (c | 0)) {\n e = (e + 5 | 0) % 6 | 0;\n f = 22;\n break;\n }\n if ((j | 0) == 5 & (a | 0) == (f | 0)) {\n e = (e + 1 | 0) % 6 | 0;\n f = 22;\n } else { f = 22; }\n } else { f = 22; } } while (0);\n if ((f | 0) == 22) {\n b[d >> 2] = e;\n e = 0;\n }\n d = e;\n T = k;\n return d | 0;\n }\n function qd(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0;\n u = T;\n T = T + 32 | 0;\n t = u + 24 | 0;\n r = u + 20 | 0;\n p = u + 8 | 0;\n o = u + 16 | 0;\n n = u;\n j = (Hb(a, c) | 0) == 0;\n j = j ? 6 : 5;\n l = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n l = l & 15;\n if (j >>> 0 <= d >>> 0) {\n e = 2;\n T = u;\n return e | 0;\n }\n m = (l | 0) == 0;\n if (!m ? (q = Rd(7, 0, (l ^ 15) * 3 | 0) | 0, (q & a | 0) == 0 & ((H() | 0) & c | 0) == 0) : 0) { f = d; }else { g = 4; }\n a: do { if ((g | 0) == 4) {\n f = (Hb(a, c) | 0) != 0;\n if (((f ? 4 : 5) | 0) < (d | 0)) {\n e = 1;\n T = u;\n return e | 0;\n }\n if (pd(a, c, t) | 0) {\n e = 1;\n T = u;\n return e | 0;\n }\n g = (b[t >> 2] | 0) + d | 0;\n if (f) { f = 26704 + (((g | 0) % 5 | 0) << 2) | 0; }else { f = 26736 + (((g | 0) % 6 | 0) << 2) | 0; }\n q = b[f >> 2] | 0;\n if ((q | 0) == 7) {\n e = 1;\n T = u;\n return e | 0;\n }\n b[r >> 2] = 0;\n f = ea(a, c, q, r, p) | 0;\n do { if (!f) {\n i = p;\n k = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n h = i >>> 0 < c >>> 0 | (i | 0) == (c | 0) & k >>> 0 < a >>> 0;\n g = h ? k : a;\n h = h ? i : c;\n if (!m ? (m = Rd(7, 0, (l ^ 15) * 3 | 0) | 0, (k & m | 0) == 0 & (i & (H() | 0) | 0) == 0) : 0) { f = d; }else {\n i = (d + -1 + j | 0) % (j | 0) | 0;\n f = Hb(a, c) | 0;\n if ((i | 0) < 0) { I(27795, 27797, 246, 27806); }\n j = (f | 0) != 0;\n if (((j ? 4 : 5) | 0) < (i | 0)) { I(27795, 27797, 246, 27806); }\n if (pd(a, c, t) | 0) { I(27795, 27797, 246, 27806); }\n f = (b[t >> 2] | 0) + i | 0;\n if (j) { f = 26704 + (((f | 0) % 5 | 0) << 2) | 0; }else { f = 26736 + (((f | 0) % 6 | 0) << 2) | 0; }\n i = b[f >> 2] | 0;\n if ((i | 0) == 7) { I(27795, 27797, 246, 27806); }\n b[o >> 2] = 0;\n f = ea(a, c, i, o, n) | 0;\n if (f | 0) { break; }\n k = n;\n j = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n do { if (k >>> 0 < h >>> 0 | (k | 0) == (h | 0) & j >>> 0 < g >>> 0) {\n if (!(Hb(j, k) | 0)) { g = b[26800 + ((((b[o >> 2] | 0) + (b[26768 + (i << 2) >> 2] | 0) | 0) % 6 | 0) << 2) >> 2] | 0; }else { g = ia(j, k, a, c) | 0; }\n f = Hb(j, k) | 0;\n if ((g + -1 | 0) >>> 0 > 5) {\n f = -1;\n g = j;\n h = k;\n break;\n }\n f = (f | 0) != 0;\n if ((g | 0) == 1 & f) {\n f = -1;\n g = j;\n h = k;\n break;\n }\n do { if (!(pd(j, k, t) | 0)) {\n if (f) {\n f = ((b[26352 + (g << 2) >> 2] | 0) + 5 - (b[t >> 2] | 0) | 0) % 5 | 0;\n break;\n } else {\n f = ((b[26384 + (g << 2) >> 2] | 0) + 6 - (b[t >> 2] | 0) | 0) % 6 | 0;\n break;\n }\n } else { f = -1; } } while (0);\n g = j;\n h = k;\n } else { f = d; } } while (0);\n i = p;\n k = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n }\n if ((g | 0) == (k | 0) & (h | 0) == (i | 0)) {\n j = (Hb(k, i) | 0) != 0;\n if (j) { a = ia(k, i, a, c) | 0; }else { a = b[26800 + ((((b[r >> 2] | 0) + (b[26768 + (q << 2) >> 2] | 0) | 0) % 6 | 0) << 2) >> 2] | 0; }\n f = Hb(k, i) | 0;\n if ((a + -1 | 0) >>> 0 <= 5 ? (s = (f | 0) != 0, !((a | 0) == 1 & s)) : 0) {\n do { if (!(pd(k, i, t) | 0)) {\n if (s) {\n f = ((b[26352 + (a << 2) >> 2] | 0) + 5 - (b[t >> 2] | 0) | 0) % 5 | 0;\n break;\n } else {\n f = ((b[26384 + (a << 2) >> 2] | 0) + 6 - (b[t >> 2] | 0) | 0) % 6 | 0;\n break;\n }\n } else { f = -1; } } while (0);\n } else { f = -1; }\n f = f + 1 | 0;\n f = (f | 0) == 6 | j & (f | 0) == 5 ? 0 : f;\n }\n c = h;\n a = g;\n break a;\n } } while (0);\n e = f;\n T = u;\n return e | 0;\n } } while (0);\n s = Rd(f | 0, 0, 56) | 0;\n t = H() | 0 | c & -2130706433 | 536870912;\n b[e >> 2] = s | a;\n b[e + 4 >> 2] = t;\n e = 0;\n T = u;\n return e | 0;\n }\n function rd(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n g = (Hb(a, c) | 0) == 0;\n e = qd(a, c, 0, d) | 0;\n f = (e | 0) == 0;\n if (g) {\n if (!f) {\n g = e;\n return g | 0;\n }\n e = qd(a, c, 1, d + 8 | 0) | 0;\n if (e | 0) {\n g = e;\n return g | 0;\n }\n e = qd(a, c, 2, d + 16 | 0) | 0;\n if (e | 0) {\n g = e;\n return g | 0;\n }\n e = qd(a, c, 3, d + 24 | 0) | 0;\n if (e | 0) {\n g = e;\n return g | 0;\n }\n e = qd(a, c, 4, d + 32 | 0) | 0;\n if (!e) { return qd(a, c, 5, d + 40 | 0) | 0; }else {\n g = e;\n return g | 0;\n }\n }\n if (!f) {\n g = e;\n return g | 0;\n }\n e = qd(a, c, 1, d + 8 | 0) | 0;\n if (e | 0) {\n g = e;\n return g | 0;\n }\n e = qd(a, c, 2, d + 16 | 0) | 0;\n if (e | 0) {\n g = e;\n return g | 0;\n }\n e = qd(a, c, 3, d + 24 | 0) | 0;\n if (e | 0) {\n g = e;\n return g | 0;\n }\n e = qd(a, c, 4, d + 32 | 0) | 0;\n if (e | 0) {\n g = e;\n return g | 0;\n }\n g = d + 40 | 0;\n b[g >> 2] = 0;\n b[g + 4 >> 2] = 0;\n g = 0;\n return g | 0;\n }\n function sd(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = T;\n T = T + 192 | 0;\n f = j;\n g = j + 168 | 0;\n h = Qd(a | 0, c | 0, 56) | 0;\n H() | 0;\n h = h & 7;\n i = c & -2130706433 | 134217728;\n e = Yb(a, i, g) | 0;\n if (e | 0) {\n i = e;\n T = j;\n return i | 0;\n }\n c = Qd(a | 0, c | 0, 52) | 0;\n H() | 0;\n c = c & 15;\n if (!(Hb(a, i) | 0)) { zb(g, c, h, 1, f); }else { vb(g, c, h, 1, f); }\n i = f + 8 | 0;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = b[i + 4 >> 2];\n b[d + 8 >> 2] = b[i + 8 >> 2];\n b[d + 12 >> 2] = b[i + 12 >> 2];\n i = 0;\n T = j;\n return i | 0;\n }\n function td(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0;\n f = T;\n T = T + 16 | 0;\n d = f;\n if (!(0 == 0 & (c & 2013265920 | 0) == 536870912)) {\n e = 0;\n T = f;\n return e | 0;\n }\n e = c & -2130706433 | 134217728;\n if (!(Db(a, e) | 0)) {\n e = 0;\n T = f;\n return e | 0;\n }\n g = Qd(a | 0, c | 0, 56) | 0;\n H() | 0;\n g = (qd(a, e, g & 7, d) | 0) == 0;\n e = d;\n e = g & ((b[e >> 2] | 0) == (a | 0) ? (b[e + 4 >> 2] | 0) == (c | 0) : 0) & 1;\n T = f;\n return e | 0;\n }\n function ud(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0;\n if ((c | 0) > 0) {\n e = Fd(c, 4) | 0;\n b[a >> 2] = e;\n if (!e) { I(27819, 27842, 40, 27856); }\n } else { b[a >> 2] = 0; }\n b[a + 4 >> 2] = c;\n b[a + 8 >> 2] = 0;\n b[a + 12 >> 2] = d;\n return;\n }\n function vd(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n g = a + 4 | 0;\n h = a + 12 | 0;\n i = a + 8 | 0;\n a: while (1) {\n d = b[g >> 2] | 0;\n c = 0;\n while (1) {\n if ((c | 0) >= (d | 0)) { break a; }\n f = b[a >> 2] | 0;\n j = b[f + (c << 2) >> 2] | 0;\n if (!j) { c = c + 1 | 0; }else { break; }\n }\n c = f + (~~(+q(+(+s(10.0, + +(15 - (b[h >> 2] | 0) | 0)) * (+e[j >> 3] + +e[j + 8 >> 3]))) % +(d | 0)) >>> 0 << 2) | 0;\n d = b[c >> 2] | 0;\n b: do { if (d | 0) {\n f = j + 32 | 0;\n if ((d | 0) == (j | 0)) { b[c >> 2] = b[f >> 2]; }else {\n d = d + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) { break; }\n while (1) {\n if ((c | 0) == (j | 0)) { break; }\n d = c + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) { break b; }\n }\n b[d >> 2] = b[f >> 2];\n }\n Ed(j);\n b[i >> 2] = (b[i >> 2] | 0) + -1;\n } } while (0);\n }\n Ed(b[a >> 2] | 0);\n return;\n }\n function wd(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = b[a + 4 >> 2] | 0;\n d = 0;\n while (1) {\n if ((d | 0) >= (e | 0)) {\n c = 0;\n d = 4;\n break;\n }\n c = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n if (!c) { d = d + 1 | 0; }else {\n d = 4;\n break;\n }\n }\n if ((d | 0) == 4) { return c | 0; }\n return 0;\n }\n function xd(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n d = (b[a >> 2] | 0) + (d << 2) | 0;\n f = b[d >> 2] | 0;\n if (!f) {\n h = 1;\n return h | 0;\n }\n h = c + 32 | 0;\n do { if ((f | 0) != (c | 0)) {\n d = b[f + 32 >> 2] | 0;\n if (!d) {\n h = 1;\n return h | 0;\n }\n g = d;\n while (1) {\n if ((g | 0) == (c | 0)) {\n g = 8;\n break;\n }\n d = b[g + 32 >> 2] | 0;\n if (!d) {\n d = 1;\n g = 10;\n break;\n } else {\n f = g;\n g = d;\n }\n }\n if ((g | 0) == 8) {\n b[f + 32 >> 2] = b[h >> 2];\n break;\n } else if ((g | 0) == 10) { return d | 0; }\n } else { b[d >> 2] = b[h >> 2]; } } while (0);\n Ed(c);\n h = a + 8 | 0;\n b[h >> 2] = (b[h >> 2] | 0) + -1;\n h = 0;\n return h | 0;\n }\n function yd(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = Dd(40) | 0;\n if (!h) { I(27872, 27842, 98, 27885); }\n b[h >> 2] = b[c >> 2];\n b[h + 4 >> 2] = b[c + 4 >> 2];\n b[h + 8 >> 2] = b[c + 8 >> 2];\n b[h + 12 >> 2] = b[c + 12 >> 2];\n g = h + 16 | 0;\n b[g >> 2] = b[d >> 2];\n b[g + 4 >> 2] = b[d + 4 >> 2];\n b[g + 8 >> 2] = b[d + 8 >> 2];\n b[g + 12 >> 2] = b[d + 12 >> 2];\n b[h + 32 >> 2] = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = (b[a >> 2] | 0) + (g << 2) | 0;\n f = b[g >> 2] | 0;\n do { if (!f) { b[g >> 2] = h; }else {\n while (1) {\n if (jc(f, c) | 0 ? jc(f + 16 | 0, d) | 0 : 0) { break; }\n g = b[f + 32 >> 2] | 0;\n f = (g | 0) == 0 ? f : g;\n if (!(b[f + 32 >> 2] | 0)) {\n i = 10;\n break;\n }\n }\n if ((i | 0) == 10) {\n b[f + 32 >> 2] = h;\n break;\n }\n Ed(h);\n i = f;\n return i | 0;\n } } while (0);\n i = a + 8 | 0;\n b[i >> 2] = (b[i >> 2] | 0) + 1;\n i = h;\n return i | 0;\n }\n function zd(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0,\n g = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = b[(b[a >> 2] | 0) + (g << 2) >> 2] | 0;\n if (!g) {\n d = 0;\n return d | 0;\n }\n if (!d) {\n a = g;\n while (1) {\n if (jc(a, c) | 0) {\n f = 10;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n if ((f | 0) == 10) { return a | 0; }\n }\n a = g;\n while (1) {\n if (jc(a, c) | 0 ? jc(a + 16 | 0, d) | 0 : 0) {\n f = 10;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n if ((f | 0) == 10) { return a | 0; }\n return 0;\n }\n function Ad(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n a = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n if (!a) {\n d = 0;\n return d | 0;\n }\n while (1) {\n if (jc(a, c) | 0) {\n c = 5;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n c = 5;\n break;\n }\n }\n if ((c | 0) == 5) { return a | 0; }\n return 0;\n }\n function Bd() {\n return 27904;\n }\n function Cd(a) {\n a = +a;\n return ~~+Yd(+a) | 0;\n }\n function Dd(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0;\n w = T;\n T = T + 16 | 0;\n n = w;\n do { if (a >>> 0 < 245) {\n k = a >>> 0 < 11 ? 16 : a + 11 & -8;\n a = k >>> 3;\n m = b[6977] | 0;\n d = m >>> a;\n if (d & 3 | 0) {\n c = (d & 1 ^ 1) + a | 0;\n a = 27948 + (c << 1 << 2) | 0;\n d = a + 8 | 0;\n e = b[d >> 2] | 0;\n f = e + 8 | 0;\n g = b[f >> 2] | 0;\n if ((g | 0) == (a | 0)) { b[6977] = m & ~(1 << c); }else {\n b[g + 12 >> 2] = a;\n b[d >> 2] = g;\n }\n v = c << 3;\n b[e + 4 >> 2] = v | 3;\n v = e + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n v = f;\n T = w;\n return v | 0;\n }\n l = b[6979] | 0;\n if (k >>> 0 > l >>> 0) {\n if (d | 0) {\n c = 2 << a;\n c = d << a & (c | 0 - c);\n c = (c & 0 - c) + -1 | 0;\n i = c >>> 12 & 16;\n c = c >>> i;\n d = c >>> 5 & 8;\n c = c >>> d;\n g = c >>> 2 & 4;\n c = c >>> g;\n a = c >>> 1 & 2;\n c = c >>> a;\n e = c >>> 1 & 1;\n e = (d | i | g | a | e) + (c >>> e) | 0;\n c = 27948 + (e << 1 << 2) | 0;\n a = c + 8 | 0;\n g = b[a >> 2] | 0;\n i = g + 8 | 0;\n d = b[i >> 2] | 0;\n if ((d | 0) == (c | 0)) {\n a = m & ~(1 << e);\n b[6977] = a;\n } else {\n b[d + 12 >> 2] = c;\n b[a >> 2] = d;\n a = m;\n }\n v = e << 3;\n h = v - k | 0;\n b[g + 4 >> 2] = k | 3;\n f = g + k | 0;\n b[f + 4 >> 2] = h | 1;\n b[g + v >> 2] = h;\n if (l | 0) {\n e = b[6982] | 0;\n c = l >>> 3;\n d = 27948 + (c << 1 << 2) | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[6977] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n b[6979] = h;\n b[6982] = f;\n v = i;\n T = w;\n return v | 0;\n }\n g = b[6978] | 0;\n if (g) {\n d = (g & 0 - g) + -1 | 0;\n f = d >>> 12 & 16;\n d = d >>> f;\n e = d >>> 5 & 8;\n d = d >>> e;\n h = d >>> 2 & 4;\n d = d >>> h;\n i = d >>> 1 & 2;\n d = d >>> i;\n j = d >>> 1 & 1;\n j = b[28212 + ((e | f | h | i | j) + (d >>> j) << 2) >> 2] | 0;\n d = j;\n i = j;\n j = (b[j + 4 >> 2] & -8) - k | 0;\n while (1) {\n a = b[d + 16 >> 2] | 0;\n if (!a) {\n a = b[d + 20 >> 2] | 0;\n if (!a) { break; }\n }\n h = (b[a + 4 >> 2] & -8) - k | 0;\n f = h >>> 0 < j >>> 0;\n d = a;\n i = f ? a : i;\n j = f ? h : j;\n }\n h = i + k | 0;\n if (h >>> 0 > i >>> 0) {\n f = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n do { if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n d = 0;\n break;\n }\n }\n while (1) {\n e = c + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = c + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n c = d;\n a = e;\n }\n } else {\n c = d;\n a = e;\n }\n }\n b[a >> 2] = 0;\n d = c;\n } else {\n d = b[i + 8 >> 2] | 0;\n b[d + 12 >> 2] = c;\n b[c + 8 >> 2] = d;\n d = c;\n } } while (0);\n do { if (f | 0) {\n c = b[i + 28 >> 2] | 0;\n a = 28212 + (c << 2) | 0;\n if ((i | 0) == (b[a >> 2] | 0)) {\n b[a >> 2] = d;\n if (!d) {\n b[6978] = g & ~(1 << c);\n break;\n }\n } else {\n v = f + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : f + 20 | 0) >> 2] = d;\n if (!d) { break; }\n }\n b[d + 24 >> 2] = f;\n c = b[i + 16 >> 2] | 0;\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n c = b[i + 20 >> 2] | 0;\n if (c | 0) {\n b[d + 20 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n } } while (0);\n if (j >>> 0 < 16) {\n v = j + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[h + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n if (l | 0) {\n e = b[6982] | 0;\n c = l >>> 3;\n d = 27948 + (c << 1 << 2) | 0;\n c = 1 << c;\n if (!(c & m)) {\n b[6977] = c | m;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n b[6979] = j;\n b[6982] = h;\n }\n v = i + 8 | 0;\n T = w;\n return v | 0;\n } else { m = k; }\n } else { m = k; }\n } else { m = k; }\n } else if (a >>> 0 <= 4294967231) {\n a = a + 11 | 0;\n k = a & -8;\n e = b[6978] | 0;\n if (e) {\n f = 0 - k | 0;\n a = a >>> 8;\n if (a) {\n if (k >>> 0 > 16777215) { j = 31; }else {\n m = (a + 1048320 | 0) >>> 16 & 8;\n q = a << m;\n i = (q + 520192 | 0) >>> 16 & 4;\n q = q << i;\n j = (q + 245760 | 0) >>> 16 & 2;\n j = 14 - (i | m | j) + (q << j >>> 15) | 0;\n j = k >>> (j + 7 | 0) & 1 | j << 1;\n }\n } else { j = 0; }\n d = b[28212 + (j << 2) >> 2] | 0;\n a: do { if (!d) {\n d = 0;\n a = 0;\n q = 61;\n } else {\n a = 0;\n i = k << ((j | 0) == 31 ? 0 : 25 - (j >>> 1) | 0);\n g = 0;\n while (1) {\n h = (b[d + 4 >> 2] & -8) - k | 0;\n if (h >>> 0 < f >>> 0) { if (!h) {\n a = d;\n f = 0;\n q = 65;\n break a;\n } else {\n a = d;\n f = h;\n } }\n q = b[d + 20 >> 2] | 0;\n d = b[d + 16 + (i >>> 31 << 2) >> 2] | 0;\n g = (q | 0) == 0 | (q | 0) == (d | 0) ? g : q;\n if (!d) {\n d = g;\n q = 61;\n break;\n } else { i = i << 1; }\n }\n } } while (0);\n if ((q | 0) == 61) {\n if ((d | 0) == 0 & (a | 0) == 0) {\n a = 2 << j;\n a = (a | 0 - a) & e;\n if (!a) {\n m = k;\n break;\n }\n m = (a & 0 - a) + -1 | 0;\n h = m >>> 12 & 16;\n m = m >>> h;\n g = m >>> 5 & 8;\n m = m >>> g;\n i = m >>> 2 & 4;\n m = m >>> i;\n j = m >>> 1 & 2;\n m = m >>> j;\n d = m >>> 1 & 1;\n a = 0;\n d = b[28212 + ((g | h | i | j | d) + (m >>> d) << 2) >> 2] | 0;\n }\n if (!d) {\n i = a;\n h = f;\n } else { q = 65; }\n }\n if ((q | 0) == 65) {\n g = d;\n while (1) {\n m = (b[g + 4 >> 2] & -8) - k | 0;\n d = m >>> 0 < f >>> 0;\n f = d ? m : f;\n a = d ? g : a;\n d = b[g + 16 >> 2] | 0;\n if (!d) { d = b[g + 20 >> 2] | 0; }\n if (!d) {\n i = a;\n h = f;\n break;\n } else { g = d; }\n }\n }\n if (((i | 0) != 0 ? h >>> 0 < ((b[6979] | 0) - k | 0) >>> 0 : 0) ? (l = i + k | 0, l >>> 0 > i >>> 0) : 0) {\n g = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n do { if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n c = 0;\n break;\n }\n }\n while (1) {\n f = c + 20 | 0;\n d = b[f >> 2] | 0;\n if (!d) {\n f = c + 16 | 0;\n d = b[f >> 2] | 0;\n if (!d) { break; }else {\n c = d;\n a = f;\n }\n } else {\n c = d;\n a = f;\n }\n }\n b[a >> 2] = 0;\n } else {\n v = b[i + 8 >> 2] | 0;\n b[v + 12 >> 2] = c;\n b[c + 8 >> 2] = v;\n } } while (0);\n do { if (g) {\n a = b[i + 28 >> 2] | 0;\n d = 28212 + (a << 2) | 0;\n if ((i | 0) == (b[d >> 2] | 0)) {\n b[d >> 2] = c;\n if (!c) {\n e = e & ~(1 << a);\n b[6978] = e;\n break;\n }\n } else {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : g + 20 | 0) >> 2] = c;\n if (!c) { break; }\n }\n b[c + 24 >> 2] = g;\n a = b[i + 16 >> 2] | 0;\n if (a | 0) {\n b[c + 16 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n a = b[i + 20 >> 2] | 0;\n if (a) {\n b[c + 20 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n } } while (0);\n b: do { if (h >>> 0 < 16) {\n v = h + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[l + 4 >> 2] = h | 1;\n b[l + h >> 2] = h;\n c = h >>> 3;\n if (h >>> 0 < 256) {\n d = 27948 + (c << 1 << 2) | 0;\n a = b[6977] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[6977] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = l;\n b[c + 12 >> 2] = l;\n b[l + 8 >> 2] = c;\n b[l + 12 >> 2] = d;\n break;\n }\n c = h >>> 8;\n if (c) {\n if (h >>> 0 > 16777215) { d = 31; }else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n d = (v + 245760 | 0) >>> 16 & 2;\n d = 14 - (t | u | d) + (v << d >>> 15) | 0;\n d = h >>> (d + 7 | 0) & 1 | d << 1;\n }\n } else { d = 0; }\n c = 28212 + (d << 2) | 0;\n b[l + 28 >> 2] = d;\n a = l + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = 1 << d;\n if (!(e & a)) {\n b[6978] = e | a;\n b[c >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break;\n }\n c = b[c >> 2] | 0;\n c: do { if ((b[c + 4 >> 2] & -8 | 0) != (h | 0)) {\n e = h << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0);\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n if ((b[a + 4 >> 2] & -8 | 0) == (h | 0)) {\n c = a;\n break c;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break b;\n } } while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = l;\n b[u >> 2] = l;\n b[l + 8 >> 2] = v;\n b[l + 12 >> 2] = c;\n b[l + 24 >> 2] = 0;\n } } while (0);\n v = i + 8 | 0;\n T = w;\n return v | 0;\n } else { m = k; }\n } else { m = k; }\n } else { m = -1; } } while (0);\n d = b[6979] | 0;\n if (d >>> 0 >= m >>> 0) {\n c = d - m | 0;\n a = b[6982] | 0;\n if (c >>> 0 > 15) {\n v = a + m | 0;\n b[6982] = v;\n b[6979] = c;\n b[v + 4 >> 2] = c | 1;\n b[a + d >> 2] = c;\n b[a + 4 >> 2] = m | 3;\n } else {\n b[6979] = 0;\n b[6982] = 0;\n b[a + 4 >> 2] = d | 3;\n v = a + d + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n }\n v = a + 8 | 0;\n T = w;\n return v | 0;\n }\n h = b[6980] | 0;\n if (h >>> 0 > m >>> 0) {\n t = h - m | 0;\n b[6980] = t;\n v = b[6983] | 0;\n u = v + m | 0;\n b[6983] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n T = w;\n return v | 0;\n }\n if (!(b[7095] | 0)) {\n b[7097] = 4096;\n b[7096] = 4096;\n b[7098] = -1;\n b[7099] = -1;\n b[7100] = 0;\n b[7088] = 0;\n b[7095] = n & -16 ^ 1431655768;\n a = 4096;\n } else { a = b[7097] | 0; }\n i = m + 48 | 0;\n j = m + 47 | 0;\n g = a + j | 0;\n f = 0 - a | 0;\n k = g & f;\n if (k >>> 0 <= m >>> 0) {\n v = 0;\n T = w;\n return v | 0;\n }\n a = b[7087] | 0;\n if (a | 0 ? (l = b[7085] | 0, n = l + k | 0, n >>> 0 <= l >>> 0 | n >>> 0 > a >>> 0) : 0) {\n v = 0;\n T = w;\n return v | 0;\n }\n d: do { if (!(b[7088] & 4)) {\n d = b[6983] | 0;\n e: do { if (d) {\n e = 28356;\n while (1) {\n n = b[e >> 2] | 0;\n if (n >>> 0 <= d >>> 0 ? (n + (b[e + 4 >> 2] | 0) | 0) >>> 0 > d >>> 0 : 0) { break; }\n a = b[e + 8 >> 2] | 0;\n if (!a) {\n q = 128;\n break e;\n } else { e = a; }\n }\n c = g - h & f;\n if (c >>> 0 < 2147483647) {\n a = Zd(c | 0) | 0;\n if ((a | 0) == ((b[e >> 2] | 0) + (b[e + 4 >> 2] | 0) | 0)) {\n if ((a | 0) != (-1 | 0)) {\n h = c;\n g = a;\n q = 145;\n break d;\n }\n } else {\n e = a;\n q = 136;\n }\n } else { c = 0; }\n } else { q = 128; } } while (0);\n do { if ((q | 0) == 128) {\n d = Zd(0) | 0;\n if ((d | 0) != (-1 | 0) ? (c = d, o = b[7096] | 0, p = o + -1 | 0, c = ((p & c | 0) == 0 ? 0 : (p + c & 0 - o) - c | 0) + k | 0, o = b[7085] | 0, p = c + o | 0, c >>> 0 > m >>> 0 & c >>> 0 < 2147483647) : 0) {\n n = b[7087] | 0;\n if (n | 0 ? p >>> 0 <= o >>> 0 | p >>> 0 > n >>> 0 : 0) {\n c = 0;\n break;\n }\n a = Zd(c | 0) | 0;\n if ((a | 0) == (d | 0)) {\n h = c;\n g = d;\n q = 145;\n break d;\n } else {\n e = a;\n q = 136;\n }\n } else { c = 0; }\n } } while (0);\n do { if ((q | 0) == 136) {\n d = 0 - c | 0;\n if (!(i >>> 0 > c >>> 0 & (c >>> 0 < 2147483647 & (e | 0) != (-1 | 0)))) { if ((e | 0) == (-1 | 0)) {\n c = 0;\n break;\n } else {\n h = c;\n g = e;\n q = 145;\n break d;\n } }\n a = b[7097] | 0;\n a = j - c + a & 0 - a;\n if (a >>> 0 >= 2147483647) {\n h = c;\n g = e;\n q = 145;\n break d;\n }\n if ((Zd(a | 0) | 0) == (-1 | 0)) {\n Zd(d | 0) | 0;\n c = 0;\n break;\n } else {\n h = a + c | 0;\n g = e;\n q = 145;\n break d;\n }\n } } while (0);\n b[7088] = b[7088] | 4;\n q = 143;\n } else {\n c = 0;\n q = 143;\n } } while (0);\n if (((q | 0) == 143 ? k >>> 0 < 2147483647 : 0) ? (t = Zd(k | 0) | 0, p = Zd(0) | 0, r = p - t | 0, s = r >>> 0 > (m + 40 | 0) >>> 0, !((t | 0) == (-1 | 0) | s ^ 1 | t >>> 0 < p >>> 0 & ((t | 0) != (-1 | 0) & (p | 0) != (-1 | 0)) ^ 1)) : 0) {\n h = s ? r : c;\n g = t;\n q = 145;\n }\n if ((q | 0) == 145) {\n c = (b[7085] | 0) + h | 0;\n b[7085] = c;\n if (c >>> 0 > (b[7086] | 0) >>> 0) { b[7086] = c; }\n j = b[6983] | 0;\n f: do { if (j) {\n c = 28356;\n while (1) {\n a = b[c >> 2] | 0;\n d = b[c + 4 >> 2] | 0;\n if ((g | 0) == (a + d | 0)) {\n q = 154;\n break;\n }\n e = b[c + 8 >> 2] | 0;\n if (!e) { break; }else { c = e; }\n }\n if (((q | 0) == 154 ? (u = c + 4 | 0, (b[c + 12 >> 2] & 8 | 0) == 0) : 0) ? g >>> 0 > j >>> 0 & a >>> 0 <= j >>> 0 : 0) {\n b[u >> 2] = d + h;\n v = (b[6980] | 0) + h | 0;\n t = j + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = j + t | 0;\n t = v - t | 0;\n b[6983] = u;\n b[6980] = t;\n b[u + 4 >> 2] = t | 1;\n b[j + v + 4 >> 2] = 40;\n b[6984] = b[7099];\n break;\n }\n if (g >>> 0 < (b[6981] | 0) >>> 0) { b[6981] = g; }\n d = g + h | 0;\n c = 28356;\n while (1) {\n if ((b[c >> 2] | 0) == (d | 0)) {\n q = 162;\n break;\n }\n a = b[c + 8 >> 2] | 0;\n if (!a) { break; }else { c = a; }\n }\n if ((q | 0) == 162 ? (b[c + 12 >> 2] & 8 | 0) == 0 : 0) {\n b[c >> 2] = g;\n l = c + 4 | 0;\n b[l >> 2] = (b[l >> 2] | 0) + h;\n l = g + 8 | 0;\n l = g + ((l & 7 | 0) == 0 ? 0 : 0 - l & 7) | 0;\n c = d + 8 | 0;\n c = d + ((c & 7 | 0) == 0 ? 0 : 0 - c & 7) | 0;\n k = l + m | 0;\n i = c - l - m | 0;\n b[l + 4 >> 2] = m | 3;\n g: do { if ((j | 0) == (c | 0)) {\n v = (b[6980] | 0) + i | 0;\n b[6980] = v;\n b[6983] = k;\n b[k + 4 >> 2] = v | 1;\n } else {\n if ((b[6982] | 0) == (c | 0)) {\n v = (b[6979] | 0) + i | 0;\n b[6979] = v;\n b[6982] = k;\n b[k + 4 >> 2] = v | 1;\n b[k + v >> 2] = v;\n break;\n }\n a = b[c + 4 >> 2] | 0;\n if ((a & 3 | 0) == 1) {\n h = a & -8;\n e = a >>> 3;\n h: do { if (a >>> 0 < 256) {\n a = b[c + 8 >> 2] | 0;\n d = b[c + 12 >> 2] | 0;\n if ((d | 0) == (a | 0)) {\n b[6977] = b[6977] & ~(1 << e);\n break;\n } else {\n b[a + 12 >> 2] = d;\n b[d + 8 >> 2] = a;\n break;\n }\n } else {\n g = b[c + 24 >> 2] | 0;\n a = b[c + 12 >> 2] | 0;\n do { if ((a | 0) == (c | 0)) {\n d = c + 16 | 0;\n e = d + 4 | 0;\n a = b[e >> 2] | 0;\n if (!a) {\n a = b[d >> 2] | 0;\n if (!a) {\n a = 0;\n break;\n }\n } else { d = e; }\n while (1) {\n f = a + 20 | 0;\n e = b[f >> 2] | 0;\n if (!e) {\n f = a + 16 | 0;\n e = b[f >> 2] | 0;\n if (!e) { break; }else {\n a = e;\n d = f;\n }\n } else {\n a = e;\n d = f;\n }\n }\n b[d >> 2] = 0;\n } else {\n v = b[c + 8 >> 2] | 0;\n b[v + 12 >> 2] = a;\n b[a + 8 >> 2] = v;\n } } while (0);\n if (!g) { break; }\n d = b[c + 28 >> 2] | 0;\n e = 28212 + (d << 2) | 0;\n do { if ((b[e >> 2] | 0) != (c | 0)) {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (c | 0) ? v : g + 20 | 0) >> 2] = a;\n if (!a) { break h; }\n } else {\n b[e >> 2] = a;\n if (a | 0) { break; }\n b[6978] = b[6978] & ~(1 << d);\n break h;\n } } while (0);\n b[a + 24 >> 2] = g;\n d = c + 16 | 0;\n e = b[d >> 2] | 0;\n if (e | 0) {\n b[a + 16 >> 2] = e;\n b[e + 24 >> 2] = a;\n }\n d = b[d + 4 >> 2] | 0;\n if (!d) { break; }\n b[a + 20 >> 2] = d;\n b[d + 24 >> 2] = a;\n } } while (0);\n c = c + h | 0;\n f = h + i | 0;\n } else { f = i; }\n c = c + 4 | 0;\n b[c >> 2] = b[c >> 2] & -2;\n b[k + 4 >> 2] = f | 1;\n b[k + f >> 2] = f;\n c = f >>> 3;\n if (f >>> 0 < 256) {\n d = 27948 + (c << 1 << 2) | 0;\n a = b[6977] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[6977] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = k;\n b[c + 12 >> 2] = k;\n b[k + 8 >> 2] = c;\n b[k + 12 >> 2] = d;\n break;\n }\n c = f >>> 8;\n do { if (!c) { e = 0; }else {\n if (f >>> 0 > 16777215) {\n e = 31;\n break;\n }\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n } } while (0);\n c = 28212 + (e << 2) | 0;\n b[k + 28 >> 2] = e;\n a = k + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = b[6978] | 0;\n d = 1 << e;\n if (!(a & d)) {\n b[6978] = a | d;\n b[c >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break;\n }\n c = b[c >> 2] | 0;\n i: do { if ((b[c + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n if ((b[a + 4 >> 2] & -8 | 0) == (f | 0)) {\n c = a;\n break i;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break g;\n } } while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = k;\n b[u >> 2] = k;\n b[k + 8 >> 2] = v;\n b[k + 12 >> 2] = c;\n b[k + 24 >> 2] = 0;\n } } while (0);\n v = l + 8 | 0;\n T = w;\n return v | 0;\n }\n c = 28356;\n while (1) {\n a = b[c >> 2] | 0;\n if (a >>> 0 <= j >>> 0 ? (v = a + (b[c + 4 >> 2] | 0) | 0, v >>> 0 > j >>> 0) : 0) { break; }\n c = b[c + 8 >> 2] | 0;\n }\n f = v + -47 | 0;\n a = f + 8 | 0;\n a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0;\n f = j + 16 | 0;\n a = a >>> 0 < f >>> 0 ? j : a;\n c = a + 8 | 0;\n d = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = d - t | 0;\n b[6983] = u;\n b[6980] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + d + 4 >> 2] = 40;\n b[6984] = b[7099];\n d = a + 4 | 0;\n b[d >> 2] = 27;\n b[c >> 2] = b[7089];\n b[c + 4 >> 2] = b[7090];\n b[c + 8 >> 2] = b[7091];\n b[c + 12 >> 2] = b[7092];\n b[7089] = g;\n b[7090] = h;\n b[7092] = 0;\n b[7091] = c;\n c = a + 24 | 0;\n do {\n u = c;\n c = c + 4 | 0;\n b[c >> 2] = 7;\n } while ((u + 8 | 0) >>> 0 < v >>> 0);\n if ((a | 0) != (j | 0)) {\n g = a - j | 0;\n b[d >> 2] = b[d >> 2] & -2;\n b[j + 4 >> 2] = g | 1;\n b[a >> 2] = g;\n c = g >>> 3;\n if (g >>> 0 < 256) {\n d = 27948 + (c << 1 << 2) | 0;\n a = b[6977] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[6977] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = j;\n b[c + 12 >> 2] = j;\n b[j + 8 >> 2] = c;\n b[j + 12 >> 2] = d;\n break;\n }\n c = g >>> 8;\n if (c) {\n if (g >>> 0 > 16777215) { e = 31; }else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = g >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else { e = 0; }\n d = 28212 + (e << 2) | 0;\n b[j + 28 >> 2] = e;\n b[j + 20 >> 2] = 0;\n b[f >> 2] = 0;\n c = b[6978] | 0;\n a = 1 << e;\n if (!(c & a)) {\n b[6978] = c | a;\n b[d >> 2] = j;\n b[j + 24 >> 2] = d;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break;\n }\n c = b[d >> 2] | 0;\n j: do { if ((b[c + 4 >> 2] & -8 | 0) != (g | 0)) {\n e = g << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n if ((b[a + 4 >> 2] & -8 | 0) == (g | 0)) {\n c = a;\n break j;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = j;\n b[j + 24 >> 2] = c;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break f;\n } } while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = j;\n b[u >> 2] = j;\n b[j + 8 >> 2] = v;\n b[j + 12 >> 2] = c;\n b[j + 24 >> 2] = 0;\n }\n } else {\n v = b[6981] | 0;\n if ((v | 0) == 0 | g >>> 0 < v >>> 0) { b[6981] = g; }\n b[7089] = g;\n b[7090] = h;\n b[7092] = 0;\n b[6986] = b[7095];\n b[6985] = -1;\n b[6990] = 27948;\n b[6989] = 27948;\n b[6992] = 27956;\n b[6991] = 27956;\n b[6994] = 27964;\n b[6993] = 27964;\n b[6996] = 27972;\n b[6995] = 27972;\n b[6998] = 27980;\n b[6997] = 27980;\n b[7e3] = 27988;\n b[6999] = 27988;\n b[7002] = 27996;\n b[7001] = 27996;\n b[7004] = 28004;\n b[7003] = 28004;\n b[7006] = 28012;\n b[7005] = 28012;\n b[7008] = 28020;\n b[7007] = 28020;\n b[7010] = 28028;\n b[7009] = 28028;\n b[7012] = 28036;\n b[7011] = 28036;\n b[7014] = 28044;\n b[7013] = 28044;\n b[7016] = 28052;\n b[7015] = 28052;\n b[7018] = 28060;\n b[7017] = 28060;\n b[7020] = 28068;\n b[7019] = 28068;\n b[7022] = 28076;\n b[7021] = 28076;\n b[7024] = 28084;\n b[7023] = 28084;\n b[7026] = 28092;\n b[7025] = 28092;\n b[7028] = 28100;\n b[7027] = 28100;\n b[7030] = 28108;\n b[7029] = 28108;\n b[7032] = 28116;\n b[7031] = 28116;\n b[7034] = 28124;\n b[7033] = 28124;\n b[7036] = 28132;\n b[7035] = 28132;\n b[7038] = 28140;\n b[7037] = 28140;\n b[7040] = 28148;\n b[7039] = 28148;\n b[7042] = 28156;\n b[7041] = 28156;\n b[7044] = 28164;\n b[7043] = 28164;\n b[7046] = 28172;\n b[7045] = 28172;\n b[7048] = 28180;\n b[7047] = 28180;\n b[7050] = 28188;\n b[7049] = 28188;\n b[7052] = 28196;\n b[7051] = 28196;\n v = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = v - t | 0;\n b[6983] = u;\n b[6980] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + v + 4 >> 2] = 40;\n b[6984] = b[7099];\n } } while (0);\n c = b[6980] | 0;\n if (c >>> 0 > m >>> 0) {\n t = c - m | 0;\n b[6980] = t;\n v = b[6983] | 0;\n u = v + m | 0;\n b[6983] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n T = w;\n return v | 0;\n }\n }\n v = Bd() | 0;\n b[v >> 2] = 12;\n v = 0;\n T = w;\n return v | 0;\n }\n function Ed(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n if (!a) { return; }\n d = a + -8 | 0;\n f = b[6981] | 0;\n a = b[a + -4 >> 2] | 0;\n c = a & -8;\n j = d + c | 0;\n do { if (!(a & 1)) {\n e = b[d >> 2] | 0;\n if (!(a & 3)) { return; }\n h = d + (0 - e) | 0;\n g = e + c | 0;\n if (h >>> 0 < f >>> 0) { return; }\n if ((b[6982] | 0) == (h | 0)) {\n a = j + 4 | 0;\n c = b[a >> 2] | 0;\n if ((c & 3 | 0) != 3) {\n i = h;\n c = g;\n break;\n }\n b[6979] = g;\n b[a >> 2] = c & -2;\n b[h + 4 >> 2] = g | 1;\n b[h + g >> 2] = g;\n return;\n }\n d = e >>> 3;\n if (e >>> 0 < 256) {\n a = b[h + 8 >> 2] | 0;\n c = b[h + 12 >> 2] | 0;\n if ((c | 0) == (a | 0)) {\n b[6977] = b[6977] & ~(1 << d);\n i = h;\n c = g;\n break;\n } else {\n b[a + 12 >> 2] = c;\n b[c + 8 >> 2] = a;\n i = h;\n c = g;\n break;\n }\n }\n f = b[h + 24 >> 2] | 0;\n a = b[h + 12 >> 2] | 0;\n do { if ((a | 0) == (h | 0)) {\n c = h + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n if (!a) {\n a = b[c >> 2] | 0;\n if (!a) {\n a = 0;\n break;\n }\n } else { c = d; }\n while (1) {\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n b[c >> 2] = 0;\n } else {\n i = b[h + 8 >> 2] | 0;\n b[i + 12 >> 2] = a;\n b[a + 8 >> 2] = i;\n } } while (0);\n if (f) {\n c = b[h + 28 >> 2] | 0;\n d = 28212 + (c << 2) | 0;\n if ((b[d >> 2] | 0) == (h | 0)) {\n b[d >> 2] = a;\n if (!a) {\n b[6978] = b[6978] & ~(1 << c);\n i = h;\n c = g;\n break;\n }\n } else {\n i = f + 16 | 0;\n b[((b[i >> 2] | 0) == (h | 0) ? i : f + 20 | 0) >> 2] = a;\n if (!a) {\n i = h;\n c = g;\n break;\n }\n }\n b[a + 24 >> 2] = f;\n c = h + 16 | 0;\n d = b[c >> 2] | 0;\n if (d | 0) {\n b[a + 16 >> 2] = d;\n b[d + 24 >> 2] = a;\n }\n c = b[c + 4 >> 2] | 0;\n if (c) {\n b[a + 20 >> 2] = c;\n b[c + 24 >> 2] = a;\n i = h;\n c = g;\n } else {\n i = h;\n c = g;\n }\n } else {\n i = h;\n c = g;\n }\n } else {\n i = d;\n h = d;\n } } while (0);\n if (h >>> 0 >= j >>> 0) { return; }\n a = j + 4 | 0;\n e = b[a >> 2] | 0;\n if (!(e & 1)) { return; }\n if (!(e & 2)) {\n if ((b[6983] | 0) == (j | 0)) {\n j = (b[6980] | 0) + c | 0;\n b[6980] = j;\n b[6983] = i;\n b[i + 4 >> 2] = j | 1;\n if ((i | 0) != (b[6982] | 0)) { return; }\n b[6982] = 0;\n b[6979] = 0;\n return;\n }\n if ((b[6982] | 0) == (j | 0)) {\n j = (b[6979] | 0) + c | 0;\n b[6979] = j;\n b[6982] = h;\n b[i + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n return;\n }\n f = (e & -8) + c | 0;\n d = e >>> 3;\n do { if (e >>> 0 < 256) {\n c = b[j + 8 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n if ((a | 0) == (c | 0)) {\n b[6977] = b[6977] & ~(1 << d);\n break;\n } else {\n b[c + 12 >> 2] = a;\n b[a + 8 >> 2] = c;\n break;\n }\n } else {\n g = b[j + 24 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n do { if ((a | 0) == (j | 0)) {\n c = j + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n if (!a) {\n a = b[c >> 2] | 0;\n if (!a) {\n d = 0;\n break;\n }\n } else { c = d; }\n while (1) {\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n b[c >> 2] = 0;\n d = a;\n } else {\n d = b[j + 8 >> 2] | 0;\n b[d + 12 >> 2] = a;\n b[a + 8 >> 2] = d;\n d = a;\n } } while (0);\n if (g | 0) {\n a = b[j + 28 >> 2] | 0;\n c = 28212 + (a << 2) | 0;\n if ((b[c >> 2] | 0) == (j | 0)) {\n b[c >> 2] = d;\n if (!d) {\n b[6978] = b[6978] & ~(1 << a);\n break;\n }\n } else {\n e = g + 16 | 0;\n b[((b[e >> 2] | 0) == (j | 0) ? e : g + 20 | 0) >> 2] = d;\n if (!d) { break; }\n }\n b[d + 24 >> 2] = g;\n a = j + 16 | 0;\n c = b[a >> 2] | 0;\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n a = b[a + 4 >> 2] | 0;\n if (a | 0) {\n b[d + 20 >> 2] = a;\n b[a + 24 >> 2] = d;\n }\n }\n } } while (0);\n b[i + 4 >> 2] = f | 1;\n b[h + f >> 2] = f;\n if ((i | 0) == (b[6982] | 0)) {\n b[6979] = f;\n return;\n }\n } else {\n b[a >> 2] = e & -2;\n b[i + 4 >> 2] = c | 1;\n b[h + c >> 2] = c;\n f = c;\n }\n a = f >>> 3;\n if (f >>> 0 < 256) {\n d = 27948 + (a << 1 << 2) | 0;\n c = b[6977] | 0;\n a = 1 << a;\n if (!(c & a)) {\n b[6977] = c | a;\n a = d;\n c = d + 8 | 0;\n } else {\n c = d + 8 | 0;\n a = b[c >> 2] | 0;\n }\n b[c >> 2] = i;\n b[a + 12 >> 2] = i;\n b[i + 8 >> 2] = a;\n b[i + 12 >> 2] = d;\n return;\n }\n a = f >>> 8;\n if (a) {\n if (f >>> 0 > 16777215) { e = 31; }else {\n h = (a + 1048320 | 0) >>> 16 & 8;\n j = a << h;\n g = (j + 520192 | 0) >>> 16 & 4;\n j = j << g;\n e = (j + 245760 | 0) >>> 16 & 2;\n e = 14 - (g | h | e) + (j << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else { e = 0; }\n a = 28212 + (e << 2) | 0;\n b[i + 28 >> 2] = e;\n b[i + 20 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n c = b[6978] | 0;\n d = 1 << e;\n a: do { if (!(c & d)) {\n b[6978] = c | d;\n b[a >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n } else {\n a = b[a >> 2] | 0;\n b: do { if ((b[a + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while (1) {\n d = a + 16 + (e >>> 31 << 2) | 0;\n c = b[d >> 2] | 0;\n if (!c) { break; }\n if ((b[c + 4 >> 2] & -8 | 0) == (f | 0)) {\n a = c;\n break b;\n } else {\n e = e << 1;\n a = c;\n }\n }\n b[d >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n break a;\n } } while (0);\n h = a + 8 | 0;\n j = b[h >> 2] | 0;\n b[j + 12 >> 2] = i;\n b[h >> 2] = i;\n b[i + 8 >> 2] = j;\n b[i + 12 >> 2] = a;\n b[i + 24 >> 2] = 0;\n } } while (0);\n j = (b[6985] | 0) + -1 | 0;\n b[6985] = j;\n if (j | 0) { return; }\n a = 28364;\n while (1) {\n a = b[a >> 2] | 0;\n if (!a) { break; }else { a = a + 8 | 0; }\n }\n b[6985] = -1;\n return;\n }\n function Fd(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n if (a) {\n d = B(c, a) | 0;\n if ((c | a) >>> 0 > 65535) { d = ((d >>> 0) / (a >>> 0) | 0 | 0) == (c | 0) ? d : -1; }\n } else { d = 0; }\n a = Dd(d) | 0;\n if (!a) { return a | 0; }\n if (!(b[a + -4 >> 2] & 3)) { return a | 0; }\n Xd(a | 0, 0, d | 0) | 0;\n return a | 0;\n }\n function Gd(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n c = a + c >>> 0;\n return (G(b + d + (c >>> 0 < a >>> 0 | 0) >>> 0 | 0), c | 0) | 0;\n }\n function Hd(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;\n return (G(d | 0), a - c >>> 0 | 0) | 0;\n }\n function Id(a) {\n a = a | 0;\n return (a ? 31 - (E(a ^ a - 1) | 0) | 0 : 32) | 0;\n }\n function Jd(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;\n l = a;\n j = c;\n k = j;\n h = d;\n n = e;\n i = n;\n if (!k) {\n g = (f | 0) != 0;\n if (!i) {\n if (g) {\n b[f >> 2] = (l >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n n = 0;\n f = (l >>> 0) / (h >>> 0) >>> 0;\n return (G(n | 0), f) | 0;\n } else {\n if (!g) {\n n = 0;\n f = 0;\n return (G(n | 0), f) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = c & 0;\n n = 0;\n f = 0;\n return (G(n | 0), f) | 0;\n }\n }\n g = (i | 0) == 0;\n do { if (h) {\n if (!g) {\n g = (E(i | 0) | 0) - (E(k | 0) | 0) | 0;\n if (g >>> 0 <= 31) {\n m = g + 1 | 0;\n i = 31 - g | 0;\n c = g - 31 >> 31;\n h = m;\n a = l >>> (m >>> 0) & c | k << i;\n c = k >>> (m >>> 0) & c;\n g = 0;\n i = l << i;\n break;\n }\n if (!f) {\n n = 0;\n f = 0;\n return (G(n | 0), f) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n n = 0;\n f = 0;\n return (G(n | 0), f) | 0;\n }\n g = h - 1 | 0;\n if (g & h | 0) {\n i = (E(h | 0) | 0) + 33 - (E(k | 0) | 0) | 0;\n p = 64 - i | 0;\n m = 32 - i | 0;\n j = m >> 31;\n o = i - 32 | 0;\n c = o >> 31;\n h = i;\n a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & c;\n c = c & k >>> (i >>> 0);\n g = l << p & j;\n i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;\n break;\n }\n if (f | 0) {\n b[f >> 2] = g & l;\n b[f + 4 >> 2] = 0;\n }\n if ((h | 0) == 1) {\n o = j | c & 0;\n p = a | 0 | 0;\n return (G(o | 0), p) | 0;\n } else {\n p = Id(h | 0) | 0;\n o = k >>> (p >>> 0) | 0;\n p = k << 32 - p | l >>> (p >>> 0) | 0;\n return (G(o | 0), p) | 0;\n }\n } else {\n if (g) {\n if (f | 0) {\n b[f >> 2] = (k >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n o = 0;\n p = (k >>> 0) / (h >>> 0) >>> 0;\n return (G(o | 0), p) | 0;\n }\n if (!l) {\n if (f | 0) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = (k >>> 0) % (i >>> 0);\n }\n o = 0;\n p = (k >>> 0) / (i >>> 0) >>> 0;\n return (G(o | 0), p) | 0;\n }\n g = i - 1 | 0;\n if (!(g & i)) {\n if (f | 0) {\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = g & k | c & 0;\n }\n o = 0;\n p = k >>> ((Id(i | 0) | 0) >>> 0);\n return (G(o | 0), p) | 0;\n }\n g = (E(i | 0) | 0) - (E(k | 0) | 0) | 0;\n if (g >>> 0 <= 30) {\n c = g + 1 | 0;\n i = 31 - g | 0;\n h = c;\n a = k << i | l >>> (c >>> 0);\n c = k >>> (c >>> 0);\n g = 0;\n i = l << i;\n break;\n }\n if (!f) {\n o = 0;\n p = 0;\n return (G(o | 0), p) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n o = 0;\n p = 0;\n return (G(o | 0), p) | 0;\n } } while (0);\n if (!h) {\n k = i;\n j = 0;\n i = 0;\n } else {\n m = d | 0 | 0;\n l = n | e & 0;\n k = Gd(m | 0, l | 0, -1, -1) | 0;\n d = H() | 0;\n j = i;\n i = 0;\n do {\n e = j;\n j = g >>> 31 | j << 1;\n g = i | g << 1;\n e = a << 1 | e >>> 31 | 0;\n n = a >>> 31 | c << 1 | 0;\n Hd(k | 0, d | 0, e | 0, n | 0) | 0;\n p = H() | 0;\n o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;\n i = o & 1;\n a = Hd(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0;\n c = H() | 0;\n h = h - 1 | 0;\n } while ((h | 0) != 0);\n k = j;\n j = 0;\n }\n h = 0;\n if (f | 0) {\n b[f >> 2] = a;\n b[f + 4 >> 2] = c;\n }\n o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;\n p = (g << 1 | 0 >>> 31) & -2 | i;\n return (G(o | 0), p) | 0;\n }\n function Kd(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = b >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;\n i = ((b | 0) < 0 ? -1 : 0) >> 31 | ((b | 0) < 0 ? -1 : 0) << 1;\n f = d >> 31 | ((d | 0) < 0 ? -1 : 0) << 1;\n e = ((d | 0) < 0 ? -1 : 0) >> 31 | ((d | 0) < 0 ? -1 : 0) << 1;\n h = Hd(j ^ a | 0, i ^ b | 0, j | 0, i | 0) | 0;\n g = H() | 0;\n a = f ^ j;\n b = e ^ i;\n return Hd((Jd(h, g, Hd(f ^ c | 0, e ^ d | 0, f | 0, e | 0) | 0, H() | 0, 0) | 0) ^ a | 0, (H() | 0) ^ b | 0, a | 0, b | 0) | 0;\n }\n function Ld(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0;\n f = a & 65535;\n e = b & 65535;\n c = B(e, f) | 0;\n d = a >>> 16;\n a = (c >>> 16) + (B(e, d) | 0) | 0;\n e = b >>> 16;\n b = B(e, f) | 0;\n return (G((a >>> 16) + (B(e, d) | 0) + (((a & 65535) + b | 0) >>> 16) | 0), a + b << 16 | c & 65535 | 0) | 0;\n }\n function Md(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n e = a;\n f = c;\n c = Ld(e, f) | 0;\n a = H() | 0;\n return (G((B(b, f) | 0) + (B(d, e) | 0) + a | a & 0 | 0), c | 0 | 0) | 0;\n }\n function Nd(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n f = T;\n T = T + 16 | 0;\n i = f | 0;\n h = c >> 31 | ((c | 0) < 0 ? -1 : 0) << 1;\n g = ((c | 0) < 0 ? -1 : 0) >> 31 | ((c | 0) < 0 ? -1 : 0) << 1;\n k = e >> 31 | ((e | 0) < 0 ? -1 : 0) << 1;\n j = ((e | 0) < 0 ? -1 : 0) >> 31 | ((e | 0) < 0 ? -1 : 0) << 1;\n a = Hd(h ^ a | 0, g ^ c | 0, h | 0, g | 0) | 0;\n c = H() | 0;\n Jd(a, c, Hd(k ^ d | 0, j ^ e | 0, k | 0, j | 0) | 0, H() | 0, i) | 0;\n e = Hd(b[i >> 2] ^ h | 0, b[i + 4 >> 2] ^ g | 0, h | 0, g | 0) | 0;\n d = H() | 0;\n T = f;\n return (G(d | 0), e) | 0;\n }\n function Od(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0;\n g = T;\n T = T + 16 | 0;\n f = g | 0;\n Jd(a, c, d, e, f) | 0;\n T = g;\n return (G(b[f + 4 >> 2] | 0), b[f >> 2] | 0) | 0;\n }\n function Pd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n if ((c | 0) < 32) {\n G(b >> c | 0);\n return a >>> c | (b & (1 << c) - 1) << 32 - c;\n }\n G(((b | 0) < 0 ? -1 : 0) | 0);\n return b >> c - 32 | 0;\n }\n function Qd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n if ((c | 0) < 32) {\n G(b >>> c | 0);\n return a >>> c | (b & (1 << c) - 1) << 32 - c;\n }\n G(0);\n return b >>> c - 32 | 0;\n }\n function Rd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n if ((c | 0) < 32) {\n G(b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c | 0);\n return a << c;\n }\n G(a << c - 32 | 0);\n return 0;\n }\n function Sd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n b = E(b) | 0;\n if ((b | 0) == 32) { b = b + (E(a) | 0) | 0; }\n G(0);\n return b | 0;\n }\n function Td(a, b) {\n a = +a;\n b = +b;\n if (a != a) { return +b; }\n if (b != b) { return +a; }\n return +D(+a, +b);\n }\n function Ud(a, b) {\n a = +a;\n b = +b;\n if (a != a) { return +b; }\n if (b != b) { return +a; }\n return +C(+a, +b);\n }\n function Vd(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n function Wd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0;\n if ((e | 0) >= 8192) {\n L(c | 0, d | 0, e | 0) | 0;\n return c | 0;\n }\n h = c | 0;\n g = c + e | 0;\n if ((c & 3) == (d & 3)) {\n while (c & 3) {\n if (!e) { return h | 0; }\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n e = e - 1 | 0;\n }\n e = g & -4 | 0;\n f = e - 64 | 0;\n while ((c | 0) <= (f | 0)) {\n b[c >> 2] = b[d >> 2];\n b[c + 4 >> 2] = b[d + 4 >> 2];\n b[c + 8 >> 2] = b[d + 8 >> 2];\n b[c + 12 >> 2] = b[d + 12 >> 2];\n b[c + 16 >> 2] = b[d + 16 >> 2];\n b[c + 20 >> 2] = b[d + 20 >> 2];\n b[c + 24 >> 2] = b[d + 24 >> 2];\n b[c + 28 >> 2] = b[d + 28 >> 2];\n b[c + 32 >> 2] = b[d + 32 >> 2];\n b[c + 36 >> 2] = b[d + 36 >> 2];\n b[c + 40 >> 2] = b[d + 40 >> 2];\n b[c + 44 >> 2] = b[d + 44 >> 2];\n b[c + 48 >> 2] = b[d + 48 >> 2];\n b[c + 52 >> 2] = b[d + 52 >> 2];\n b[c + 56 >> 2] = b[d + 56 >> 2];\n b[c + 60 >> 2] = b[d + 60 >> 2];\n c = c + 64 | 0;\n d = d + 64 | 0;\n }\n while ((c | 0) < (e | 0)) {\n b[c >> 2] = b[d >> 2];\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n } else {\n e = g - 4 | 0;\n while ((c | 0) < (e | 0)) {\n a[c >> 0] = a[d >> 0] | 0;\n a[c + 1 >> 0] = a[d + 1 >> 0] | 0;\n a[c + 2 >> 0] = a[d + 2 >> 0] | 0;\n a[c + 3 >> 0] = a[d + 3 >> 0] | 0;\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n }\n while ((c | 0) < (g | 0)) {\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n }\n return h | 0;\n }\n function Xd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = c + e | 0;\n d = d & 255;\n if ((e | 0) >= 67) {\n while (c & 3) {\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n f = h & -4 | 0;\n i = d | d << 8 | d << 16 | d << 24;\n g = f - 64 | 0;\n while ((c | 0) <= (g | 0)) {\n b[c >> 2] = i;\n b[c + 4 >> 2] = i;\n b[c + 8 >> 2] = i;\n b[c + 12 >> 2] = i;\n b[c + 16 >> 2] = i;\n b[c + 20 >> 2] = i;\n b[c + 24 >> 2] = i;\n b[c + 28 >> 2] = i;\n b[c + 32 >> 2] = i;\n b[c + 36 >> 2] = i;\n b[c + 40 >> 2] = i;\n b[c + 44 >> 2] = i;\n b[c + 48 >> 2] = i;\n b[c + 52 >> 2] = i;\n b[c + 56 >> 2] = i;\n b[c + 60 >> 2] = i;\n c = c + 64 | 0;\n }\n while ((c | 0) < (f | 0)) {\n b[c >> 2] = i;\n c = c + 4 | 0;\n }\n }\n while ((c | 0) < (h | 0)) {\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n return h - e | 0;\n }\n function Yd(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n function Zd(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = K() | 0;\n d = b[g >> 2] | 0;\n c = d + a | 0;\n if ((a | 0) > 0 & (c | 0) < (d | 0) | (c | 0) < 0) {\n N(c | 0) | 0;\n J(12);\n return -1;\n }\n if ((c | 0) > (e | 0)) { if (!(M(c | 0) | 0)) {\n J(12);\n return -1;\n } }\n b[g >> 2] = c;\n return d | 0;\n }\n\n // EMSCRIPTEN_END_FUNCS\n return {\n ___divdi3: Kd,\n ___muldi3: Md,\n ___remdi3: Nd,\n ___uremdi3: Od,\n _areNeighborCells: ib,\n _bitshift64Ashr: Pd,\n _bitshift64Lshr: Qd,\n _bitshift64Shl: Rd,\n _calloc: Fd,\n _cellAreaKm2: xc,\n _cellAreaM2: yc,\n _cellAreaRads2: wc,\n _cellToBoundary: _b,\n _cellToCenterChild: Kb,\n _cellToChildPos: dc,\n _cellToChildren: Ib,\n _cellToChildrenSize: Gb,\n _cellToLatLng: Zb,\n _cellToLocalIj: Jc,\n _cellToParent: Fb,\n _cellToVertex: qd,\n _cellToVertexes: rd,\n _cellsToDirectedEdge: jb,\n _cellsToLinkedMultiPolygon: na,\n _childPosToCell: ec,\n _compactCells: Lb,\n _destroyLinkedMultiPolygon: Ec,\n _directedEdgeToBoundary: pb,\n _directedEdgeToCells: nb,\n _edgeLengthKm: Ac,\n _edgeLengthM: Bc,\n _edgeLengthRads: zc,\n _emscripten_replace_memory: W,\n _free: Ed,\n _getBaseCellNumber: Cb,\n _getDirectedEdgeDestination: lb,\n _getDirectedEdgeOrigin: kb,\n _getHexagonAreaAvgKm2: qc,\n _getHexagonAreaAvgM2: rc,\n _getHexagonEdgeLengthAvgKm: sc,\n _getHexagonEdgeLengthAvgM: tc,\n _getIcosahedronFaces: ac,\n _getNumCells: uc,\n _getPentagons: cc,\n _getRes0Cells: ya,\n _getResolution: Bb,\n _greatCircleDistanceKm: mc,\n _greatCircleDistanceM: nc,\n _greatCircleDistanceRads: lc,\n _gridDisk: aa,\n _gridDiskDistances: ba,\n _gridDistance: Lc,\n _gridPathCells: Nc,\n _gridPathCellsSize: Mc,\n _gridRing: fa,\n _gridRingUnsafe: ga,\n _i64Add: Gd,\n _i64Subtract: Hd,\n _isPentagon: Hb,\n _isResClassIII: Ob,\n _isValidCell: Db,\n _isValidDirectedEdge: mb,\n _isValidVertex: td,\n _latLngToCell: Wb,\n _llvm_ctlz_i64: Sd,\n _llvm_maxnum_f64: Td,\n _llvm_minnum_f64: Ud,\n _llvm_round_f64: Vd,\n _localIjToCell: Kc,\n _malloc: Dd,\n _maxFaceCount: $b,\n _maxGridDiskSize: $,\n _maxPolygonToCellsSize: ja,\n _maxPolygonToCellsSizeExperimental: Uc,\n _memcpy: Wd,\n _memset: Xd,\n _originToDirectedEdges: ob,\n _pentagonCount: bc,\n _polygonToCells: la,\n _polygonToCellsExperimental: Tc,\n _readInt64AsDoubleFromPointer: id,\n _res0CellCount: xa,\n _round: Yd,\n _sbrk: Zd,\n _sizeOfCellBoundary: dd,\n _sizeOfCoordIJ: hd,\n _sizeOfGeoLoop: ed,\n _sizeOfGeoPolygon: fd,\n _sizeOfH3Index: bd,\n _sizeOfLatLng: cd,\n _sizeOfLinkedGeoPolygon: gd,\n _uncompactCells: Mb,\n _uncompactCellsSize: Nb,\n _vertexToLatLng: sd,\n establishStackSpace: _,\n stackAlloc: X,\n stackRestore: Z,\n stackSave: Y\n };\n }\n\n // EMSCRIPTEN_END_ASM\n )(asmGlobalArg, asmLibraryArg, buffer);\n var ___divdi3 = Module[\"___divdi3\"] = asm[\"___divdi3\"];\n var ___muldi3 = Module[\"___muldi3\"] = asm[\"___muldi3\"];\n var ___remdi3 = Module[\"___remdi3\"] = asm[\"___remdi3\"];\n var ___uremdi3 = Module[\"___uremdi3\"] = asm[\"___uremdi3\"];\n var _areNeighborCells = Module[\"_areNeighborCells\"] = asm[\"_areNeighborCells\"];\n var _bitshift64Ashr = Module[\"_bitshift64Ashr\"] = asm[\"_bitshift64Ashr\"];\n var _bitshift64Lshr = Module[\"_bitshift64Lshr\"] = asm[\"_bitshift64Lshr\"];\n var _bitshift64Shl = Module[\"_bitshift64Shl\"] = asm[\"_bitshift64Shl\"];\n var _calloc = Module[\"_calloc\"] = asm[\"_calloc\"];\n var _cellAreaKm2 = Module[\"_cellAreaKm2\"] = asm[\"_cellAreaKm2\"];\n var _cellAreaM2 = Module[\"_cellAreaM2\"] = asm[\"_cellAreaM2\"];\n var _cellAreaRads2 = Module[\"_cellAreaRads2\"] = asm[\"_cellAreaRads2\"];\n var _cellToBoundary = Module[\"_cellToBoundary\"] = asm[\"_cellToBoundary\"];\n var _cellToCenterChild = Module[\"_cellToCenterChild\"] = asm[\"_cellToCenterChild\"];\n var _cellToChildPos = Module[\"_cellToChildPos\"] = asm[\"_cellToChildPos\"];\n var _cellToChildren = Module[\"_cellToChildren\"] = asm[\"_cellToChildren\"];\n var _cellToChildrenSize = Module[\"_cellToChildrenSize\"] = asm[\"_cellToChildrenSize\"];\n var _cellToLatLng = Module[\"_cellToLatLng\"] = asm[\"_cellToLatLng\"];\n var _cellToLocalIj = Module[\"_cellToLocalIj\"] = asm[\"_cellToLocalIj\"];\n var _cellToParent = Module[\"_cellToParent\"] = asm[\"_cellToParent\"];\n var _cellToVertex = Module[\"_cellToVertex\"] = asm[\"_cellToVertex\"];\n var _cellToVertexes = Module[\"_cellToVertexes\"] = asm[\"_cellToVertexes\"];\n var _cellsToDirectedEdge = Module[\"_cellsToDirectedEdge\"] = asm[\"_cellsToDirectedEdge\"];\n var _cellsToLinkedMultiPolygon = Module[\"_cellsToLinkedMultiPolygon\"] = asm[\"_cellsToLinkedMultiPolygon\"];\n var _childPosToCell = Module[\"_childPosToCell\"] = asm[\"_childPosToCell\"];\n var _compactCells = Module[\"_compactCells\"] = asm[\"_compactCells\"];\n var _destroyLinkedMultiPolygon = Module[\"_destroyLinkedMultiPolygon\"] = asm[\"_destroyLinkedMultiPolygon\"];\n var _directedEdgeToBoundary = Module[\"_directedEdgeToBoundary\"] = asm[\"_directedEdgeToBoundary\"];\n var _directedEdgeToCells = Module[\"_directedEdgeToCells\"] = asm[\"_directedEdgeToCells\"];\n var _edgeLengthKm = Module[\"_edgeLengthKm\"] = asm[\"_edgeLengthKm\"];\n var _edgeLengthM = Module[\"_edgeLengthM\"] = asm[\"_edgeLengthM\"];\n var _edgeLengthRads = Module[\"_edgeLengthRads\"] = asm[\"_edgeLengthRads\"];\n var _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = asm[\"_emscripten_replace_memory\"];\n var _free = Module[\"_free\"] = asm[\"_free\"];\n var _getBaseCellNumber = Module[\"_getBaseCellNumber\"] = asm[\"_getBaseCellNumber\"];\n var _getDirectedEdgeDestination = Module[\"_getDirectedEdgeDestination\"] = asm[\"_getDirectedEdgeDestination\"];\n var _getDirectedEdgeOrigin = Module[\"_getDirectedEdgeOrigin\"] = asm[\"_getDirectedEdgeOrigin\"];\n var _getHexagonAreaAvgKm2 = Module[\"_getHexagonAreaAvgKm2\"] = asm[\"_getHexagonAreaAvgKm2\"];\n var _getHexagonAreaAvgM2 = Module[\"_getHexagonAreaAvgM2\"] = asm[\"_getHexagonAreaAvgM2\"];\n var _getHexagonEdgeLengthAvgKm = Module[\"_getHexagonEdgeLengthAvgKm\"] = asm[\"_getHexagonEdgeLengthAvgKm\"];\n var _getHexagonEdgeLengthAvgM = Module[\"_getHexagonEdgeLengthAvgM\"] = asm[\"_getHexagonEdgeLengthAvgM\"];\n var _getIcosahedronFaces = Module[\"_getIcosahedronFaces\"] = asm[\"_getIcosahedronFaces\"];\n var _getNumCells = Module[\"_getNumCells\"] = asm[\"_getNumCells\"];\n var _getPentagons = Module[\"_getPentagons\"] = asm[\"_getPentagons\"];\n var _getRes0Cells = Module[\"_getRes0Cells\"] = asm[\"_getRes0Cells\"];\n var _getResolution = Module[\"_getResolution\"] = asm[\"_getResolution\"];\n var _greatCircleDistanceKm = Module[\"_greatCircleDistanceKm\"] = asm[\"_greatCircleDistanceKm\"];\n var _greatCircleDistanceM = Module[\"_greatCircleDistanceM\"] = asm[\"_greatCircleDistanceM\"];\n var _greatCircleDistanceRads = Module[\"_greatCircleDistanceRads\"] = asm[\"_greatCircleDistanceRads\"];\n var _gridDisk = Module[\"_gridDisk\"] = asm[\"_gridDisk\"];\n var _gridDiskDistances = Module[\"_gridDiskDistances\"] = asm[\"_gridDiskDistances\"];\n var _gridDistance = Module[\"_gridDistance\"] = asm[\"_gridDistance\"];\n var _gridPathCells = Module[\"_gridPathCells\"] = asm[\"_gridPathCells\"];\n var _gridPathCellsSize = Module[\"_gridPathCellsSize\"] = asm[\"_gridPathCellsSize\"];\n var _gridRing = Module[\"_gridRing\"] = asm[\"_gridRing\"];\n var _gridRingUnsafe = Module[\"_gridRingUnsafe\"] = asm[\"_gridRingUnsafe\"];\n var _i64Add = Module[\"_i64Add\"] = asm[\"_i64Add\"];\n var _i64Subtract = Module[\"_i64Subtract\"] = asm[\"_i64Subtract\"];\n var _isPentagon = Module[\"_isPentagon\"] = asm[\"_isPentagon\"];\n var _isResClassIII = Module[\"_isResClassIII\"] = asm[\"_isResClassIII\"];\n var _isValidCell = Module[\"_isValidCell\"] = asm[\"_isValidCell\"];\n var _isValidDirectedEdge = Module[\"_isValidDirectedEdge\"] = asm[\"_isValidDirectedEdge\"];\n var _isValidVertex = Module[\"_isValidVertex\"] = asm[\"_isValidVertex\"];\n var _latLngToCell = Module[\"_latLngToCell\"] = asm[\"_latLngToCell\"];\n var _llvm_ctlz_i64 = Module[\"_llvm_ctlz_i64\"] = asm[\"_llvm_ctlz_i64\"];\n var _llvm_maxnum_f64 = Module[\"_llvm_maxnum_f64\"] = asm[\"_llvm_maxnum_f64\"];\n var _llvm_minnum_f64 = Module[\"_llvm_minnum_f64\"] = asm[\"_llvm_minnum_f64\"];\n var _llvm_round_f64 = Module[\"_llvm_round_f64\"] = asm[\"_llvm_round_f64\"];\n var _localIjToCell = Module[\"_localIjToCell\"] = asm[\"_localIjToCell\"];\n var _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];\n var _maxFaceCount = Module[\"_maxFaceCount\"] = asm[\"_maxFaceCount\"];\n var _maxGridDiskSize = Module[\"_maxGridDiskSize\"] = asm[\"_maxGridDiskSize\"];\n var _maxPolygonToCellsSize = Module[\"_maxPolygonToCellsSize\"] = asm[\"_maxPolygonToCellsSize\"];\n var _maxPolygonToCellsSizeExperimental = Module[\"_maxPolygonToCellsSizeExperimental\"] = asm[\"_maxPolygonToCellsSizeExperimental\"];\n var _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];\n var _memset = Module[\"_memset\"] = asm[\"_memset\"];\n var _originToDirectedEdges = Module[\"_originToDirectedEdges\"] = asm[\"_originToDirectedEdges\"];\n var _pentagonCount = Module[\"_pentagonCount\"] = asm[\"_pentagonCount\"];\n var _polygonToCells = Module[\"_polygonToCells\"] = asm[\"_polygonToCells\"];\n var _polygonToCellsExperimental = Module[\"_polygonToCellsExperimental\"] = asm[\"_polygonToCellsExperimental\"];\n var _readInt64AsDoubleFromPointer = Module[\"_readInt64AsDoubleFromPointer\"] = asm[\"_readInt64AsDoubleFromPointer\"];\n var _res0CellCount = Module[\"_res0CellCount\"] = asm[\"_res0CellCount\"];\n var _round = Module[\"_round\"] = asm[\"_round\"];\n var _sbrk = Module[\"_sbrk\"] = asm[\"_sbrk\"];\n var _sizeOfCellBoundary = Module[\"_sizeOfCellBoundary\"] = asm[\"_sizeOfCellBoundary\"];\n var _sizeOfCoordIJ = Module[\"_sizeOfCoordIJ\"] = asm[\"_sizeOfCoordIJ\"];\n var _sizeOfGeoLoop = Module[\"_sizeOfGeoLoop\"] = asm[\"_sizeOfGeoLoop\"];\n var _sizeOfGeoPolygon = Module[\"_sizeOfGeoPolygon\"] = asm[\"_sizeOfGeoPolygon\"];\n var _sizeOfH3Index = Module[\"_sizeOfH3Index\"] = asm[\"_sizeOfH3Index\"];\n var _sizeOfLatLng = Module[\"_sizeOfLatLng\"] = asm[\"_sizeOfLatLng\"];\n var _sizeOfLinkedGeoPolygon = Module[\"_sizeOfLinkedGeoPolygon\"] = asm[\"_sizeOfLinkedGeoPolygon\"];\n var _uncompactCells = Module[\"_uncompactCells\"] = asm[\"_uncompactCells\"];\n var _uncompactCellsSize = Module[\"_uncompactCellsSize\"] = asm[\"_uncompactCellsSize\"];\n var _vertexToLatLng = Module[\"_vertexToLatLng\"] = asm[\"_vertexToLatLng\"];\n var establishStackSpace = Module[\"establishStackSpace\"] = asm[\"establishStackSpace\"];\n var stackAlloc = Module[\"stackAlloc\"] = asm[\"stackAlloc\"];\n var stackRestore = Module[\"stackRestore\"] = asm[\"stackRestore\"];\n var stackSave = Module[\"stackSave\"] = asm[\"stackSave\"];\n Module[\"asm\"] = asm;\n Module[\"cwrap\"] = cwrap;\n Module[\"setValue\"] = setValue;\n Module[\"getValue\"] = getValue;\n if (memoryInitializer) {\n if (!isDataURI(memoryInitializer)) {\n memoryInitializer = locateFile(memoryInitializer);\n }\n {\n addRunDependency(\"memory initializer\");\n var applyMemoryInitializer = function (data) {\n if (data.byteLength) { data = new Uint8Array(data); }\n HEAPU8.set(data, GLOBAL_BASE);\n if (Module[\"memoryInitializerRequest\"]) { delete Module[\"memoryInitializerRequest\"].response; }\n removeRunDependency(\"memory initializer\");\n };\n var doBrowserLoad = function () {\n readAsync(memoryInitializer, applyMemoryInitializer, function () {\n throw \"could not load memory initializer \" + memoryInitializer;\n });\n };\n var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer);\n if (memoryInitializerBytes) {\n applyMemoryInitializer(memoryInitializerBytes.buffer);\n } else if (Module[\"memoryInitializerRequest\"]) {\n var useRequest = function () {\n var request = Module[\"memoryInitializerRequest\"];\n var response = request.response;\n if (request.status !== 200 && request.status !== 0) {\n var data = tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);\n if (data) {\n response = data.buffer;\n } else {\n console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \" + request.status + \", retrying \" + memoryInitializer);\n doBrowserLoad();\n return;\n }\n }\n applyMemoryInitializer(response);\n };\n if (Module[\"memoryInitializerRequest\"].response) {\n setTimeout(useRequest, 0);\n } else {\n Module[\"memoryInitializerRequest\"].addEventListener(\"load\", useRequest);\n }\n } else {\n doBrowserLoad();\n }\n }\n }\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) { run(); }\n if (!calledRun) { dependenciesFulfilled = runCaller; }\n };\n function run(args) {\n args = args || arguments_;\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) { return; }\n function doRun() {\n if (calledRun) { return; }\n calledRun = true;\n if (ABORT) { return; }\n initRuntime();\n preMain();\n if (Module[\"onRuntimeInitialized\"]) { Module[\"onRuntimeInitialized\"](); }\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function () {\n setTimeout(function () {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n Module[\"run\"] = run;\n function abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what += \"\";\n out(what);\n err(what);\n ABORT = true;\n throw \"abort(\" + what + \"). Build with -s ASSERTIONS=1 for more info.\";\n }\n Module[\"abort\"] = abort;\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") { Module[\"preInit\"] = [Module[\"preInit\"]]; }\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n }\n run();\n return libh3;\n}(typeof libh3 === 'object' ? libh3 : {});\n\n/*\n * Copyright 2018-2019, 2022 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Define the C bindings for the h3 library\n\n// Add some aliases to make the function definitions more intelligible\nvar NUMBER = 'number';\nvar H3_ERROR = NUMBER;\nvar BOOLEAN = NUMBER;\nvar H3_LOWER = NUMBER;\nvar H3_UPPER = NUMBER;\nvar RESOLUTION = NUMBER;\nvar POINTER = NUMBER;\n\n// Define the bindings to functions in the C lib. Functions are defined as\n// [name, return type, [arg types]]. You must run `npm run build-emscripten`\n// before new functions added here will be available.\n/** @type {([string, string] | [string, string | null, string[]])[]} */\nvar BINDINGS = [\n// The size functions are inserted via build/sizes.h\n['sizeOfH3Index', NUMBER], ['sizeOfLatLng', NUMBER], ['sizeOfCellBoundary', NUMBER], ['sizeOfGeoLoop', NUMBER], ['sizeOfGeoPolygon', NUMBER], ['sizeOfLinkedGeoPolygon', NUMBER], ['sizeOfCoordIJ', NUMBER], ['readInt64AsDoubleFromPointer', NUMBER],\n// The remaining functions are defined in the core lib in h3Api.h\n['isValidCell', BOOLEAN, [H3_LOWER, H3_UPPER]], ['latLngToCell', H3_ERROR, [NUMBER, NUMBER, RESOLUTION, POINTER]], ['cellToLatLng', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['cellToBoundary', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['maxGridDiskSize', H3_ERROR, [NUMBER, POINTER]], ['gridDisk', H3_ERROR, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['gridDiskDistances', H3_ERROR, [H3_LOWER, H3_UPPER, NUMBER, POINTER, POINTER]], ['gridRing', H3_ERROR, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['gridRingUnsafe', H3_ERROR, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['maxPolygonToCellsSize', H3_ERROR, [POINTER, RESOLUTION, NUMBER, POINTER]], ['polygonToCells', H3_ERROR, [POINTER, RESOLUTION, NUMBER, POINTER]], ['maxPolygonToCellsSizeExperimental', H3_ERROR, [POINTER, RESOLUTION, NUMBER, POINTER]], ['polygonToCellsExperimental', H3_ERROR, [POINTER, RESOLUTION, NUMBER, NUMBER, NUMBER, POINTER]], ['cellsToLinkedMultiPolygon', H3_ERROR, [POINTER, NUMBER, POINTER]], ['destroyLinkedMultiPolygon', null, [POINTER]], ['compactCells', H3_ERROR, [POINTER, POINTER, NUMBER, NUMBER]], ['uncompactCells', H3_ERROR, [POINTER, NUMBER, NUMBER, POINTER, NUMBER, RESOLUTION]], ['uncompactCellsSize', H3_ERROR, [POINTER, NUMBER, NUMBER, RESOLUTION, POINTER]], ['isPentagon', BOOLEAN, [H3_LOWER, H3_UPPER]], ['isResClassIII', BOOLEAN, [H3_LOWER, H3_UPPER]], ['getBaseCellNumber', NUMBER, [H3_LOWER, H3_UPPER]], ['getResolution', NUMBER, [H3_LOWER, H3_UPPER]], ['maxFaceCount', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['getIcosahedronFaces', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['cellToParent', H3_ERROR, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['cellToChildren', H3_ERROR, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['cellToCenterChild', H3_ERROR, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['cellToChildrenSize', H3_ERROR, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['cellToChildPos', H3_ERROR, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['childPosToCell', H3_ERROR, [NUMBER, NUMBER, H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['areNeighborCells', H3_ERROR, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['cellsToDirectedEdge', H3_ERROR, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['getDirectedEdgeOrigin', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['getDirectedEdgeDestination', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['isValidDirectedEdge', BOOLEAN, [H3_LOWER, H3_UPPER]], ['directedEdgeToCells', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['originToDirectedEdges', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['directedEdgeToBoundary', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['gridDistance', H3_ERROR, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['gridPathCells', H3_ERROR, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['gridPathCellsSize', H3_ERROR, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['cellToLocalIj', H3_ERROR, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['localIjToCell', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER, NUMBER, POINTER]], ['getHexagonAreaAvgM2', H3_ERROR, [RESOLUTION, POINTER]], ['getHexagonAreaAvgKm2', H3_ERROR, [RESOLUTION, POINTER]], ['getHexagonEdgeLengthAvgM', H3_ERROR, [RESOLUTION, POINTER]], ['getHexagonEdgeLengthAvgKm', H3_ERROR, [RESOLUTION, POINTER]], ['greatCircleDistanceM', NUMBER, [POINTER, POINTER]], ['greatCircleDistanceKm', NUMBER, [POINTER, POINTER]], ['greatCircleDistanceRads', NUMBER, [POINTER, POINTER]], ['cellAreaM2', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['cellAreaKm2', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['cellAreaRads2', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['edgeLengthM', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['edgeLengthKm', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['edgeLengthRads', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['getNumCells', H3_ERROR, [RESOLUTION, POINTER]], ['getRes0Cells', H3_ERROR, [POINTER]], ['res0CellCount', NUMBER], ['getPentagons', H3_ERROR, [NUMBER, POINTER]], ['pentagonCount', NUMBER], ['cellToVertex', H3_ERROR, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['cellToVertexes', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['vertexToLatLng', H3_ERROR, [H3_LOWER, H3_UPPER, POINTER]], ['isValidVertex', BOOLEAN, [H3_LOWER, H3_UPPER]]];\n\n/*\n * Copyright 2018-2019, 2022 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Error codes from the code library, aliased here for legibility\nvar E_SUCCESS = 0;\nvar E_FAILED = 1;\nvar E_DOMAIN = 2;\nvar E_LATLNG_DOMAIN = 3;\nvar E_RES_DOMAIN = 4;\nvar E_CELL_INVALID = 5;\nvar E_DIR_EDGE_INVALID = 6;\nvar E_UNDIR_EDGE_INVALID = 7;\nvar E_VERTEX_INVALID = 8;\nvar E_PENTAGON = 9;\nvar E_DUPLICATE_INPUT = 10;\nvar E_NOT_NEIGHBORS = 11;\nvar E_RES_MISMATCH = 12;\nvar E_MEMORY_ALLOC = 13;\nvar E_MEMORY_BOUNDS = 14;\nvar E_OPTION_INVALID = 15;\n\n/**\n * Error messages corresponding to the core library error codes. See\n * https://h3geo.org/docs/library/errors#table-of-error-codes\n * @private\n */\nvar H3_ERROR_MSGS = {};\nH3_ERROR_MSGS[E_SUCCESS] = 'Success';\nH3_ERROR_MSGS[E_FAILED] = 'The operation failed but a more specific error is not available';\nH3_ERROR_MSGS[E_DOMAIN] = 'Argument was outside of acceptable range';\nH3_ERROR_MSGS[E_LATLNG_DOMAIN] = 'Latitude or longitude arguments were outside of acceptable range';\nH3_ERROR_MSGS[E_RES_DOMAIN] = 'Resolution argument was outside of acceptable range';\nH3_ERROR_MSGS[E_CELL_INVALID] = 'Cell argument was not valid';\nH3_ERROR_MSGS[E_DIR_EDGE_INVALID] = 'Directed edge argument was not valid';\nH3_ERROR_MSGS[E_UNDIR_EDGE_INVALID] = 'Undirected edge argument was not valid';\nH3_ERROR_MSGS[E_VERTEX_INVALID] = 'Vertex argument was not valid';\nH3_ERROR_MSGS[E_PENTAGON] = 'Pentagon distortion was encountered';\nH3_ERROR_MSGS[E_DUPLICATE_INPUT] = 'Duplicate input';\nH3_ERROR_MSGS[E_NOT_NEIGHBORS] = 'Cell arguments were not neighbors';\nH3_ERROR_MSGS[E_RES_MISMATCH] = 'Cell arguments had incompatible resolutions';\nH3_ERROR_MSGS[E_MEMORY_ALLOC] = 'Memory allocation failed';\nH3_ERROR_MSGS[E_MEMORY_BOUNDS] = 'Bounds of provided memory were insufficient';\nH3_ERROR_MSGS[E_OPTION_INVALID] = 'Mode or flags argument was not valid';\n\n// Error codes for JS errors thrown in the bindings\nvar E_UNKNOWN_UNIT = 1000;\nvar E_ARRAY_LENGTH = 1001;\nvar E_NULL_INDEX = 1002;\n\n/**\n * Error messages for errors thrown in the binding code. These don't strictly\n * need error codes, but it's simpler to treat all of the errors consistently\n * @private\n */\nvar JS_ERROR_MESSAGES = {};\nJS_ERROR_MESSAGES[E_UNKNOWN_UNIT] = 'Unknown unit';\nJS_ERROR_MESSAGES[E_ARRAY_LENGTH] = 'Array length out of bounds';\nJS_ERROR_MESSAGES[E_NULL_INDEX] = 'Got unexpected null value for H3 index';\nvar UNKNOWN_ERROR_MSG = 'Unknown error';\n\n/**\n * Create an error with an attached code\n * @private\n * @param {Record<number, string>} messages Map of code-to-messages to use\n * @param {number} errCode Numeric error code\n * @param {{value: unknown} | {}} [meta] Metadata with value to associate with the error\n */\nfunction createError(messages, errCode, meta) {\n // The error value may be \"undefined\", so check if the argument was provided\n var hasValue = meta && 'value' in meta;\n // Throw a custom error type with the code attached\n var err = new Error(((messages[errCode] || UNKNOWN_ERROR_MSG) + \" (code: \" + errCode + (hasValue ? (\", value: \" + (meta.value)) : '') + \")\"));\n // @ts-expect-error - TS doesn't like extending Error\n err.code = errCode;\n return err;\n}\n\n/**\n * Custom error for H3Error codes\n * @private\n * @param {number} errCode Error code from the H3 library\n * @param {unknown} [value] Value to associate with the error, if any\n * @returns {Error}\n */\nfunction H3LibraryError(errCode, value) {\n // The error value may be \"undefined\", so check if the argument was provided\n var meta = arguments.length === 2 ? {\n value: value\n } : {};\n return createError(H3_ERROR_MSGS, errCode, meta);\n}\n\n/**\n * Custom errors thrown from the JS bindings.\n * @private\n * @param {number} errCode Error code from the H3 library\n * @param {unknown} [value] Value to associate with the error, if any\n * @returns {Error}\n */\nfunction JSBindingError(errCode, value) {\n // The error value may be \"undefined\", so check if the argument was provided\n var meta = arguments.length === 2 ? {\n value: value\n } : {};\n return createError(JS_ERROR_MESSAGES, errCode, meta);\n}\n\n/**\n * Throw a JavaScript error if the C library return code is an error\n * @private\n * @param {number} errCode Error code from the H3 library\n * @throws {Error} Error if err is not E_SUCCESS (0)\n */\nfunction throwIfError(errCode) {\n if (errCode !== 0) {\n throw H3LibraryError(errCode);\n }\n}\n\n/*\n * Copyright 2018-2019, 2022 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Map of C-defined functions\n * @type {any}\n * @private\n */\nvar H3 = {};\n\n// Create the bound functions themselves\nBINDINGS.forEach(function bind(def) {\n H3[def[0]] = libh3.cwrap.apply(libh3, def);\n});\n\n// Alias the hexidecimal base for legibility\nvar BASE_16 = 16;\n\n// Alias unused bits for legibility\nvar UNUSED_UPPER_32_BITS = 0;\n\n// ----------------------------------------------------------------------------\n// Byte size imports\n\nvar SZ_INT = 4;\nvar SZ_PTR = 4;\nvar SZ_DBL = 8;\nvar SZ_INT64 = 8;\nvar SZ_H3INDEX = H3.sizeOfH3Index();\nvar SZ_LATLNG = H3.sizeOfLatLng();\nvar SZ_CELLBOUNDARY = H3.sizeOfCellBoundary();\nvar SZ_GEOPOLYGON = H3.sizeOfGeoPolygon();\nvar SZ_GEOLOOP = H3.sizeOfGeoLoop();\nvar SZ_LINKED_GEOPOLYGON = H3.sizeOfLinkedGeoPolygon();\nvar SZ_COORDIJ = H3.sizeOfCoordIJ();\n\n// ----------------------------------------------------------------------------\n// Custom types\n\n/**\n * 64-bit hexidecimal string representation of an H3 index\n * @static\n * @typedef {string} H3Index\n */\n\n/**\n * 64-bit hexidecimal string representation of an H3 index,\n * or two 32-bit integers in little endian order in an array.\n * @static\n * @typedef {string | number[]} H3IndexInput\n */\n\n/**\n * Coordinates as an `{i, j}` pair\n * @static\n * @typedef CoordIJ\n * @property {number} i\n * @property {number} j\n */\n\n/**\n * Custom JS Error instance with an attached error code. Error codes come from the\n * core H3 library and can be found [in the H3 docs](https://h3geo.org/docs/library/errors#table-of-error-codes).\n * @static\n * @typedef H3Error\n * @property {string} message\n * @property {number} code\n */\n\n/**\n * Pair of lat,lng coordinates (or lng,lat if GeoJSON output is specified)\n * @static\n * @typedef {number[]} CoordPair\n */\n\n/**\n * Pair of lower,upper 32-bit ints representing a 64-bit value\n * @static\n * @typedef {number[]} SplitLong\n */\n\n// ----------------------------------------------------------------------------\n// Unit constants\n\n/**\n * Length/Area units\n * @static\n * @property {string} m\n * @property {string} m2\n * @property {string} km\n * @property {string} km2\n * @property {string} rads\n * @property {string} rads2\n */\nvar UNITS = {\n m: 'm',\n m2: 'm2',\n km: 'km',\n km2: 'km2',\n rads: 'rads',\n rads2: 'rads2'\n};\n\n// ----------------------------------------------------------------------------\n// Flags\n\n/**\n * Mode flags for polygonToCells\n * @static\n * @property {string} containmentCenter\n * @property {string} containmentFull\n * @property {string} containmentOverlapping\n * @property {string} containmentOverlappingBbox\n */\nvar POLYGON_TO_CELLS_FLAGS = {\n containmentCenter: 'containmentCenter',\n containmentFull: 'containmentFull',\n containmentOverlapping: 'containmentOverlapping',\n containmentOverlappingBbox: 'containmentOverlappingBbox'\n};\n\n// ----------------------------------------------------------------------------\n// Utilities and helpers\n\n/**\n * @private\n * @param {string} flags Value from POLYGON_TO_CELLS_FLAGS\n * @returns {number} Flag value\n * @throws {H3Error} If invalid\n */\nfunction polygonToCellsFlagsToNumber(flags) {\n switch (flags) {\n case POLYGON_TO_CELLS_FLAGS.containmentCenter:\n return 0;\n case POLYGON_TO_CELLS_FLAGS.containmentFull:\n return 1;\n case POLYGON_TO_CELLS_FLAGS.containmentOverlapping:\n return 2;\n case POLYGON_TO_CELLS_FLAGS.containmentOverlappingBbox:\n return 3;\n default:\n throw JSBindingError(E_OPTION_INVALID, flags);\n }\n}\n\n/**\n * Validate a resolution, throwing an error if invalid\n * @private\n * @param {unknown} res Value to validate\n * @return {number} Valid res\n * @throws {H3Error} If invalid\n */\nfunction validateRes(res) {\n if (typeof res !== 'number' || res < 0 || res > 15 || Math.floor(res) !== res) {\n throw H3LibraryError(E_RES_DOMAIN, res);\n }\n return res;\n}\n\n/**\n * Assert H3 index output, throwing an error if null\n * @private\n * @param {H3Index | null} h3Index Index to validate\n * @return {H3Index}\n * @throws {H3Error} If invalid\n */\nfunction validateH3Index(h3Index) {\n if (!h3Index) { throw JSBindingError(E_NULL_INDEX); }\n return h3Index;\n}\nvar MAX_JS_ARRAY_LENGTH = Math.pow(2, 32) - 1;\n\n/**\n * Validate an array length. JS will throw its own error if you try\n * to create an array larger than 2^32 - 1, but validating beforehand\n * allows us to exit early before we try to process large amounts\n * of data that won't even fit in an output array\n * @private\n * @param {number} length Length to validate\n * @return {number} Valid array length\n * @throws {H3Error} If invalid\n */\nfunction validateArrayLength(length) {\n if (length > MAX_JS_ARRAY_LENGTH) {\n throw JSBindingError(E_ARRAY_LENGTH, length);\n }\n return length;\n}\nvar INVALID_HEXIDECIMAL_CHAR = /[^0-9a-fA-F]/;\n\n/**\n * Convert an H3 index (64-bit hexidecimal string) into a \"split long\" - a pair of 32-bit ints\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {SplitLong} A two-element array with 32 lower bits and 32 upper bits\n */\nfunction h3IndexToSplitLong(h3Index) {\n if (Array.isArray(h3Index) && h3Index.length === 2 && Number.isInteger(h3Index[0]) && Number.isInteger(h3Index[1])) {\n return h3Index;\n }\n if (typeof h3Index !== 'string' || INVALID_HEXIDECIMAL_CHAR.test(h3Index)) {\n return [0, 0];\n }\n var upper = parseInt(h3Index.substring(0, h3Index.length - 8), BASE_16);\n var lower = parseInt(h3Index.substring(h3Index.length - 8), BASE_16);\n return [lower, upper];\n}\n\n/**\n * Convert a 32-bit int to a hexdecimal string\n * @private\n * @param {number} num Integer to convert\n * @return {H3Index} Hexidecimal string\n */\nfunction hexFrom32Bit(num) {\n if (num >= 0) {\n return num.toString(BASE_16);\n }\n\n // Handle negative numbers\n num = num & 0x7fffffff;\n var tempStr = zeroPad(8, num.toString(BASE_16));\n var topNum = (parseInt(tempStr[0], BASE_16) + 8).toString(BASE_16);\n tempStr = topNum + tempStr.substring(1);\n return tempStr;\n}\n\n/**\n * Get a H3 index string from a split long (pair of 32-bit ints)\n * @param {number} lower Lower 32 bits\n * @param {number} upper Upper 32 bits\n * @return {H3Index} H3 index\n */\nfunction splitLongToH3Index(lower, upper) {\n return hexFrom32Bit(upper) + zeroPad(8, hexFrom32Bit(lower));\n}\n\n/**\n * Zero-pad a string to a given length\n * @private\n * @param {number} fullLen Target length\n * @param {string} numStr String to zero-pad\n * @return {string} Zero-padded string\n */\nfunction zeroPad(fullLen, numStr) {\n var numZeroes = fullLen - numStr.length;\n var outStr = '';\n for (var i = 0; i < numZeroes; i++) {\n outStr += '0';\n }\n outStr = outStr + numStr;\n return outStr;\n}\n\n// One more than the max size of an unsigned 32-bit int.\n// Dividing by this number is equivalent to num >>> 32\nvar UPPER_BIT_DIVISOR = Math.pow(2, 32);\n\n/**\n * Convert a JS double-precision floating point number to a split long\n * @private\n * @param {number} num Number to convert\n * @return {SplitLong} A two-element array with 32 lower bits and 32 upper bits\n */\nfunction numberToSplitLong(num) {\n if (typeof num !== 'number') {\n return [0, 0];\n }\n return [num | 0, num / UPPER_BIT_DIVISOR | 0];\n}\n\n/**\n * Populate a C-appropriate GeoLoop struct from a polygon array\n * @private\n * @param {number[][]} polygonArray Polygon, as an array of coordinate pairs\n * @param {number} geoLoop C pointer to a GeoLoop struct\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated GeoLoop struct\n */\nfunction polygonArrayToGeoLoop(polygonArray, geoLoop, isGeoJson) {\n var numVerts = polygonArray.length;\n var geoCoordArray = libh3._calloc(numVerts, SZ_LATLNG);\n // Support [lng, lat] pairs if GeoJSON is specified\n var latIndex = isGeoJson ? 1 : 0;\n var lngIndex = isGeoJson ? 0 : 1;\n for (var i = 0; i < numVerts * 2; i += 2) {\n libh3.HEAPF64.set([polygonArray[i / 2][latIndex], polygonArray[i / 2][lngIndex]].map(degsToRads), geoCoordArray / SZ_DBL + i);\n }\n libh3.HEAPU32.set([numVerts, geoCoordArray], geoLoop / SZ_INT);\n return geoLoop;\n}\n\n/**\n * Create a C-appropriate GeoPolygon struct from an array of polygons\n * @private\n * @param {number[][][]} coordinates Array of polygons, each an array of coordinate pairs\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated GeoPolygon struct\n */\nfunction coordinatesToGeoPolygon(coordinates, isGeoJson) {\n // Any loops beyond the first loop are holes\n var numHoles = coordinates.length - 1;\n var geoPolygon = libh3._calloc(SZ_GEOPOLYGON);\n // Byte positions within the struct\n var geoLoopOffset = 0;\n var numHolesOffset = geoLoopOffset + SZ_GEOLOOP;\n var holesOffset = numHolesOffset + SZ_INT;\n // geoLoop is first part of struct\n polygonArrayToGeoLoop(coordinates[0], geoPolygon + geoLoopOffset, isGeoJson);\n var holes;\n if (numHoles > 0) {\n holes = libh3._calloc(numHoles, SZ_GEOLOOP);\n for (var i = 0; i < numHoles; i++) {\n polygonArrayToGeoLoop(coordinates[i + 1], holes + SZ_GEOLOOP * i, isGeoJson);\n }\n }\n libh3.setValue(geoPolygon + numHolesOffset, numHoles, 'i32');\n libh3.setValue(geoPolygon + holesOffset, holes, 'i32');\n return geoPolygon;\n}\n\n/**\n * Free memory allocated for a GeoPolygon struct. It is an error to access the struct\n * after passing it to this method.\n * @private\n * @param {number} geoPolygon C pointer to GeoPolygon struct\n * @return {void}\n */\nfunction destroyGeoPolygon(geoPolygon) {\n // Byte positions within the struct\n var geoLoopOffset = 0;\n var numHolesOffset = geoLoopOffset + SZ_GEOLOOP;\n var holesOffset = numHolesOffset + SZ_INT;\n // Offset of the geoLoop vertex array pointer within the GeoLoop struct\n var geoLoopArrayOffset = SZ_INT;\n // Free the outer vertex array\n libh3._free(libh3.getValue(geoPolygon + geoLoopOffset + geoLoopArrayOffset, 'i8*'));\n // Free the vertex array for the holes, if any\n var numHoles = libh3.getValue(geoPolygon + numHolesOffset, 'i32');\n if (numHoles > 0) {\n var holes = libh3.getValue(geoPolygon + holesOffset, 'i32');\n for (var i = 0; i < numHoles; i++) {\n libh3._free(libh3.getValue(holes + SZ_GEOLOOP * i + geoLoopArrayOffset, 'i8*'));\n }\n libh3._free(holes);\n }\n libh3._free(geoPolygon);\n}\n\n/**\n * Read an H3 index from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes, in case we're\n * reading an array\n * @return {H3Index | null} H3 index, or null if index was invalid\n */\nfunction readH3IndexFromPointer(cAddress, offset) {\n if ( offset === void 0 ) offset = 0;\n\n var lower = libh3.getValue(cAddress + SZ_H3INDEX * offset, 'i32');\n var upper = libh3.getValue(cAddress + SZ_H3INDEX * offset + SZ_INT, 'i32');\n // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? splitLongToH3Index(lower, upper) : null;\n}\n\n/**\n * Read a boolean (32 bit) from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of booleans, in case we're\n * reading an array\n * @return {Boolean} Boolean value\n */\nfunction readBooleanFromPointer(cAddress, offset) {\n if ( offset === void 0 ) offset = 0;\n\n var val = libh3.getValue(cAddress + SZ_INT * offset, 'i32');\n return Boolean(val);\n}\n\n/**\n * Read a double from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of doubles, in case we're\n * reading an array\n * @return {number} Double value\n */\nfunction readDoubleFromPointer(cAddress, offset) {\n if ( offset === void 0 ) offset = 0;\n\n return libh3.getValue(cAddress + SZ_DBL * offset, 'double');\n}\n\n/**\n * Read a 64-bit int from a pointer to C memory into a JS 64-bit float.\n * Note that this may lose precision if larger than MAX_SAFE_INTEGER\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @return {number} Double value\n */\nfunction readInt64AsDoubleFromPointer(cAddress) {\n return H3.readInt64AsDoubleFromPointer(cAddress);\n}\n\n/**\n * Store an H3 index in C memory. Primarily used as an efficient way to\n * write sets of hexagons.\n * @private\n * @param {H3IndexInput} h3Index H3 index to store\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes from beginning\n * of the current array\n */\nfunction storeH3Index(h3Index, cAddress, offset) {\n // HEAPU32 is a typed array projection on the index space\n // as unsigned 32-bit integers. This means the index needs\n // to be divided by SZ_INT (4) to access correctly. Also,\n // the H3 index is 64 bits, so we skip by twos as we're writing\n // to 32-bit integers in the proper order.\n libh3.HEAPU32.set(h3IndexToSplitLong(h3Index), cAddress / SZ_INT + 2 * offset);\n}\n\n/**\n * Read an array of 64-bit H3 indexes from C and convert to a JS array of\n * H3 index strings\n * @private\n * @param {number} cAddress Pointer to C ouput array\n * @param {number} maxCount Max number of hexagons in array. Hexagons with\n * the value 0 will be skipped, so this isn't\n * necessarily the length of the output array.\n * @return {H3Index[]} Array of H3 indexes\n */\nfunction readArrayOfH3Indexes(cAddress, maxCount) {\n var out = [];\n for (var i = 0; i < maxCount; i++) {\n var h3Index = readH3IndexFromPointer(cAddress, i);\n if (h3Index !== null) {\n out.push(h3Index);\n }\n }\n return out;\n}\n\n/**\n * Store an array of H3 index strings as a C array of 64-bit integers.\n * @private\n * @param {number} cAddress Pointer to C input array\n * @param {H3IndexInput[]} hexagons H3 indexes to pass to the C lib\n */\nfunction storeArrayOfH3Indexes(cAddress, hexagons) {\n // Assuming the cAddress points to an already appropriately\n // allocated space\n var count = hexagons.length;\n for (var i = 0; i < count; i++) {\n storeH3Index(hexagons[i], cAddress, i);\n }\n}\n\n/**\n * Populate a C-appropriate LatLng struct from a [lat, lng] array\n * @private\n * @param {number} lat Coordinate latitude\n * @param {number} lng Coordinate longitude\n * @return {number} C pointer to populated LatLng struct\n */\nfunction storeLatLng(lat, lng) {\n var geoCoord = libh3._calloc(1, SZ_LATLNG);\n libh3.HEAPF64.set([lat, lng].map(degsToRads), geoCoord / SZ_DBL);\n return geoCoord;\n}\n\n/**\n * Read a single lat or lng value\n * @private\n * @param {number} cAddress Pointer to C value\n * @return {number}\n */\nfunction readSingleCoord(cAddress) {\n return radsToDegs(libh3.getValue(cAddress, 'double'));\n}\n\n/**\n * Read a LatLng from C and return a [lat, lng] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordPair} [lat, lng] pair\n */\nfunction readLatLng(cAddress) {\n return [readSingleCoord(cAddress), readSingleCoord(cAddress + SZ_DBL)];\n}\n\n/**\n * Read a LatLng from C and return a GeoJSON-style [lng, lat] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordPair} [lng, lat] pair\n */\nfunction readLatLngGeoJson(cAddress) {\n return [readSingleCoord(cAddress + SZ_DBL), readSingleCoord(cAddress)];\n}\n\n/**\n * Read the CellBoundary structure into a list of geo coordinate pairs\n * @private\n * @param {number} cellBoundary C pointer to CellBoundary struct\n * @param {boolean} [geoJsonCoords] Whether to provide GeoJSON coordinate order: [lng, lat]\n * @param {boolean} [closedLoop] Whether to close the loop\n * @return {CoordPair[]} Array of geo coordinate pairs\n */\nfunction readCellBoundary(cellBoundary, geoJsonCoords, closedLoop) {\n var numVerts = libh3.getValue(cellBoundary, 'i32');\n // Note that though numVerts is an int, the coordinate doubles have to be\n // aligned to 8 bytes, hence the 8-byte offset here\n var vertsPos = cellBoundary + SZ_DBL;\n var out = [];\n // Support [lng, lat] pairs if GeoJSON is specified\n var readCoord = geoJsonCoords ? readLatLngGeoJson : readLatLng;\n for (var i = 0; i < numVerts * 2; i += 2) {\n out.push(readCoord(vertsPos + SZ_DBL * i));\n }\n if (closedLoop) {\n // Close loop if GeoJSON is specified\n out.push(out[0]);\n }\n return out;\n}\n\n/**\n * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates\n * @private\n * @param {number} polygon C pointer to LinkedGeoPolygon struct\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {CoordPair[][][]} MultiPolygon-style output.\n */\nfunction readMultiPolygon(polygon, formatAsGeoJson) {\n var output = [];\n var readCoord = formatAsGeoJson ? readLatLngGeoJson : readLatLng;\n var loops;\n var loop;\n var coords;\n var coord;\n // Loop through the linked structure, building the output\n while (polygon) {\n output.push(loops = []);\n // Follow ->first pointer\n loop = libh3.getValue(polygon, 'i8*');\n while (loop) {\n loops.push(coords = []);\n // Follow ->first pointer\n coord = libh3.getValue(loop, 'i8*');\n while (coord) {\n coords.push(readCoord(coord));\n // Follow ->next pointer\n coord = libh3.getValue(coord + SZ_DBL * 2, 'i8*');\n }\n if (formatAsGeoJson) {\n // Close loop if GeoJSON is requested\n coords.push(coords[0]);\n }\n // Follow ->next pointer\n loop = libh3.getValue(loop + SZ_PTR * 2, 'i8*');\n }\n // Follow ->next pointer\n polygon = libh3.getValue(polygon + SZ_PTR * 2, 'i8*');\n }\n return output;\n}\n\n/**\n * Read a CoordIJ from C and return an {i, j} pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\nfunction readCoordIJ(cAddress) {\n return {\n i: libh3.getValue(cAddress, 'i32'),\n j: libh3.getValue(cAddress + SZ_INT, 'i32')\n };\n}\n\n/**\n * Store an {i, j} pair to a C CoordIJ struct.\n * @private\n * @param {number} cAddress Pointer to C memory\n * @param {CoordIJ} ij {i,j} pair to store\n * @return {void}\n */\nfunction storeCoordIJ(cAddress, ref) {\n var i = ref.i;\n var j = ref.j;\n\n libh3.setValue(cAddress, i, 'i32');\n libh3.setValue(cAddress + SZ_INT, j, 'i32');\n}\n\n/**\n * Read an array of positive integers array from C. Negative\n * values are considered invalid and ignored in output.\n * @private\n * @param {number} cAddress Pointer to C array\n * @param {number} count Length of C array\n * @return {number[]} Javascript integer array\n */\nfunction readArrayOfPositiveIntegers(cAddress, count) {\n var out = [];\n for (var i = 0; i < count; i++) {\n var int = libh3.getValue(cAddress + SZ_INT * i, 'i32');\n if (int >= 0) {\n out.push(int);\n }\n }\n return out;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Core\n\n/**\n * Whether a given string represents a valid H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} Whether the index is valid\n */\nfunction isValidCell(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.isValidCell(lower, upper));\n}\n\n/**\n * Whether the given H3 index is a pentagon\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isPentagon\n */\nfunction isPentagon(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.isPentagon(lower, upper));\n}\n\n/**\n * Whether the given H3 index is in a Class III resolution (rotated versus\n * the icosahedron and subject to shape distortion adding extra points on\n * icosahedron edges, making them not true hexagons).\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isResClassIII\n */\nfunction isResClassIII(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.isResClassIII(lower, upper));\n}\n\n/**\n * Get the number of the base cell for a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get the base cell for\n * @return {number} Index of the base cell (0-121)\n */\nfunction getBaseCellNumber(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return H3.getBaseCellNumber(lower, upper);\n}\n\n/**\n * Get the indices of all icosahedron faces intersected by a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get faces for\n * @return {number[]} Indices (0-19) of all intersected faces\n * @throws {H3Error} If input is invalid\n */\nfunction getIcosahedronFaces(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var countPtr = libh3._malloc(SZ_INT);\n try {\n throwIfError(H3.maxFaceCount(lower, upper, countPtr));\n var count = libh3.getValue(countPtr, 'i32');\n var faces = libh3._malloc(SZ_INT * count);\n try {\n throwIfError(H3.getIcosahedronFaces(lower, upper, faces));\n return readArrayOfPositiveIntegers(faces, count);\n } finally {\n libh3._free(faces);\n }\n } finally {\n libh3._free(countPtr);\n }\n}\n\n/**\n * Returns the resolution of an H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get resolution\n * @return {number} The number (0-15) resolution, or -1 if invalid\n */\nfunction getResolution(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n if (!H3.isValidCell(lower, upper)) {\n // Compatability with stated API\n return -1;\n }\n return H3.getResolution(lower, upper);\n}\n\n/**\n * Get the hexagon containing a lat,lon point\n * @static\n * @param {number} lat Latitude of point\n * @param {number} lng Longtitude of point\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index} H3 index\n * @throws {H3Error} If input is invalid\n */\nfunction latLngToCell(lat, lng, res) {\n var latLng = libh3._malloc(SZ_LATLNG);\n // Slightly more efficient way to set the memory\n libh3.HEAPF64.set([lat, lng].map(degsToRads), latLng / SZ_DBL);\n // Read value as a split long\n var h3Index = libh3._malloc(SZ_H3INDEX);\n try {\n throwIfError(H3.latLngToCell(latLng, res, h3Index));\n return validateH3Index(readH3IndexFromPointer(h3Index));\n } finally {\n libh3._free(h3Index);\n libh3._free(latLng);\n }\n}\n\n/**\n * Get the lat,lon center of a given hexagon\n * @static\n * @param {H3IndexInput} h3Index H3 index\n * @return {CoordPair} Point as a [lat, lng] pair\n * @throws {H3Error} If input is invalid\n */\nfunction cellToLatLng(h3Index) {\n var latLng = libh3._malloc(SZ_LATLNG);\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n try {\n throwIfError(H3.cellToLatLng(lower, upper, latLng));\n return readLatLng(latLng);\n } finally {\n libh3._free(latLng);\n }\n}\n\n/**\n * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]\n * points. For pentagons and hexagons on the edge of an icosahedron face, this\n * function may return up to 10 vertices.\n * @static\n * @param {H3IndexInput} h3Index H3 index\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {CoordPair[]} Array of [lat, lng] pairs\n * @throws {H3Error} If input is invalid\n */\nfunction cellToBoundary(h3Index, formatAsGeoJson) {\n var cellBoundary = libh3._malloc(SZ_CELLBOUNDARY);\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n try {\n throwIfError(H3.cellToBoundary(lower, upper, cellBoundary));\n return readCellBoundary(cellBoundary, formatAsGeoJson, formatAsGeoJson);\n } finally {\n libh3._free(cellBoundary);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Algorithms\n\n/**\n * Get the parent of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get parent for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of parent, or null for invalid input\n * @throws {H3Error} If input is invalid\n */\nfunction cellToParent(h3Index, res) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var parent = libh3._malloc(SZ_H3INDEX);\n try {\n throwIfError(H3.cellToParent(lower, upper, res, parent));\n return validateH3Index(readH3IndexFromPointer(parent));\n } finally {\n libh3._free(parent);\n }\n}\n\n/**\n * Get the children/descendents of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get children for\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index[]} H3 indexes of children, or empty array for invalid input\n * @throws {H3Error} If resolution is invalid or output is too large for JS\n */\nfunction cellToChildren(h3Index, res) {\n // Bad input in this case can potentially result in high computation volume\n // using the current C algorithm. Validate and return an empty array on failure.\n if (!isValidCell(h3Index)) {\n return [];\n }\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = validateArrayLength(cellToChildrenSize(h3Index, res));\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n try {\n throwIfError(H3.cellToChildren(lower, upper, res, hexagons));\n return readArrayOfH3Indexes(hexagons, count);\n } finally {\n libh3._free(hexagons);\n }\n}\n\n/**\n * Get the number of children for a cell at a given resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get child count for\n * @param {number} res Child resolution\n * @return {number} Number of children at res for the given cell\n * @throws {H3Error} If cell or parentRes are invalid\n */\nfunction cellToChildrenSize(h3Index, res) {\n if (!isValidCell(h3Index)) {\n throw H3LibraryError(E_CELL_INVALID);\n }\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var countPtr = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.cellToChildrenSize(lower, upper, res, countPtr));\n return readInt64AsDoubleFromPointer(countPtr);\n } finally {\n libh3._free(countPtr);\n }\n}\n\n/**\n * Get the center child of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get center child for\n * @param {number} res Resolution of cell to return\n * @return {H3Index} H3 index of child, or null for invalid input\n * @throws {H3Error} If resolution is invalid\n */\nfunction cellToCenterChild(h3Index, res) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var centerChild = libh3._malloc(SZ_H3INDEX);\n try {\n throwIfError(H3.cellToCenterChild(lower, upper, res, centerChild));\n return validateH3Index(readH3IndexFromPointer(centerChild));\n } finally {\n libh3._free(centerChild);\n }\n}\n\n/**\n * Get the position of the cell within an ordered list of all children of the\n * cell's parent at the specified resolution.\n * @static\n * @param {H3IndexInput} h3Index H3 index to get child pos for\n * @param {number} parentRes Resolution of reference parent\n * @return {number} Position of child within parent at parentRes\n * @throws {H3Error} If cell or parentRes are invalid\n */\nfunction cellToChildPos(h3Index, parentRes) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var childPos = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.cellToChildPos(lower, upper, parentRes, childPos));\n return readInt64AsDoubleFromPointer(childPos);\n } finally {\n libh3._free(childPos);\n }\n}\n\n/**\n * Get the child cell at a given position within an ordered list of all children\n * at the specified resolution\n * @static\n * @param {number} childPos Position of the child cell to get\n * @param {H3IndexInput} h3Index H3 index of the parent cell\n * @param {number} childRes Resolution of child cell to return\n * @return {H3Index} H3 index of child\n * @throws {H3Error} If input is invalid\n */\nfunction childPosToCell(childPos, h3Index, childRes) {\n var ref = numberToSplitLong(childPos);\n var cpLower = ref[0];\n var cpUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(h3Index);\n var lower = ref$1[0];\n var upper = ref$1[1];\n var child = libh3._malloc(SZ_H3INDEX);\n try {\n throwIfError(H3.childPosToCell(cpLower, cpUpper, lower, upper, childRes, child));\n return validateH3Index(readH3IndexFromPointer(child));\n } finally {\n libh3._free(child);\n }\n}\n\n/**\n * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {H3Error} If input is invalid or output is too large for JS\n */\nfunction gridDisk(h3Index, ringSize) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var countPtr = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.maxGridDiskSize(ringSize, countPtr));\n var count = validateArrayLength(readInt64AsDoubleFromPointer(countPtr));\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n try {\n throwIfError(H3.gridDisk(lower, upper, ringSize, hexagons));\n return readArrayOfH3Indexes(hexagons, count);\n } finally {\n libh3._free(hexagons);\n }\n } finally {\n libh3._free(countPtr);\n }\n}\n\n/**\n * Get all hexagons in a k-ring around a given center, in an array of arrays\n * ordered by distance from the origin. The order of the hexagons within each ring is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[][]} Array of arrays with H3 indexes for all hexagons each ring\n * @throws {H3Error} If input is invalid or output is too large for JS\n */\nfunction gridDiskDistances(h3Index, ringSize) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var countPtr = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.maxGridDiskSize(ringSize, countPtr));\n var count = validateArrayLength(readInt64AsDoubleFromPointer(countPtr));\n var kRings = libh3._calloc(count, SZ_H3INDEX);\n var distances = libh3._calloc(count, SZ_INT);\n try {\n throwIfError(H3.gridDiskDistances(lower, upper, ringSize, kRings, distances));\n /**\n * An array of empty arrays to hold the output\n * @type {string[][]}\n * @private\n */\n var out = [];\n for (var i = 0; i < ringSize + 1; i++) {\n out.push([]);\n }\n // Read the array of hexagons, putting them into the appropriate rings\n for (var i$1 = 0; i$1 < count; i$1++) {\n var cell = readH3IndexFromPointer(kRings, i$1);\n var index = libh3.getValue(distances + SZ_INT * i$1, 'i32');\n // eslint-disable-next-line max-depth\n if (cell !== null) {\n out[index].push(cell);\n }\n }\n return out;\n } finally {\n libh3._free(kRings);\n libh3._free(distances);\n }\n } finally {\n libh3._free(countPtr);\n }\n}\n\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {Error} If the algorithm could not calculate the ring\n * @throws {H3Error} If input is invalid\n */\nfunction gridRing(h3Index, ringSize) {\n var maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n try {\n throwIfError(H3.gridRing.apply(H3, h3IndexToSplitLong(h3Index).concat( [ringSize], [hexagons] )));\n return readArrayOfH3Indexes(hexagons, maxCount);\n } finally {\n libh3._free(hexagons);\n }\n}\n\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * Unlike gridDisk, this function will throw an error if there is a pentagon anywhere in the ring.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {Error} If the algorithm could not calculate the ring\n * @throws {H3Error} If input is invalid\n */\nfunction gridRingUnsafe(h3Index, ringSize) {\n var maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n try {\n throwIfError(H3.gridRingUnsafe.apply(H3, h3IndexToSplitLong(h3Index).concat( [ringSize], [hexagons] )));\n return readArrayOfH3Indexes(hexagons, maxCount);\n } finally {\n libh3._free(hexagons);\n }\n}\n\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param {number[][] | number[][][]} coordinates\n * Array of loops, or a single loop\n * @param {number} res Resolution of hexagons to return\n * @param {boolean} [isGeoJson] Whether to expect GeoJson-style [lng, lat]\n * pairs instead of [lat, lng]\n * @return {H3Index[]} H3 indexes for all hexagons in polygon\n * @throws {H3Error} If input is invalid or output is too large for JS\n */\nfunction polygonToCells(coordinates, res, isGeoJson) {\n validateRes(res);\n isGeoJson = Boolean(isGeoJson);\n // Guard against empty input\n if (coordinates.length === 0 || coordinates[0].length === 0) {\n return [];\n }\n // Wrap to expected format if a single loop is provided\n var polygon = typeof coordinates[0][0] === 'number' ? [coordinates] : coordinates;\n var geoPolygon = coordinatesToGeoPolygon(\n // @ts-expect-error - There's no way to convince TS that polygon is now number[][][]\n polygon, isGeoJson);\n var countPtr = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.maxPolygonToCellsSize(geoPolygon, res, 0, countPtr));\n var count = validateArrayLength(readInt64AsDoubleFromPointer(countPtr));\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n try {\n throwIfError(H3.polygonToCells(geoPolygon, res, 0, hexagons));\n return readArrayOfH3Indexes(hexagons, count);\n } finally {\n libh3._free(hexagons);\n }\n } finally {\n libh3._free(countPtr);\n destroyGeoPolygon(geoPolygon);\n }\n}\n\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param {number[][] | number[][][]} coordinates\n * Array of loops, or a single loop\n * @param {number} res Resolution of hexagons to return\n * @param {string} flags Value from POLYGON_TO_CELLS_FLAGS\n * @param {boolean} [isGeoJson] Whether to expect GeoJson-style [lng, lat]\n * pairs instead of [lat, lng]\n * @return {H3Index[]} H3 indexes for all hexagons in polygon\n * @throws {H3Error} If input is invalid or output is too large for JS\n */\nfunction polygonToCellsExperimental(coordinates, res, flags, isGeoJson) {\n validateRes(res);\n isGeoJson = Boolean(isGeoJson);\n var flagsInt = polygonToCellsFlagsToNumber(flags);\n // Guard against empty input\n if (coordinates.length === 0 || coordinates[0].length === 0) {\n return [];\n }\n // Wrap to expected format if a single loop is provided\n var polygon = typeof coordinates[0][0] === 'number' ? [coordinates] : coordinates;\n var geoPolygon = coordinatesToGeoPolygon(\n // @ts-expect-error - There's no way to convince TS that polygon is now number[][][]\n polygon, isGeoJson);\n var countPtr = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.maxPolygonToCellsSizeExperimental(geoPolygon, res, flagsInt, countPtr));\n var count = validateArrayLength(readInt64AsDoubleFromPointer(countPtr));\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n try {\n throwIfError(H3.polygonToCellsExperimental(geoPolygon, res, flagsInt, count, UNUSED_UPPER_32_BITS, hexagons));\n return readArrayOfH3Indexes(hexagons, count);\n } finally {\n libh3._free(hexagons);\n }\n } finally {\n libh3._free(countPtr);\n destroyGeoPolygon(geoPolygon);\n }\n}\n\n/**\n * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon\n * format (an array of polygons, each with an array of loops, each an array of\n * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON\n * is requested.\n *\n * It is the responsibility of the caller to ensure that all hexagons in the\n * set have the same resolution and that the set contains no duplicates. Behavior\n * is undefined if duplicates or multiple resolutions are present, and the\n * algorithm may produce unexpected or invalid polygons.\n *\n * @static\n * @param {H3IndexInput[]} h3Indexes H3 indexes to get outlines for\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {CoordPair[][][]} MultiPolygon-style output.\n * @throws {H3Error} If input is invalid\n */\nfunction cellsToMultiPolygon(h3Indexes, formatAsGeoJson) {\n // Early exit on empty input\n if (!h3Indexes || !h3Indexes.length) {\n return [];\n }\n // Set up input set\n var indexCount = h3Indexes.length;\n var set = libh3._calloc(indexCount, SZ_H3INDEX);\n storeArrayOfH3Indexes(set, h3Indexes);\n // Allocate memory for output linked polygon\n var polygon = libh3._calloc(SZ_LINKED_GEOPOLYGON);\n try {\n throwIfError(H3.cellsToLinkedMultiPolygon(set, indexCount, polygon));\n return readMultiPolygon(polygon, formatAsGeoJson);\n } finally {\n // Clean up\n H3.destroyLinkedMultiPolygon(polygon);\n libh3._free(polygon);\n libh3._free(set);\n }\n}\n\n/**\n * Compact a set of hexagons of the same resolution into a set of hexagons across\n * multiple levels that represents the same area.\n * @static\n * @param {H3IndexInput[]} h3Set H3 indexes to compact\n * @return {H3Index[]} Compacted H3 indexes\n * @throws {H3Error} If the input is invalid (e.g. duplicate hexagons)\n */\nfunction compactCells(h3Set) {\n if (!h3Set || !h3Set.length) {\n return [];\n }\n // Set up input set\n var count = h3Set.length;\n var set = libh3._calloc(count, SZ_H3INDEX);\n storeArrayOfH3Indexes(set, h3Set);\n // Allocate memory for compacted hexagons, worst-case is no compaction\n var compactedSet = libh3._calloc(count, SZ_H3INDEX);\n try {\n throwIfError(H3.compactCells(set, compactedSet, count, UNUSED_UPPER_32_BITS));\n return readArrayOfH3Indexes(compactedSet, count);\n } finally {\n libh3._free(set);\n libh3._free(compactedSet);\n }\n}\n\n/**\n * Uncompact a compacted set of hexagons to hexagons of the same resolution\n * @static\n * @param {H3IndexInput[]} compactedSet H3 indexes to uncompact\n * @param {number} res The resolution to uncompact to\n * @return {H3Index[]} The uncompacted H3 indexes\n * @throws {H3Error} If the input is invalid (e.g. invalid resolution)\n */\nfunction uncompactCells(compactedSet, res) {\n validateRes(res);\n if (!compactedSet || !compactedSet.length) {\n return [];\n }\n // Set up input set\n var count = compactedSet.length;\n var set = libh3._calloc(count, SZ_H3INDEX);\n storeArrayOfH3Indexes(set, compactedSet);\n // Estimate how many hexagons we need (always overestimates if in error)\n var uncompactCellSizePtr = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.uncompactCellsSize(set, count, UNUSED_UPPER_32_BITS, res, uncompactCellSizePtr));\n var uncompactCellSize = validateArrayLength(readInt64AsDoubleFromPointer(uncompactCellSizePtr));\n // Allocate memory for uncompacted hexagons\n var uncompactedSet = libh3._calloc(uncompactCellSize, SZ_H3INDEX);\n try {\n throwIfError(H3.uncompactCells(set, count, UNUSED_UPPER_32_BITS, uncompactedSet, uncompactCellSize, UNUSED_UPPER_32_BITS, res));\n return readArrayOfH3Indexes(uncompactedSet, uncompactCellSize);\n } finally {\n libh3._free(set);\n libh3._free(uncompactedSet);\n }\n } finally {\n libh3._free(uncompactCellSizePtr);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Directed edges\n\n/**\n * Whether two H3 indexes are neighbors (share an edge)\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {boolean} Whether the hexagons share an edge\n * @throws {H3Error} If the input is invalid\n */\nfunction areNeighborCells(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n var out = libh3._malloc(SZ_INT);\n try {\n throwIfError(H3.areNeighborCells(oLower, oUpper, dLower, dUpper, out));\n return readBooleanFromPointer(out);\n } finally {\n libh3._free(out);\n }\n}\n\n/**\n * Get an H3 index representing a unidirectional edge for a given origin and destination\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index} H3 index of the edge, or null if no edge is shared\n * @throws {H3Error} If the input is invalid\n */\nfunction cellsToDirectedEdge(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n var h3Index = libh3._malloc(SZ_H3INDEX);\n try {\n throwIfError(H3.cellsToDirectedEdge(oLower, oUpper, dLower, dUpper, h3Index));\n return validateH3Index(readH3IndexFromPointer(h3Index));\n } finally {\n libh3._free(h3Index);\n }\n}\n\n/**\n * Get the origin hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge origin\n * @throws {H3Error} If the input is invalid\n */\nfunction getDirectedEdgeOrigin(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n var h3Index = libh3._malloc(SZ_H3INDEX);\n try {\n throwIfError(H3.getDirectedEdgeOrigin(lower, upper, h3Index));\n return validateH3Index(readH3IndexFromPointer(h3Index));\n } finally {\n libh3._free(h3Index);\n }\n}\n\n/**\n * Get the destination hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge destination\n * @throws {H3Error} If the input is invalid\n */\nfunction getDirectedEdgeDestination(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n var h3Index = libh3._malloc(SZ_H3INDEX);\n try {\n throwIfError(H3.getDirectedEdgeDestination(lower, upper, h3Index));\n return validateH3Index(readH3IndexFromPointer(h3Index));\n } finally {\n libh3._free(h3Index);\n }\n}\n\n/**\n * Whether the input is a valid unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {boolean} Whether the index is valid\n */\nfunction isValidDirectedEdge(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.isValidDirectedEdge(lower, upper));\n}\n\n/**\n * Get the [origin, destination] pair represented by a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index[]} [origin, destination] pair as H3 indexes\n * @throws {H3Error} If the input is invalid\n */\nfunction directedEdgeToCells(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n var count = 2;\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n try {\n throwIfError(H3.directedEdgeToCells(lower, upper, hexagons));\n return readArrayOfH3Indexes(hexagons, count);\n } finally {\n libh3._free(hexagons);\n }\n}\n\n/**\n * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to\n * every neighbor)\n * @static\n * @param {H3IndexInput} h3Index H3 index of the origin hexagon\n * @return {H3Index[]} List of unidirectional edges\n * @throws {H3Error} If the input is invalid\n */\nfunction originToDirectedEdges(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = 6;\n var edges = libh3._calloc(count, SZ_H3INDEX);\n try {\n throwIfError(H3.originToDirectedEdges(lower, upper, edges));\n return readArrayOfH3Indexes(edges, count);\n } finally {\n libh3._free(edges);\n }\n}\n\n/**\n * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that\n * cross the edge of an icosahedron face, this may return 3 coordinates.\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat]\n * @return {CoordPair[]} Array of geo coordinate pairs\n * @throws {H3Error} If the input is invalid\n */\nfunction directedEdgeToBoundary(edgeIndex, formatAsGeoJson) {\n var cellBoundary = libh3._malloc(SZ_CELLBOUNDARY);\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n try {\n throwIfError(H3.directedEdgeToBoundary(lower, upper, cellBoundary));\n return readCellBoundary(cellBoundary, formatAsGeoJson);\n } finally {\n libh3._free(cellBoundary);\n }\n}\n\n/**\n * Get the grid distance between two hex indexes. This function may fail\n * to find the distance between two indexes if they are very far apart or\n * on opposite sides of a pentagon.\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {number} Distance between hexagons\n * @throws {H3Error} If input is invalid or the distance could not be calculated\n */\nfunction gridDistance(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n var countPtr = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.gridDistance(oLower, oUpper, dLower, dUpper, countPtr));\n return readInt64AsDoubleFromPointer(countPtr);\n } finally {\n libh3._free(countPtr);\n }\n}\n\n/**\n * Given two H3 indexes, return the line of indexes between them (inclusive).\n *\n * This function may fail to find the line between two indexes, for\n * example if they are very far apart. It may also fail when finding\n * distances for indexes on opposite sides of a pentagon.\n *\n * Notes:\n *\n * - The specific output of this function should not be considered stable\n * across library versions. The only guarantees the library provides are\n * that the line length will be `h3Distance(start, end) + 1` and that\n * every index in the line will be a neighbor of the preceding index.\n * - Lines are drawn in grid space, and may not correspond exactly to either\n * Cartesian lines or great arcs.\n *\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index[]} H3 indexes connecting origin and destination\n * @throws {H3Error} If input is invalid or the line cannot be calculated\n */\nfunction gridPathCells(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n var countPtr = libh3._malloc(SZ_INT64);\n try {\n throwIfError(H3.gridPathCellsSize(oLower, oUpper, dLower, dUpper, countPtr));\n var count = validateArrayLength(readInt64AsDoubleFromPointer(countPtr));\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n try {\n H3.gridPathCells(oLower, oUpper, dLower, dUpper, hexagons);\n return readArrayOfH3Indexes(hexagons, count);\n } finally {\n libh3._free(hexagons);\n }\n } finally {\n libh3._free(countPtr);\n }\n}\nvar LOCAL_IJ_DEFAULT_MODE = 0;\n\n/**\n * Produces IJ coordinates for an H3 index anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {H3IndexInput} destination H3 index for which to find relative coordinates\n * @return {CoordIJ} Coordinates as an `{i, j}` pair\n * @throws {H3Error} If the IJ coordinates cannot be calculated\n */\nfunction cellToLocalIj(origin, destination) {\n var ij = libh3._malloc(SZ_COORDIJ);\n try {\n throwIfError(H3.cellToLocalIj.apply(H3, h3IndexToSplitLong(origin).concat( h3IndexToSplitLong(destination), [LOCAL_IJ_DEFAULT_MODE], [ij] )));\n return readCoordIJ(ij);\n } finally {\n libh3._free(ij);\n }\n}\n\n/**\n * Produces an H3 index for IJ coordinates anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {CoordIJ} coords Coordinates as an `{i, j}` pair\n * @return {H3Index} H3 index at the relative coordinates\n * @throws {H3Error} If the H3 index cannot be calculated\n */\nfunction localIjToCell(origin, coords) {\n // Validate input coords\n if (!coords || typeof coords.i !== 'number' || typeof coords.j !== 'number') {\n throw new Error('Coordinates must be provided as an {i, j} object');\n }\n // Allocate memory for the CoordIJ struct and an H3 index to hold the return value\n var ij = libh3._malloc(SZ_COORDIJ);\n var out = libh3._malloc(SZ_H3INDEX);\n storeCoordIJ(ij, coords);\n try {\n throwIfError(H3.localIjToCell.apply(H3, h3IndexToSplitLong(origin).concat( [ij], [LOCAL_IJ_DEFAULT_MODE], [out] )));\n return validateH3Index(readH3IndexFromPointer(out));\n } finally {\n libh3._free(ij);\n libh3._free(out);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Distance/area utilities\n\n/**\n * Great circle distance between two geo points. This is not specific to H3,\n * but is implemented in the library and provided here as a convenience.\n * @static\n * @param {number[]} latLng1 Origin coordinate as [lat, lng]\n * @param {number[]} latLng2 Destination coordinate as [lat, lng]\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Great circle distance\n * @throws {H3Error} If the unit is invalid\n */\nfunction greatCircleDistance(latLng1, latLng2, unit) {\n var coord1 = storeLatLng(latLng1[0], latLng1[1]);\n var coord2 = storeLatLng(latLng2[0], latLng2[1]);\n var result;\n switch (unit) {\n case UNITS.m:\n result = H3.greatCircleDistanceM(coord1, coord2);\n break;\n case UNITS.km:\n result = H3.greatCircleDistanceKm(coord1, coord2);\n break;\n case UNITS.rads:\n result = H3.greatCircleDistanceRads(coord1, coord2);\n break;\n default:\n result = null;\n }\n libh3._free(coord1);\n libh3._free(coord2);\n if (result === null) {\n throw JSBindingError(E_UNKNOWN_UNIT, unit);\n }\n return result;\n}\n\n/**\n * Exact area of a given cell\n * @static\n * @param {H3IndexInput} h3Index H3 index of the hexagon to measure\n * @param {string} unit Distance unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number} Cell area\n * @throws {H3Error} If the input is invalid\n */\nfunction cellArea(h3Index, unit) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var out = libh3._malloc(SZ_DBL);\n try {\n switch (unit) {\n case UNITS.m2:\n throwIfError(H3.cellAreaM2(lower, upper, out));\n break;\n case UNITS.km2:\n throwIfError(H3.cellAreaKm2(lower, upper, out));\n break;\n case UNITS.rads2:\n throwIfError(H3.cellAreaRads2(lower, upper, out));\n break;\n default:\n throw JSBindingError(E_UNKNOWN_UNIT, unit);\n }\n return readDoubleFromPointer(out);\n } finally {\n libh3._free(out);\n }\n}\n\n/**\n * Calculate length of a given unidirectional edge\n * @static\n * @param {H3IndexInput} edge H3 index of the edge to measure\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Cell area\n * @throws {H3Error} If the input is invalid\n */\nfunction edgeLength(edge, unit) {\n var ref = h3IndexToSplitLong(edge);\n var lower = ref[0];\n var upper = ref[1];\n var out = libh3._malloc(SZ_DBL);\n try {\n switch (unit) {\n case UNITS.m:\n throwIfError(H3.edgeLengthM(lower, upper, out));\n break;\n case UNITS.km:\n throwIfError(H3.edgeLengthKm(lower, upper, out));\n break;\n case UNITS.rads:\n throwIfError(H3.edgeLengthRads(lower, upper, out));\n break;\n default:\n throw JSBindingError(E_UNKNOWN_UNIT, unit);\n }\n return readDoubleFromPointer(out);\n } finally {\n libh3._free(out);\n }\n}\n\n/**\n * Average hexagon area at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Area unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number} Average area\n * @throws {H3Error} If the input is invalid\n */\nfunction getHexagonAreaAvg(res, unit) {\n validateRes(res);\n var out = libh3._malloc(SZ_DBL);\n try {\n switch (unit) {\n case UNITS.m2:\n throwIfError(H3.getHexagonAreaAvgM2(res, out));\n break;\n case UNITS.km2:\n throwIfError(H3.getHexagonAreaAvgKm2(res, out));\n break;\n default:\n throw JSBindingError(E_UNKNOWN_UNIT, unit);\n }\n return readDoubleFromPointer(out);\n } finally {\n libh3._free(out);\n }\n}\n\n/**\n * Average hexagon edge length at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Average edge length\n * @throws {H3Error} If the input is invalid\n */\nfunction getHexagonEdgeLengthAvg(res, unit) {\n validateRes(res);\n var out = libh3._malloc(SZ_DBL);\n try {\n switch (unit) {\n case UNITS.m:\n throwIfError(H3.getHexagonEdgeLengthAvgM(res, out));\n break;\n case UNITS.km:\n throwIfError(H3.getHexagonEdgeLengthAvgKm(res, out));\n break;\n default:\n throw JSBindingError(E_UNKNOWN_UNIT, unit);\n }\n return readDoubleFromPointer(out);\n } finally {\n libh3._free(out);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Vertex mode\n\n/**\n * Find the index for a vertex of a cell.\n * @static\n * @param {H3IndexInput} h3Index Cell to find the vertex for\n * @param {number} vertexNum Number (index) of the vertex to calculate\n * @return {H3Index} Vertex index\n * @throws {H3Error} If the input is invalid\n */\nfunction cellToVertex(h3Index, vertexNum) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var vertexIndex = libh3._malloc(SZ_H3INDEX);\n try {\n throwIfError(H3.cellToVertex(lower, upper, vertexNum, vertexIndex));\n return validateH3Index(readH3IndexFromPointer(vertexIndex));\n } finally {\n libh3._free(vertexIndex);\n }\n}\n\n/**\n * Find the indexes for all vertexes of a cell.\n * @static\n * @param {H3IndexInput} h3Index Cell to find all vertexes for\n * @return {H3Index[]} All vertex indexes of this cell\n * @throws {H3Error} If the input is invalid\n */\nfunction cellToVertexes(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxNumVertexes = 6;\n var vertexIndexes = libh3._calloc(maxNumVertexes, SZ_H3INDEX);\n try {\n throwIfError(H3.cellToVertexes(lower, upper, vertexIndexes));\n return readArrayOfH3Indexes(vertexIndexes, maxNumVertexes);\n } finally {\n libh3._free(vertexIndexes);\n }\n}\n\n/**\n * Get the lat, lng of a given vertex\n * @static\n * @param {H3IndexInput} h3Index A vertex index\n * @returns {CoordPair} Latitude, longitude coordinates of the vertex\n * @throws {H3Error} If the input is invalid\n */\nfunction vertexToLatLng(h3Index) {\n var latlng = libh3._malloc(SZ_LATLNG);\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n try {\n throwIfError(H3.vertexToLatLng(lower, upper, latlng));\n return readLatLng(latlng);\n } finally {\n libh3._free(latlng);\n }\n}\n\n/**\n * Returns true if the input is a valid vertex index.\n * @static\n * @param {H3IndexInput} h3Index An index to test for being a vertex index\n * @returns {boolean} True if the index represents a vertex\n */\nfunction isValidVertex(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.isValidVertex(lower, upper));\n}\n\n// ----------------------------------------------------------------------------\n// Public informational utilities\n\n/**\n * The total count of hexagons in the world at a given resolution. Note that above\n * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,\n * so consumers should use caution when applying further operations to the output.\n * @static\n * @param {number} res Hexagon resolution\n * @return {number} Count\n * @throws {H3Error} If the resolution is invalid\n */\nfunction getNumCells(res) {\n validateRes(res);\n var countPtr = libh3._malloc(SZ_INT64);\n try {\n // Get number as a long value\n throwIfError(H3.getNumCells(res, countPtr));\n return readInt64AsDoubleFromPointer(countPtr);\n } finally {\n libh3._free(countPtr);\n }\n}\n\n/**\n * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is\n * the descendant of a res 0 index, this can be used with h3ToChildren to iterate\n * over H3 indexes at any resolution.\n * @static\n * @return {H3Index[]} All H3 indexes at res 0\n */\nfunction getRes0Cells() {\n var count = H3.res0CellCount();\n var hexagons = libh3._malloc(SZ_H3INDEX * count);\n try {\n throwIfError(H3.getRes0Cells(hexagons));\n return readArrayOfH3Indexes(hexagons, count);\n } finally {\n libh3._free(hexagons);\n }\n}\n\n/**\n * Get the twelve pentagon indexes at a given resolution.\n * @static\n * @param {number} res Hexagon resolution\n * @return {H3Index[]} All H3 pentagon indexes at res\n * @throws {H3Error} If the resolution is invalid\n */\nfunction getPentagons(res) {\n validateRes(res);\n var count = H3.pentagonCount();\n var hexagons = libh3._malloc(SZ_H3INDEX * count);\n try {\n throwIfError(H3.getPentagons(res, hexagons));\n return readArrayOfH3Indexes(hexagons, count);\n } finally {\n libh3._free(hexagons);\n }\n}\n\n/**\n * Convert degrees to radians\n * @static\n * @param {number} deg Value in degrees\n * @return {number} Value in radians\n */\nfunction degsToRads(deg) {\n return deg * Math.PI / 180;\n}\n\n/**\n * Convert radians to degrees\n * @static\n * @param {number} rad Value in radians\n * @return {number} Value in degrees\n */\nfunction radsToDegs(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport { UNITS, POLYGON_TO_CELLS_FLAGS, h3IndexToSplitLong, splitLongToH3Index, isValidCell, isPentagon, isResClassIII, getBaseCellNumber, getIcosahedronFaces, getResolution, latLngToCell, cellToLatLng, cellToBoundary, cellToParent, cellToChildren, cellToChildrenSize, cellToCenterChild, cellToChildPos, childPosToCell, gridDisk, gridDiskDistances, gridRing, gridRingUnsafe, polygonToCells, polygonToCellsExperimental, cellsToMultiPolygon, compactCells, uncompactCells, areNeighborCells, cellsToDirectedEdge, getDirectedEdgeOrigin, getDirectedEdgeDestination, isValidDirectedEdge, directedEdgeToCells, originToDirectedEdges, directedEdgeToBoundary, gridDistance, gridPathCells, cellToLocalIj, localIjToCell, greatCircleDistance, cellArea, edgeLength, getHexagonAreaAvg, getHexagonEdgeLengthAvg, cellToVertex, cellToVertexes, vertexToLatLng, isValidVertex, getNumCells, getRes0Cells, getPentagons, degsToRads, radsToDegs };\n//# sourceMappingURL=h3-js.es.js.map\n","/**\n * @implements {IHooks}\n */\nclass Hooks {\n\t/**\n\t * @callback HookCallback\n\t * @this {*|Jsep} this\n\t * @param {Jsep} env\n\t * @returns: void\n\t */\n\t/**\n\t * Adds the given callback to the list of callbacks for the given hook.\n\t *\n\t * The callback will be invoked when the hook it is registered for is run.\n\t *\n\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t *\n\t * @param {string|object} name The name of the hook, or an object of callbacks keyed by name\n\t * @param {HookCallback|boolean} callback The callback function which is given environment variables.\n\t * @param {?boolean} [first=false] Will add the hook to the top of the list (defaults to the bottom)\n\t * @public\n\t */\n\tadd(name, callback, first) {\n\t\tif (typeof arguments[0] != 'string') {\n\t\t\t// Multiple hook callbacks, keyed by name\n\t\t\tfor (let name in arguments[0]) {\n\t\t\t\tthis.add(name, arguments[0][name], arguments[1]);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t(Array.isArray(name) ? name : [name]).forEach(function (name) {\n\t\t\t\tthis[name] = this[name] || [];\n\n\t\t\t\tif (callback) {\n\t\t\t\t\tthis[name][first ? 'unshift' : 'push'](callback);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t}\n\n\t/**\n\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t *\n\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t *\n\t * @param {string} name The name of the hook.\n\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t * @public\n\t */\n\trun(name, env) {\n\t\tthis[name] = this[name] || [];\n\t\tthis[name].forEach(function (callback) {\n\t\t\tcallback.call(env && env.context ? env.context : env, env);\n\t\t});\n\t}\n}\n\n/**\n * @implements {IPlugins}\n */\nclass Plugins {\n\tconstructor(jsep) {\n\t\tthis.jsep = jsep;\n\t\tthis.registered = {};\n\t}\n\n\t/**\n\t * @callback PluginSetup\n\t * @this {Jsep} jsep\n\t * @returns: void\n\t */\n\t/**\n\t * Adds the given plugin(s) to the registry\n\t *\n\t * @param {object} plugins\n\t * @param {string} plugins.name The name of the plugin\n\t * @param {PluginSetup} plugins.init The init function\n\t * @public\n\t */\n\tregister(...plugins) {\n\t\tplugins.forEach((plugin) => {\n\t\t\tif (typeof plugin !== 'object' || !plugin.name || !plugin.init) {\n\t\t\t\tthrow new Error('Invalid JSEP plugin format');\n\t\t\t}\n\t\t\tif (this.registered[plugin.name]) {\n\t\t\t\t// already registered. Ignore.\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tplugin.init(this.jsep);\n\t\t\tthis.registered[plugin.name] = plugin;\n\t\t});\n\t}\n}\n\n// JavaScript Expression Parser (JSEP) 1.4.0\n\nclass Jsep {\n\t/**\n\t * @returns {string}\n\t */\n\tstatic get version() {\n\t\t// To be filled in by the template\n\t\treturn '1.4.0';\n\t}\n\n\t/**\n\t * @returns {string}\n\t */\n\tstatic toString() {\n\t\treturn 'JavaScript Expression Parser (JSEP) v' + Jsep.version;\n\t};\n\n\t// ==================== CONFIG ================================\n\t/**\n\t * @method addUnaryOp\n\t * @param {string} op_name The name of the unary op to add\n\t * @returns {Jsep}\n\t */\n\tstatic addUnaryOp(op_name) {\n\t\tJsep.max_unop_len = Math.max(op_name.length, Jsep.max_unop_len);\n\t\tJsep.unary_ops[op_name] = 1;\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method jsep.addBinaryOp\n\t * @param {string} op_name The name of the binary op to add\n\t * @param {number} precedence The precedence of the binary op (can be a float). Higher number = higher precedence\n\t * @param {boolean} [isRightAssociative=false] whether operator is right-associative\n\t * @returns {Jsep}\n\t */\n\tstatic addBinaryOp(op_name, precedence, isRightAssociative) {\n\t\tJsep.max_binop_len = Math.max(op_name.length, Jsep.max_binop_len);\n\t\tJsep.binary_ops[op_name] = precedence;\n\t\tif (isRightAssociative) {\n\t\t\tJsep.right_associative.add(op_name);\n\t\t}\n\t\telse {\n\t\t\tJsep.right_associative.delete(op_name);\n\t\t}\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method addIdentifierChar\n\t * @param {string} char The additional character to treat as a valid part of an identifier\n\t * @returns {Jsep}\n\t */\n\tstatic addIdentifierChar(char) {\n\t\tJsep.additional_identifier_chars.add(char);\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method addLiteral\n\t * @param {string} literal_name The name of the literal to add\n\t * @param {*} literal_value The value of the literal\n\t * @returns {Jsep}\n\t */\n\tstatic addLiteral(literal_name, literal_value) {\n\t\tJsep.literals[literal_name] = literal_value;\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeUnaryOp\n\t * @param {string} op_name The name of the unary op to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeUnaryOp(op_name) {\n\t\tdelete Jsep.unary_ops[op_name];\n\t\tif (op_name.length === Jsep.max_unop_len) {\n\t\t\tJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\n\t\t}\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllUnaryOps\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllUnaryOps() {\n\t\tJsep.unary_ops = {};\n\t\tJsep.max_unop_len = 0;\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeIdentifierChar\n\t * @param {string} char The additional character to stop treating as a valid part of an identifier\n\t * @returns {Jsep}\n\t */\n\tstatic removeIdentifierChar(char) {\n\t\tJsep.additional_identifier_chars.delete(char);\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeBinaryOp\n\t * @param {string} op_name The name of the binary op to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeBinaryOp(op_name) {\n\t\tdelete Jsep.binary_ops[op_name];\n\n\t\tif (op_name.length === Jsep.max_binop_len) {\n\t\t\tJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\t\t}\n\t\tJsep.right_associative.delete(op_name);\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllBinaryOps\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllBinaryOps() {\n\t\tJsep.binary_ops = {};\n\t\tJsep.max_binop_len = 0;\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeLiteral\n\t * @param {string} literal_name The name of the literal to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeLiteral(literal_name) {\n\t\tdelete Jsep.literals[literal_name];\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllLiterals\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllLiterals() {\n\t\tJsep.literals = {};\n\n\t\treturn Jsep;\n\t}\n\t// ==================== END CONFIG ============================\n\n\n\t/**\n\t * @returns {string}\n\t */\n\tget char() {\n\t\treturn this.expr.charAt(this.index);\n\t}\n\n\t/**\n\t * @returns {number}\n\t */\n\tget code() {\n\t\treturn this.expr.charCodeAt(this.index);\n\t};\n\n\n\t/**\n\t * @param {string} expr a string with the passed in express\n\t * @returns Jsep\n\t */\n\tconstructor(expr) {\n\t\t// `index` stores the character number we are currently at\n\t\t// All of the gobbles below will modify `index` as we move along\n\t\tthis.expr = expr;\n\t\tthis.index = 0;\n\t}\n\n\t/**\n\t * static top-level parser\n\t * @returns {jsep.Expression}\n\t */\n\tstatic parse(expr) {\n\t\treturn (new Jsep(expr)).parse();\n\t}\n\n\t/**\n\t * Get the longest key length of any object\n\t * @param {object} obj\n\t * @returns {number}\n\t */\n\tstatic getMaxKeyLen(obj) {\n\t\treturn Math.max(0, ...Object.keys(obj).map(k => k.length));\n\t}\n\n\t/**\n\t * `ch` is a character code in the next three functions\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isDecimalDigit(ch) {\n\t\treturn (ch >= 48 && ch <= 57); // 0...9\n\t}\n\n\t/**\n\t * Returns the precedence of a binary operator or `0` if it isn't a binary operator. Can be float.\n\t * @param {string} op_val\n\t * @returns {number}\n\t */\n\tstatic binaryPrecedence(op_val) {\n\t\treturn Jsep.binary_ops[op_val] || 0;\n\t}\n\n\t/**\n\t * Looks for start of identifier\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isIdentifierStart(ch) {\n\t\treturn (ch >= 65 && ch <= 90) || // A...Z\n\t\t\t(ch >= 97 && ch <= 122) || // a...z\n\t\t\t(ch >= 128 && !Jsep.binary_ops[String.fromCharCode(ch)]) || // any non-ASCII that is not an operator\n\t\t\t(Jsep.additional_identifier_chars.has(String.fromCharCode(ch))); // additional characters\n\t}\n\n\t/**\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isIdentifierPart(ch) {\n\t\treturn Jsep.isIdentifierStart(ch) || Jsep.isDecimalDigit(ch);\n\t}\n\n\t/**\n\t * throw error at index of the expression\n\t * @param {string} message\n\t * @throws\n\t */\n\tthrowError(message) {\n\t\tconst error = new Error(message + ' at character ' + this.index);\n\t\terror.index = this.index;\n\t\terror.description = message;\n\t\tthrow error;\n\t}\n\n\t/**\n\t * Run a given hook\n\t * @param {string} name\n\t * @param {jsep.Expression|false} [node]\n\t * @returns {?jsep.Expression}\n\t */\n\trunHook(name, node) {\n\t\tif (Jsep.hooks[name]) {\n\t\t\tconst env = { context: this, node };\n\t\t\tJsep.hooks.run(name, env);\n\t\t\treturn env.node;\n\t\t}\n\t\treturn node;\n\t}\n\n\t/**\n\t * Runs a given hook until one returns a node\n\t * @param {string} name\n\t * @returns {?jsep.Expression}\n\t */\n\tsearchHook(name) {\n\t\tif (Jsep.hooks[name]) {\n\t\t\tconst env = { context: this };\n\t\t\tJsep.hooks[name].find(function (callback) {\n\t\t\t\tcallback.call(env.context, env);\n\t\t\t\treturn env.node;\n\t\t\t});\n\t\t\treturn env.node;\n\t\t}\n\t}\n\n\t/**\n\t * Push `index` up to the next non-space character\n\t */\n\tgobbleSpaces() {\n\t\tlet ch = this.code;\n\t\t// Whitespace\n\t\twhile (ch === Jsep.SPACE_CODE\n\t\t|| ch === Jsep.TAB_CODE\n\t\t|| ch === Jsep.LF_CODE\n\t\t|| ch === Jsep.CR_CODE) {\n\t\t\tch = this.expr.charCodeAt(++this.index);\n\t\t}\n\t\tthis.runHook('gobble-spaces');\n\t}\n\n\t/**\n\t * Top-level method to parse all expressions and returns compound or single node\n\t * @returns {jsep.Expression}\n\t */\n\tparse() {\n\t\tthis.runHook('before-all');\n\t\tconst nodes = this.gobbleExpressions();\n\n\t\t// If there's only one expression just try returning the expression\n\t\tconst node = nodes.length === 1\n\t\t ? nodes[0]\n\t\t\t: {\n\t\t\t\ttype: Jsep.COMPOUND,\n\t\t\t\tbody: nodes\n\t\t\t};\n\t\treturn this.runHook('after-all', node);\n\t}\n\n\t/**\n\t * top-level parser (but can be reused within as well)\n\t * @param {number} [untilICode]\n\t * @returns {jsep.Expression[]}\n\t */\n\tgobbleExpressions(untilICode) {\n\t\tlet nodes = [], ch_i, node;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tch_i = this.code;\n\n\t\t\t// Expressions can be separated by semicolons, commas, or just inferred without any\n\t\t\t// separators\n\t\t\tif (ch_i === Jsep.SEMCOL_CODE || ch_i === Jsep.COMMA_CODE) {\n\t\t\t\tthis.index++; // ignore separators\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Try to gobble each expression individually\n\t\t\t\tif (node = this.gobbleExpression()) {\n\t\t\t\t\tnodes.push(node);\n\t\t\t\t\t// If we weren't able to find a binary expression and are out of room, then\n\t\t\t\t\t// the expression passed in probably has too much\n\t\t\t\t}\n\t\t\t\telse if (this.index < this.expr.length) {\n\t\t\t\t\tif (ch_i === untilICode) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tthis.throwError('Unexpected \"' + this.char + '\"');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nodes;\n\t}\n\n\t/**\n\t * The main parsing function.\n\t * @returns {?jsep.Expression}\n\t */\n\tgobbleExpression() {\n\t\tconst node = this.searchHook('gobble-expression') || this.gobbleBinaryExpression();\n\t\tthis.gobbleSpaces();\n\n\t\treturn this.runHook('after-expression', node);\n\t}\n\n\t/**\n\t * Search for the operation portion of the string (e.g. `+`, `===`)\n\t * Start by taking the longest possible binary operations (3 characters: `===`, `!==`, `>>>`)\n\t * and move down from 3 to 2 to 1 character until a matching binary operation is found\n\t * then, return that binary operation\n\t * @returns {string|boolean}\n\t */\n\tgobbleBinaryOp() {\n\t\tthis.gobbleSpaces();\n\t\tlet to_check = this.expr.substr(this.index, Jsep.max_binop_len);\n\t\tlet tc_len = to_check.length;\n\n\t\twhile (tc_len > 0) {\n\t\t\t// Don't accept a binary op when it is an identifier.\n\t\t\t// Binary ops that start with a identifier-valid character must be followed\n\t\t\t// by a non identifier-part valid character\n\t\t\tif (Jsep.binary_ops.hasOwnProperty(to_check) && (\n\t\t\t\t!Jsep.isIdentifierStart(this.code) ||\n\t\t\t\t(this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))\n\t\t\t)) {\n\t\t\t\tthis.index += tc_len;\n\t\t\t\treturn to_check;\n\t\t\t}\n\t\t\tto_check = to_check.substr(0, --tc_len);\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * This function is responsible for gobbling an individual expression,\n\t * e.g. `1`, `1+2`, `a+(b*2)-Math.sqrt(2)`\n\t * @returns {?jsep.BinaryExpression}\n\t */\n\tgobbleBinaryExpression() {\n\t\tlet node, biop, prec, stack, biop_info, left, right, i, cur_biop;\n\n\t\t// First, try to get the leftmost thing\n\t\t// Then, check to see if there's a binary operator operating on that leftmost thing\n\t\t// Don't gobbleBinaryOp without a left-hand-side\n\t\tleft = this.gobbleToken();\n\t\tif (!left) {\n\t\t\treturn left;\n\t\t}\n\t\tbiop = this.gobbleBinaryOp();\n\n\t\t// If there wasn't a binary operator, just return the leftmost node\n\t\tif (!biop) {\n\t\t\treturn left;\n\t\t}\n\n\t\t// Otherwise, we need to start a stack to properly place the binary operations in their\n\t\t// precedence structure\n\t\tbiop_info = { value: biop, prec: Jsep.binaryPrecedence(biop), right_a: Jsep.right_associative.has(biop) };\n\n\t\tright = this.gobbleToken();\n\n\t\tif (!right) {\n\t\t\tthis.throwError(\"Expected expression after \" + biop);\n\t\t}\n\n\t\tstack = [left, biop_info, right];\n\n\t\t// Properly deal with precedence using [recursive descent](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)\n\t\twhile ((biop = this.gobbleBinaryOp())) {\n\t\t\tprec = Jsep.binaryPrecedence(biop);\n\n\t\t\tif (prec === 0) {\n\t\t\t\tthis.index -= biop.length;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbiop_info = { value: biop, prec, right_a: Jsep.right_associative.has(biop) };\n\n\t\t\tcur_biop = biop;\n\n\t\t\t// Reduce: make a binary expression from the three topmost entries.\n\t\t\tconst comparePrev = prev => biop_info.right_a && prev.right_a\n\t\t\t\t? prec > prev.prec\n\t\t\t\t: prec <= prev.prec;\n\t\t\twhile ((stack.length > 2) && comparePrev(stack[stack.length - 2])) {\n\t\t\t\tright = stack.pop();\n\t\t\t\tbiop = stack.pop().value;\n\t\t\t\tleft = stack.pop();\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.BINARY_EXP,\n\t\t\t\t\toperator: biop,\n\t\t\t\t\tleft,\n\t\t\t\t\tright\n\t\t\t\t};\n\t\t\t\tstack.push(node);\n\t\t\t}\n\n\t\t\tnode = this.gobbleToken();\n\n\t\t\tif (!node) {\n\t\t\t\tthis.throwError(\"Expected expression after \" + cur_biop);\n\t\t\t}\n\n\t\t\tstack.push(biop_info, node);\n\t\t}\n\n\t\ti = stack.length - 1;\n\t\tnode = stack[i];\n\n\t\twhile (i > 1) {\n\t\t\tnode = {\n\t\t\t\ttype: Jsep.BINARY_EXP,\n\t\t\t\toperator: stack[i - 1].value,\n\t\t\t\tleft: stack[i - 2],\n\t\t\t\tright: node\n\t\t\t};\n\t\t\ti -= 2;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * An individual part of a binary expression:\n\t * e.g. `foo.bar(baz)`, `1`, `\"abc\"`, `(a % 2)` (because it's in parenthesis)\n\t * @returns {boolean|jsep.Expression}\n\t */\n\tgobbleToken() {\n\t\tlet ch, to_check, tc_len, node;\n\n\t\tthis.gobbleSpaces();\n\t\tnode = this.searchHook('gobble-token');\n\t\tif (node) {\n\t\t\treturn this.runHook('after-token', node);\n\t\t}\n\n\t\tch = this.code;\n\n\t\tif (Jsep.isDecimalDigit(ch) || ch === Jsep.PERIOD_CODE) {\n\t\t\t// Char code 46 is a dot `.` which can start off a numeric literal\n\t\t\treturn this.gobbleNumericLiteral();\n\t\t}\n\n\t\tif (ch === Jsep.SQUOTE_CODE || ch === Jsep.DQUOTE_CODE) {\n\t\t\t// Single or double quotes\n\t\t\tnode = this.gobbleStringLiteral();\n\t\t}\n\t\telse if (ch === Jsep.OBRACK_CODE) {\n\t\t\tnode = this.gobbleArray();\n\t\t}\n\t\telse {\n\t\t\tto_check = this.expr.substr(this.index, Jsep.max_unop_len);\n\t\t\ttc_len = to_check.length;\n\n\t\t\twhile (tc_len > 0) {\n\t\t\t\t// Don't accept an unary op when it is an identifier.\n\t\t\t\t// Unary ops that start with a identifier-valid character must be followed\n\t\t\t\t// by a non identifier-part valid character\n\t\t\t\tif (Jsep.unary_ops.hasOwnProperty(to_check) && (\n\t\t\t\t\t!Jsep.isIdentifierStart(this.code) ||\n\t\t\t\t\t(this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))\n\t\t\t\t)) {\n\t\t\t\t\tthis.index += tc_len;\n\t\t\t\t\tconst argument = this.gobbleToken();\n\t\t\t\t\tif (!argument) {\n\t\t\t\t\t\tthis.throwError('missing unaryOp argument');\n\t\t\t\t\t}\n\t\t\t\t\treturn this.runHook('after-token', {\n\t\t\t\t\t\ttype: Jsep.UNARY_EXP,\n\t\t\t\t\t\toperator: to_check,\n\t\t\t\t\t\targument,\n\t\t\t\t\t\tprefix: true\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tto_check = to_check.substr(0, --tc_len);\n\t\t\t}\n\n\t\t\tif (Jsep.isIdentifierStart(ch)) {\n\t\t\t\tnode = this.gobbleIdentifier();\n\t\t\t\tif (Jsep.literals.hasOwnProperty(node.name)) {\n\t\t\t\t\tnode = {\n\t\t\t\t\t\ttype: Jsep.LITERAL,\n\t\t\t\t\t\tvalue: Jsep.literals[node.name],\n\t\t\t\t\t\traw: node.name,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse if (node.name === Jsep.this_str) {\n\t\t\t\t\tnode = { type: Jsep.THIS_EXP };\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (ch === Jsep.OPAREN_CODE) { // open parenthesis\n\t\t\t\tnode = this.gobbleGroup();\n\t\t\t}\n\t\t}\n\n\t\tif (!node) {\n\t\t\treturn this.runHook('after-token', false);\n\t\t}\n\n\t\tnode = this.gobbleTokenProperty(node);\n\t\treturn this.runHook('after-token', node);\n\t}\n\n\t/**\n\t * Gobble properties of of identifiers/strings/arrays/groups.\n\t * e.g. `foo`, `bar.baz`, `foo['bar'].baz`\n\t * It also gobbles function calls:\n\t * e.g. `Math.acos(obj.angle)`\n\t * @param {jsep.Expression} node\n\t * @returns {jsep.Expression}\n\t */\n\tgobbleTokenProperty(node) {\n\t\tthis.gobbleSpaces();\n\n\t\tlet ch = this.code;\n\t\twhile (ch === Jsep.PERIOD_CODE || ch === Jsep.OBRACK_CODE || ch === Jsep.OPAREN_CODE || ch === Jsep.QUMARK_CODE) {\n\t\t\tlet optional;\n\t\t\tif (ch === Jsep.QUMARK_CODE) {\n\t\t\t\tif (this.expr.charCodeAt(this.index + 1) !== Jsep.PERIOD_CODE) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toptional = true;\n\t\t\t\tthis.index += 2;\n\t\t\t\tthis.gobbleSpaces();\n\t\t\t\tch = this.code;\n\t\t\t}\n\t\t\tthis.index++;\n\n\t\t\tif (ch === Jsep.OBRACK_CODE) {\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.MEMBER_EXP,\n\t\t\t\t\tcomputed: true,\n\t\t\t\t\tobject: node,\n\t\t\t\t\tproperty: this.gobbleExpression()\n\t\t\t\t};\n\t\t\t\tif (!node.property) {\n\t\t\t\t\tthis.throwError('Unexpected \"' + this.char + '\"');\n\t\t\t\t}\n\t\t\t\tthis.gobbleSpaces();\n\t\t\t\tch = this.code;\n\t\t\t\tif (ch !== Jsep.CBRACK_CODE) {\n\t\t\t\t\tthis.throwError('Unclosed [');\n\t\t\t\t}\n\t\t\t\tthis.index++;\n\t\t\t}\n\t\t\telse if (ch === Jsep.OPAREN_CODE) {\n\t\t\t\t// A function call is being made; gobble all the arguments\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.CALL_EXP,\n\t\t\t\t\t'arguments': this.gobbleArguments(Jsep.CPAREN_CODE),\n\t\t\t\t\tcallee: node\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if (ch === Jsep.PERIOD_CODE || optional) {\n\t\t\t\tif (optional) {\n\t\t\t\t\tthis.index--;\n\t\t\t\t}\n\t\t\t\tthis.gobbleSpaces();\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.MEMBER_EXP,\n\t\t\t\t\tcomputed: false,\n\t\t\t\t\tobject: node,\n\t\t\t\t\tproperty: this.gobbleIdentifier(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (optional) {\n\t\t\t\tnode.optional = true;\n\t\t\t} // else leave undefined for compatibility with esprima\n\n\t\t\tthis.gobbleSpaces();\n\t\t\tch = this.code;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Parse simple numeric literals: `12`, `3.4`, `.5`. Do this by using a string to\n\t * keep track of everything in the numeric literal and then calling `parseFloat` on that string\n\t * @returns {jsep.Literal}\n\t */\n\tgobbleNumericLiteral() {\n\t\tlet number = '', ch, chCode;\n\n\t\twhile (Jsep.isDecimalDigit(this.code)) {\n\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t}\n\n\t\tif (this.code === Jsep.PERIOD_CODE) { // can start with a decimal marker\n\t\t\tnumber += this.expr.charAt(this.index++);\n\n\t\t\twhile (Jsep.isDecimalDigit(this.code)) {\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\t\t}\n\n\t\tch = this.char;\n\n\t\tif (ch === 'e' || ch === 'E') { // exponent marker\n\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\tch = this.char;\n\n\t\t\tif (ch === '+' || ch === '-') { // exponent sign\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\n\t\t\twhile (Jsep.isDecimalDigit(this.code)) { // exponent itself\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\n\t\t\tif (!Jsep.isDecimalDigit(this.expr.charCodeAt(this.index - 1)) ) {\n\t\t\t\tthis.throwError('Expected exponent (' + number + this.char + ')');\n\t\t\t}\n\t\t}\n\n\t\tchCode = this.code;\n\n\t\t// Check to make sure this isn't a variable name that start with a number (123abc)\n\t\tif (Jsep.isIdentifierStart(chCode)) {\n\t\t\tthis.throwError('Variable names cannot start with a number (' +\n\t\t\t\tnumber + this.char + ')');\n\t\t}\n\t\telse if (chCode === Jsep.PERIOD_CODE || (number.length === 1 && number.charCodeAt(0) === Jsep.PERIOD_CODE)) {\n\t\t\tthis.throwError('Unexpected period');\n\t\t}\n\n\t\treturn {\n\t\t\ttype: Jsep.LITERAL,\n\t\t\tvalue: parseFloat(number),\n\t\t\traw: number\n\t\t};\n\t}\n\n\t/**\n\t * Parses a string literal, staring with single or double quotes with basic support for escape codes\n\t * e.g. `\"hello world\"`, `'this is\\nJSEP'`\n\t * @returns {jsep.Literal}\n\t */\n\tgobbleStringLiteral() {\n\t\tlet str = '';\n\t\tconst startIndex = this.index;\n\t\tconst quote = this.expr.charAt(this.index++);\n\t\tlet closed = false;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tlet ch = this.expr.charAt(this.index++);\n\n\t\t\tif (ch === quote) {\n\t\t\t\tclosed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (ch === '\\\\') {\n\t\t\t\t// Check for all of the common escape codes\n\t\t\t\tch = this.expr.charAt(this.index++);\n\n\t\t\t\tswitch (ch) {\n\t\t\t\t\tcase 'n': str += '\\n'; break;\n\t\t\t\t\tcase 'r': str += '\\r'; break;\n\t\t\t\t\tcase 't': str += '\\t'; break;\n\t\t\t\t\tcase 'b': str += '\\b'; break;\n\t\t\t\t\tcase 'f': str += '\\f'; break;\n\t\t\t\t\tcase 'v': str += '\\x0B'; break;\n\t\t\t\t\tdefault : str += ch;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstr += ch;\n\t\t\t}\n\t\t}\n\n\t\tif (!closed) {\n\t\t\tthis.throwError('Unclosed quote after \"' + str + '\"');\n\t\t}\n\n\t\treturn {\n\t\t\ttype: Jsep.LITERAL,\n\t\t\tvalue: str,\n\t\t\traw: this.expr.substring(startIndex, this.index),\n\t\t};\n\t}\n\n\t/**\n\t * Gobbles only identifiers\n\t * e.g.: `foo`, `_value`, `$x1`\n\t * Also, this function checks if that identifier is a literal:\n\t * (e.g. `true`, `false`, `null`) or `this`\n\t * @returns {jsep.Identifier}\n\t */\n\tgobbleIdentifier() {\n\t\tlet ch = this.code, start = this.index;\n\n\t\tif (Jsep.isIdentifierStart(ch)) {\n\t\t\tthis.index++;\n\t\t}\n\t\telse {\n\t\t\tthis.throwError('Unexpected ' + this.char);\n\t\t}\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tch = this.code;\n\n\t\t\tif (Jsep.isIdentifierPart(ch)) {\n\t\t\t\tthis.index++;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\ttype: Jsep.IDENTIFIER,\n\t\t\tname: this.expr.slice(start, this.index),\n\t\t};\n\t}\n\n\t/**\n\t * Gobbles a list of arguments within the context of a function call\n\t * or array literal. This function also assumes that the opening character\n\t * `(` or `[` has already been gobbled, and gobbles expressions and commas\n\t * until the terminator character `)` or `]` is encountered.\n\t * e.g. `foo(bar, baz)`, `my_func()`, or `[bar, baz]`\n\t * @param {number} termination\n\t * @returns {jsep.Expression[]}\n\t */\n\tgobbleArguments(termination) {\n\t\tconst args = [];\n\t\tlet closed = false;\n\t\tlet separator_count = 0;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tthis.gobbleSpaces();\n\t\t\tlet ch_i = this.code;\n\n\t\t\tif (ch_i === termination) { // done parsing\n\t\t\t\tclosed = true;\n\t\t\t\tthis.index++;\n\n\t\t\t\tif (termination === Jsep.CPAREN_CODE && separator_count && separator_count >= args.length){\n\t\t\t\t\tthis.throwError('Unexpected token ' + String.fromCharCode(termination));\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (ch_i === Jsep.COMMA_CODE) { // between expressions\n\t\t\t\tthis.index++;\n\t\t\t\tseparator_count++;\n\n\t\t\t\tif (separator_count !== args.length) { // missing argument\n\t\t\t\t\tif (termination === Jsep.CPAREN_CODE) {\n\t\t\t\t\t\tthis.throwError('Unexpected token ,');\n\t\t\t\t\t}\n\t\t\t\t\telse if (termination === Jsep.CBRACK_CODE) {\n\t\t\t\t\t\tfor (let arg = args.length; arg < separator_count; arg++) {\n\t\t\t\t\t\t\targs.push(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (args.length !== separator_count && separator_count !== 0) {\n\t\t\t\t// NOTE: `&& separator_count !== 0` allows for either all commas, or all spaces as arguments\n\t\t\t\tthis.throwError('Expected comma');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst node = this.gobbleExpression();\n\n\t\t\t\tif (!node || node.type === Jsep.COMPOUND) {\n\t\t\t\t\tthis.throwError('Expected comma');\n\t\t\t\t}\n\n\t\t\t\targs.push(node);\n\t\t\t}\n\t\t}\n\n\t\tif (!closed) {\n\t\t\tthis.throwError('Expected ' + String.fromCharCode(termination));\n\t\t}\n\n\t\treturn args;\n\t}\n\n\t/**\n\t * Responsible for parsing a group of things within parentheses `()`\n\t * that have no identifier in front (so not a function call)\n\t * This function assumes that it needs to gobble the opening parenthesis\n\t * and then tries to gobble everything within that parenthesis, assuming\n\t * that the next thing it should see is the close parenthesis. If not,\n\t * then the expression probably doesn't have a `)`\n\t * @returns {boolean|jsep.Expression}\n\t */\n\tgobbleGroup() {\n\t\tthis.index++;\n\t\tlet nodes = this.gobbleExpressions(Jsep.CPAREN_CODE);\n\t\tif (this.code === Jsep.CPAREN_CODE) {\n\t\t\tthis.index++;\n\t\t\tif (nodes.length === 1) {\n\t\t\t\treturn nodes[0];\n\t\t\t}\n\t\t\telse if (!nodes.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn {\n\t\t\t\t\ttype: Jsep.SEQUENCE_EXP,\n\t\t\t\t\texpressions: nodes,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthis.throwError('Unclosed (');\n\t\t}\n\t}\n\n\t/**\n\t * Responsible for parsing Array literals `[1, 2, 3]`\n\t * This function assumes that it needs to gobble the opening bracket\n\t * and then tries to gobble the expressions as arguments.\n\t * @returns {jsep.ArrayExpression}\n\t */\n\tgobbleArray() {\n\t\tthis.index++;\n\n\t\treturn {\n\t\t\ttype: Jsep.ARRAY_EXP,\n\t\t\telements: this.gobbleArguments(Jsep.CBRACK_CODE)\n\t\t};\n\t}\n}\n\n// Static fields:\nconst hooks = new Hooks();\nObject.assign(Jsep, {\n\thooks,\n\tplugins: new Plugins(Jsep),\n\n\t// Node Types\n\t// ----------\n\t// This is the full set of types that any JSEP node can be.\n\t// Store them here to save space when minified\n\tCOMPOUND: 'Compound',\n\tSEQUENCE_EXP: 'SequenceExpression',\n\tIDENTIFIER: 'Identifier',\n\tMEMBER_EXP: 'MemberExpression',\n\tLITERAL: 'Literal',\n\tTHIS_EXP: 'ThisExpression',\n\tCALL_EXP: 'CallExpression',\n\tUNARY_EXP: 'UnaryExpression',\n\tBINARY_EXP: 'BinaryExpression',\n\tARRAY_EXP: 'ArrayExpression',\n\n\tTAB_CODE: 9,\n\tLF_CODE: 10,\n\tCR_CODE: 13,\n\tSPACE_CODE: 32,\n\tPERIOD_CODE: 46, // '.'\n\tCOMMA_CODE: 44, // ','\n\tSQUOTE_CODE: 39, // single quote\n\tDQUOTE_CODE: 34, // double quotes\n\tOPAREN_CODE: 40, // (\n\tCPAREN_CODE: 41, // )\n\tOBRACK_CODE: 91, // [\n\tCBRACK_CODE: 93, // ]\n\tQUMARK_CODE: 63, // ?\n\tSEMCOL_CODE: 59, // ;\n\tCOLON_CODE: 58, // :\n\n\n\t// Operations\n\t// ----------\n\t// Use a quickly-accessible map to store all of the unary operators\n\t// Values are set to `1` (it really doesn't matter)\n\tunary_ops: {\n\t\t'-': 1,\n\t\t'!': 1,\n\t\t'~': 1,\n\t\t'+': 1\n\t},\n\n\t// Also use a map for the binary operations but set their values to their\n\t// binary precedence for quick reference (higher number = higher precedence)\n\t// see [Order of operations](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)\n\tbinary_ops: {\n\t\t'||': 1, '??': 1,\n\t\t'&&': 2, '|': 3, '^': 4, '&': 5,\n\t\t'==': 6, '!=': 6, '===': 6, '!==': 6,\n\t\t'<': 7, '>': 7, '<=': 7, '>=': 7,\n\t\t'<<': 8, '>>': 8, '>>>': 8,\n\t\t'+': 9, '-': 9,\n\t\t'*': 10, '/': 10, '%': 10,\n\t\t'**': 11,\n\t},\n\n\t// sets specific binary_ops as right-associative\n\tright_associative: new Set(['**']),\n\n\t// Additional valid identifier chars, apart from a-z, A-Z and 0-9 (except on the starting char)\n\tadditional_identifier_chars: new Set(['$', '_']),\n\n\t// Literals\n\t// ----------\n\t// Store the values to return for the various literals we may encounter\n\tliterals: {\n\t\t'true': true,\n\t\t'false': false,\n\t\t'null': null\n\t},\n\n\t// Except for `this`, which is special. This could be changed to something like `'self'` as well\n\tthis_str: 'this',\n});\nJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\nJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\n// Backward Compatibility:\nconst jsep = expr => (new Jsep(expr)).parse();\nconst stdClassProps = Object.getOwnPropertyNames(class Test{});\nObject.getOwnPropertyNames(Jsep)\n\t.filter(prop => !stdClassProps.includes(prop) && jsep[prop] === undefined)\n\t.forEach((m) => {\n\t\tjsep[m] = Jsep[m];\n\t});\njsep.Jsep = Jsep; // allows for const { Jsep } = require('jsep');\n\nconst CONDITIONAL_EXP = 'ConditionalExpression';\n\nvar ternary = {\n\tname: 'ternary',\n\n\tinit(jsep) {\n\t\t// Ternary expression: test ? consequent : alternate\n\t\tjsep.hooks.add('after-expression', function gobbleTernary(env) {\n\t\t\tif (env.node && this.code === jsep.QUMARK_CODE) {\n\t\t\t\tthis.index++;\n\t\t\t\tconst test = env.node;\n\t\t\t\tconst consequent = this.gobbleExpression();\n\n\t\t\t\tif (!consequent) {\n\t\t\t\t\tthis.throwError('Expected expression');\n\t\t\t\t}\n\n\t\t\t\tthis.gobbleSpaces();\n\n\t\t\t\tif (this.code === jsep.COLON_CODE) {\n\t\t\t\t\tthis.index++;\n\t\t\t\t\tconst alternate = this.gobbleExpression();\n\n\t\t\t\t\tif (!alternate) {\n\t\t\t\t\t\tthis.throwError('Expected expression');\n\t\t\t\t\t}\n\t\t\t\t\tenv.node = {\n\t\t\t\t\t\ttype: CONDITIONAL_EXP,\n\t\t\t\t\t\ttest,\n\t\t\t\t\t\tconsequent,\n\t\t\t\t\t\talternate,\n\t\t\t\t\t};\n\n\t\t\t\t\t// check for operators of higher priority than ternary (i.e. assignment)\n\t\t\t\t\t// jsep sets || at 1, and assignment at 0.9, and conditional should be between them\n\t\t\t\t\tif (test.operator && jsep.binary_ops[test.operator] <= 0.9) {\n\t\t\t\t\t\tlet newTest = test;\n\t\t\t\t\t\twhile (newTest.right.operator && jsep.binary_ops[newTest.right.operator] <= 0.9) {\n\t\t\t\t\t\t\tnewTest = newTest.right;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tenv.node.test = newTest.right;\n\t\t\t\t\t\tnewTest.right = env.node;\n\t\t\t\t\t\tenv.node = test;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.throwError('Expected :');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n};\n\n// Add default plugins:\n\njsep.plugins.register(ternary);\n\nexport { Jsep, jsep as default };\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __commonJS = (cb, mod2) => function __require() {\n return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__getProtoOf(mod2)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod2 || !mod2.__esModule ? __defProp(target, \"default\", { value: mod2, enumerable: true }) : target,\n mod2\n));\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// node_modules/thenby/thenBy.module.js\nvar require_thenBy_module = __commonJS({\n \"node_modules/thenby/thenBy.module.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n function identity3(v2) {\n return v2;\n }\n function ignoreCase(v2) {\n return typeof v2 === \"string\" ? v2.toLowerCase() : v2;\n }\n function makeCompareFunction(f, opt) {\n opt = typeof opt === \"object\" ? opt : { direction: opt };\n if (typeof f != \"function\") {\n var prop = f;\n f = function(v1) {\n return !!v1[prop] ? v1[prop] : \"\";\n };\n }\n if (f.length === 1) {\n var uf = f;\n var preprocess = opt.ignoreCase ? ignoreCase : identity3;\n var cmp = opt.cmp || function(v1, v2) {\n return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;\n };\n f = function(v1, v2) {\n return cmp(preprocess(uf(v1)), preprocess(uf(v2)));\n };\n }\n const descTokens = { \"-1\": \"\", desc: \"\" };\n if (opt.direction in descTokens) return function(v1, v2) {\n return -f(v1, v2);\n };\n return f;\n }\n function tb(func, opt) {\n var x = typeof this == \"function\" && !this.firstBy ? this : false;\n var y = makeCompareFunction(func, opt);\n var f = x ? function(a, b) {\n return x(a, b) || y(a, b);\n } : y;\n f.thenBy = tb;\n return f;\n }\n tb.firstBy = tb;\n return tb;\n }();\n }\n});\n\n// src/client.ts\nvar client = \"deck-gl-carto\";\nfunction getClient() {\n return client;\n}\nfunction setClient(c) {\n client = c;\n}\n\n// src/constants.ts\nvar FilterType = /* @__PURE__ */ ((FilterType2) => {\n FilterType2[\"IN\"] = \"in\";\n FilterType2[\"BETWEEN\"] = \"between\";\n FilterType2[\"CLOSED_OPEN\"] = \"closed_open\";\n FilterType2[\"TIME\"] = \"time\";\n FilterType2[\"STRING_SEARCH\"] = \"stringSearch\";\n return FilterType2;\n})(FilterType || {});\nvar ApiVersion = /* @__PURE__ */ ((ApiVersion2) => {\n ApiVersion2[\"V1\"] = \"v1\";\n ApiVersion2[\"V2\"] = \"v2\";\n ApiVersion2[\"V3\"] = \"v3\";\n return ApiVersion2;\n})(ApiVersion || {});\nvar DEFAULT_API_BASE_URL = \"https://gcp-us-east1.api.carto.com\";\nvar TileFormat = /* @__PURE__ */ ((TileFormat2) => {\n TileFormat2[\"MVT\"] = \"mvt\";\n TileFormat2[\"JSON\"] = \"json\";\n TileFormat2[\"GEOJSON\"] = \"geojson\";\n TileFormat2[\"BINARY\"] = \"binary\";\n return TileFormat2;\n})(TileFormat || {});\nvar SpatialIndex = /* @__PURE__ */ ((SpatialIndex2) => {\n SpatialIndex2[\"H3\"] = \"h3\";\n SpatialIndex2[\"QUADBIN\"] = \"quadbin\";\n return SpatialIndex2;\n})(SpatialIndex || {});\nvar Provider = /* @__PURE__ */ ((Provider2) => {\n Provider2[\"BIGQUERY\"] = \"bigquery\";\n Provider2[\"REDSHIFT\"] = \"redshift\";\n Provider2[\"POSTGRES\"] = \"postgres\";\n Provider2[\"SNOWFLAKE\"] = \"snowflake\";\n Provider2[\"DATABRICKS\"] = \"databricks\";\n Provider2[\"DATABRICKS_REST\"] = \"databricksRest\";\n return Provider2;\n})(Provider || {});\nvar SpatialIndexColumn = Object.freeze({\n [\"h3\" /* H3 */]: [\"h3\", \"hex\", \"h3id\", \"hex_id\", \"h3hex\"],\n [\"quadbin\" /* QUADBIN */]: [\"quadbin\"]\n});\nvar AggregationTypes = {\n Count: \"count\",\n Avg: \"avg\",\n Min: \"min\",\n Max: \"max\",\n Sum: \"sum\",\n Custom: \"custom\"\n};\n\n// src/utils/makeIntervalComplete.ts\nfunction makeIntervalComplete(intervals) {\n return intervals.map((val) => {\n if (val[0] === void 0 || val[0] === null) {\n return [Number.MIN_SAFE_INTEGER, val[1]];\n }\n if (val[1] === void 0 || val[1] === null) {\n return [val[0], Number.MAX_SAFE_INTEGER];\n }\n return val;\n });\n}\n\n// src/filters/FilterTypes.ts\nvar filterFunctions = {\n [\"in\" /* IN */]: filterIn,\n [\"between\" /* BETWEEN */]: filterBetween,\n [\"time\" /* TIME */]: filterTime,\n [\"closed_open\" /* CLOSED_OPEN */]: filterClosedOpen,\n [\"stringSearch\" /* STRING_SEARCH */]: filterStringSearch\n};\nfunction filterIn(filterValues, featureValue) {\n return filterValues.includes(featureValue);\n}\nfunction filterBetween(filterValues, featureValue) {\n const checkRange = (range) => {\n const [lowerBound, upperBound] = range;\n return featureValue >= lowerBound && featureValue <= upperBound;\n };\n return makeIntervalComplete(filterValues).some(\n checkRange\n );\n}\nfunction filterTime(filterValues, featureValue) {\n const featureValueAsTimestamp = new Date(featureValue).getTime();\n if (isFinite(featureValueAsTimestamp)) {\n return filterBetween(filterValues, featureValueAsTimestamp);\n } else {\n throw new Error(`Column used to filter by time isn't well formatted.`);\n }\n}\nfunction filterClosedOpen(filterValues, featureValue) {\n const checkRange = (range) => {\n const [lowerBound, upperBound] = range;\n return featureValue >= lowerBound && featureValue < upperBound;\n };\n return makeIntervalComplete(filterValues).some(\n checkRange\n );\n}\nfunction filterStringSearch(filterValues, featureValue, params = {}) {\n const normalizedFeatureValue = normalize(featureValue, params);\n const stringRegExp = params.useRegExp ? filterValues : filterValues.map((filterValue) => {\n let stringRegExp2 = escapeRegExp(normalize(filterValue, params));\n if (params.mustStart) stringRegExp2 = `^${stringRegExp2}`;\n if (params.mustEnd) stringRegExp2 = `${stringRegExp2}$`;\n return stringRegExp2;\n });\n const regex = new RegExp(\n stringRegExp.join(\"|\"),\n params.caseSensitive ? \"g\" : \"gi\"\n );\n return !!normalizedFeatureValue.match(regex);\n}\nvar specialCharRegExp = /[.*+?^${}()|[\\]\\\\]/g;\nvar normalizeRegExp = /\\p{Diacritic}/gu;\nfunction escapeRegExp(value) {\n return value.replace(specialCharRegExp, \"\\\\$&\");\n}\nfunction normalize(data, params) {\n let normalizedData = String(data);\n if (!params.keepSpecialCharacters)\n normalizedData = normalizedData.normalize(\"NFD\").replace(normalizeRegExp, \"\");\n return normalizedData;\n}\n\n// src/filters/Filter.ts\nvar LOGICAL_OPERATOR_METHODS = {\n and: \"every\",\n or: \"some\"\n};\nfunction passesFilter(columns, filters, feature2, filtersLogicalOperator) {\n const method = LOGICAL_OPERATOR_METHODS[filtersLogicalOperator];\n return columns[method]((column) => {\n const columnFilters = filters[column];\n const columnFilterTypes = Object.keys(columnFilters);\n if (!feature2 || feature2[column] === null || feature2[column] === void 0) {\n return false;\n }\n return columnFilterTypes.every((filter) => {\n const filterFunction = filterFunctions[filter];\n if (!filterFunction) {\n throw new Error(`\"${filter}\" filter is not implemented.`);\n }\n return filterFunction(\n columnFilters[filter].values,\n feature2[column],\n columnFilters[filter].params\n );\n });\n });\n}\nfunction _buildFeatureFilter({\n filters = {},\n type = \"boolean\",\n filtersLogicalOperator = \"and\"\n}) {\n const columns = Object.keys(filters);\n if (!columns.length) {\n return () => type === \"number\" ? 1 : true;\n }\n return (feature2) => {\n const f = feature2.properties || feature2;\n const featurePassesFilter = passesFilter(\n columns,\n filters,\n f,\n filtersLogicalOperator\n );\n return type === \"number\" ? Number(featurePassesFilter) : featurePassesFilter;\n };\n}\nfunction applyFilters(features, filters, filtersLogicalOperator) {\n return Object.keys(filters).length ? features.filter(_buildFeatureFilter({ filters, filtersLogicalOperator })) : features;\n}\nfunction buildBinaryFeatureFilter({ filters = {} }) {\n const columns = Object.keys(filters);\n if (!columns.length) {\n return () => 1;\n }\n return (featureIdIdx, binaryData) => passesFilterUsingBinary(columns, filters, featureIdIdx, binaryData);\n}\nfunction getValueFromNumericProps(featureIdIdx, binaryData, { column }) {\n return binaryData.numericProps?.[column]?.value[featureIdIdx];\n}\nfunction getValueFromProperties(featureIdIdx, binaryData, { column }) {\n const propertyIdx = binaryData.featureIds.value[featureIdIdx];\n return binaryData.properties[propertyIdx]?.[column];\n}\nvar GET_VALUE_BY_BINARY_PROP = {\n properties: getValueFromProperties,\n numericProps: getValueFromNumericProps\n};\nfunction getBinaryPropertyByFilterValues(filterValues) {\n return typeof filterValues.flat()[0] === \"string\" ? \"properties\" : \"numericProps\";\n}\nfunction getFeatureValue(featureIdIdx, binaryData, filter) {\n const { column, values } = filter;\n const binaryProp = getBinaryPropertyByFilterValues(values);\n const getFeatureValueFn = GET_VALUE_BY_BINARY_PROP[binaryProp];\n return getFeatureValueFn(featureIdIdx, binaryData, { column });\n}\nfunction passesFilterUsingBinary(columns, filters, featureIdIdx, binaryData) {\n return columns.every((column) => {\n const columnFilters = filters[column];\n return Object.entries(columnFilters).every(([type, { values }]) => {\n const filterFn = filterFunctions[type];\n if (!filterFn) {\n throw new Error(`\"${type}\" filter is not implemented.`);\n }\n if (!values) return 0;\n const featureValue = getFeatureValue(featureIdIdx, binaryData, {\n type,\n column,\n values\n });\n if (featureValue === void 0 || featureValue === null) return 0;\n return filterFn(values, featureValue);\n });\n });\n}\n\n// node_modules/robust-predicates/esm/util.js\nvar epsilon = 11102230246251565e-32;\nvar splitter = 134217729;\nvar resulterrbound = (3 + 8 * epsilon) * epsilon;\nfunction sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if (fnow > enow === fnow > -enow) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if (fnow > enow === fnow > -enow) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if (fnow > enow === fnow > -enow) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\nfunction estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\nfunction vec(n) {\n return new Float64Array(n);\n}\n\n// node_modules/robust-predicates/esm/orient2d.js\nvar ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nvar ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nvar ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\nvar B = vec(4);\nvar C1 = vec(8);\nvar C2 = vec(12);\nvar D = vec(16);\nvar u = vec(4);\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u32;\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u32 = _j + _i;\n bvirt = u32 - _j;\n B[2] = _j - (u32 - bvirt) + (_i - bvirt);\n B[3] = u32;\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u32 = _j + _i;\n bvirt = u32 - _j;\n u[2] = _j - (u32 - bvirt) + (_i - bvirt);\n u[3] = u32;\n const C1len = sum(4, B, 4, u, C1);\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u32 = _j + _i;\n bvirt = u32 - _j;\n u[2] = _j - (u32 - bvirt) + (_i - bvirt);\n u[3] = u32;\n const C2len = sum(C1len, C1, 4, u, C2);\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u32 = _j + _i;\n bvirt = u32 - _j;\n u[2] = _j - (u32 - bvirt) + (_i - bvirt);\n u[3] = u32;\n const Dlen = sum(C2len, C2, 4, u, D);\n return D[Dlen - 1];\n}\nfunction orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\n// node_modules/robust-predicates/esm/orient3d.js\nvar o3derrboundA = (7 + 56 * epsilon) * epsilon;\nvar o3derrboundB = (3 + 28 * epsilon) * epsilon;\nvar o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\nvar bc = vec(4);\nvar ca = vec(4);\nvar ab = vec(4);\nvar at_b = vec(4);\nvar at_c = vec(4);\nvar bt_c = vec(4);\nvar bt_a = vec(4);\nvar ct_a = vec(4);\nvar ct_b = vec(4);\nvar bct = vec(8);\nvar cat = vec(8);\nvar abt = vec(8);\nvar u2 = vec(4);\nvar _8 = vec(8);\nvar _8b = vec(8);\nvar _16 = vec(8);\nvar _12 = vec(12);\nvar fin = vec(192);\nvar fin2 = vec(192);\n\n// node_modules/robust-predicates/esm/incircle.js\nvar iccerrboundA = (10 + 96 * epsilon) * epsilon;\nvar iccerrboundB = (4 + 48 * epsilon) * epsilon;\nvar iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\nvar bc2 = vec(4);\nvar ca2 = vec(4);\nvar ab2 = vec(4);\nvar aa = vec(4);\nvar bb = vec(4);\nvar cc = vec(4);\nvar u3 = vec(4);\nvar v = vec(4);\nvar axtbc = vec(8);\nvar aytbc = vec(8);\nvar bxtca = vec(8);\nvar bytca = vec(8);\nvar cxtab = vec(8);\nvar cytab = vec(8);\nvar abt2 = vec(8);\nvar bct2 = vec(8);\nvar cat2 = vec(8);\nvar abtt = vec(4);\nvar bctt = vec(4);\nvar catt = vec(4);\nvar _82 = vec(8);\nvar _162 = vec(16);\nvar _16b = vec(16);\nvar _16c = vec(16);\nvar _32 = vec(32);\nvar _32b = vec(32);\nvar _48 = vec(48);\nvar _64 = vec(64);\nvar fin3 = vec(1152);\nvar fin22 = vec(1152);\n\n// node_modules/robust-predicates/esm/insphere.js\nvar isperrboundA = (16 + 224 * epsilon) * epsilon;\nvar isperrboundB = (5 + 72 * epsilon) * epsilon;\nvar isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\nvar ab3 = vec(4);\nvar bc3 = vec(4);\nvar cd = vec(4);\nvar de = vec(4);\nvar ea = vec(4);\nvar ac = vec(4);\nvar bd = vec(4);\nvar ce = vec(4);\nvar da = vec(4);\nvar eb = vec(4);\nvar abc = vec(24);\nvar bcd = vec(24);\nvar cde = vec(24);\nvar dea = vec(24);\nvar eab = vec(24);\nvar abd = vec(24);\nvar bce = vec(24);\nvar cda = vec(24);\nvar deb = vec(24);\nvar eac = vec(24);\nvar adet = vec(1152);\nvar bdet = vec(1152);\nvar cdet = vec(1152);\nvar ddet = vec(1152);\nvar edet = vec(1152);\nvar abdet = vec(2304);\nvar cddet = vec(2304);\nvar cdedet = vec(3456);\nvar deter = vec(5760);\nvar _83 = vec(8);\nvar _8b2 = vec(8);\nvar _8c = vec(8);\nvar _163 = vec(16);\nvar _24 = vec(24);\nvar _482 = vec(48);\nvar _48b = vec(48);\nvar _96 = vec(96);\nvar _192 = vec(192);\nvar _384x = vec(384);\nvar _384y = vec(384);\nvar _384z = vec(384);\nvar _768 = vec(768);\nvar xdet = vec(96);\nvar ydet = vec(96);\nvar zdet = vec(96);\nvar fin4 = vec(1152);\n\n// node_modules/point-in-polygon-hao/dist/esm/index.js\nfunction pointInPolygon(p, polygon2) {\n var i;\n var ii;\n var k = 0;\n var f;\n var u1;\n var v1;\n var u22;\n var v2;\n var currentP;\n var nextP;\n var x = p[0];\n var y = p[1];\n var numContours = polygon2.length;\n for (i = 0; i < numContours; i++) {\n ii = 0;\n var contour = polygon2[i];\n var contourLen = contour.length - 1;\n currentP = contour[0];\n if (currentP[0] !== contour[contourLen][0] && currentP[1] !== contour[contourLen][1]) {\n throw new Error(\"First and last coordinates in a ring must be the same\");\n }\n u1 = currentP[0] - x;\n v1 = currentP[1] - y;\n for (ii; ii < contourLen; ii++) {\n nextP = contour[ii + 1];\n u22 = nextP[0] - x;\n v2 = nextP[1] - y;\n if (v1 === 0 && v2 === 0) {\n if (u22 <= 0 && u1 >= 0 || u1 <= 0 && u22 >= 0) {\n return 0;\n }\n } else if (v2 >= 0 && v1 <= 0 || v2 <= 0 && v1 >= 0) {\n f = orient2d(u1, u22, v1, v2, 0, 0);\n if (f === 0) {\n return 0;\n }\n if (f > 0 && v2 > 0 && v1 <= 0 || f < 0 && v2 <= 0 && v1 > 0) {\n k++;\n }\n }\n currentP = nextP;\n v1 = v2;\n u1 = u22;\n }\n }\n if (k % 2 === 0) {\n return false;\n }\n return true;\n}\n\n// node_modules/@turf/helpers/dist/esm/index.js\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n// node_modules/@turf/invariant/dist/esm/index.js\nfunction getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\n return [...coord.geometry.coordinates];\n }\n if (coord.type === \"Point\") {\n return [...coord.coordinates];\n }\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\n return [...coord];\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n } else {\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\n \"coords must be GeoJSON Feature, Geometry Object or an Array\"\n );\n}\nfunction getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\nfunction getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\n\n// node_modules/@turf/boolean-point-in-polygon/dist/esm/index.js\nfunction booleanPointInPolygon(point2, polygon2, options = {}) {\n if (!point2) {\n throw new Error(\"point is required\");\n }\n if (!polygon2) {\n throw new Error(\"polygon is required\");\n }\n const pt = getCoord(point2);\n const geom = getGeom(polygon2);\n const type = geom.type;\n const bbox2 = polygon2.bbox;\n let polys = geom.coordinates;\n if (bbox2 && inBBox(pt, bbox2) === false) {\n return false;\n }\n if (type === \"Polygon\") {\n polys = [polys];\n }\n let result = false;\n for (var i = 0; i < polys.length; ++i) {\n const polyResult = pointInPolygon(pt, polys[i]);\n if (polyResult === 0) return options.ignoreBoundary ? false : true;\n else if (polyResult) result = true;\n }\n return result;\n}\nfunction inBBox(pt, bbox2) {\n return bbox2[0] <= pt[0] && bbox2[1] <= pt[1] && bbox2[2] >= pt[0] && bbox2[3] >= pt[1];\n}\n\n// node_modules/sweepline-intersections/dist/sweeplineIntersections.esm.js\nvar TinyQueue = class {\n constructor(data = [], compare2 = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare2;\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n pop() {\n if (this.length === 0) return void 0;\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n return top;\n }\n peek() {\n return this.data[0];\n }\n _up(pos) {\n const { data, compare: compare2 } = this;\n const item = data[pos];\n while (pos > 0) {\n const parent = pos - 1 >> 1;\n const current = data[parent];\n if (compare2(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n data[pos] = item;\n }\n _down(pos) {\n const { data, compare: compare2 } = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n if (right < this.length && compare2(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare2(best, item) >= 0) break;\n data[pos] = best;\n pos = left;\n }\n data[pos] = item;\n }\n};\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\nfunction checkWhichEventIsLeft(e1, e2) {\n if (e1.p.x > e2.p.x) return 1;\n if (e1.p.x < e2.p.x) return -1;\n if (e1.p.y !== e2.p.y) return e1.p.y > e2.p.y ? 1 : -1;\n return 1;\n}\nfunction checkWhichSegmentHasRightEndpointFirst(seg1, seg2) {\n if (seg1.rightSweepEvent.p.x > seg2.rightSweepEvent.p.x) return 1;\n if (seg1.rightSweepEvent.p.x < seg2.rightSweepEvent.p.x) return -1;\n if (seg1.rightSweepEvent.p.y !== seg2.rightSweepEvent.p.y) return seg1.rightSweepEvent.p.y < seg2.rightSweepEvent.p.y ? 1 : -1;\n return 1;\n}\nvar Event = class {\n constructor(p, featureId2, ringId2, eventId2) {\n this.p = {\n x: p[0],\n y: p[1]\n };\n this.featureId = featureId2;\n this.ringId = ringId2;\n this.eventId = eventId2;\n this.otherEvent = null;\n this.isLeftEndpoint = null;\n }\n isSamePoint(eventToCheck) {\n return this.p.x === eventToCheck.p.x && this.p.y === eventToCheck.p.y;\n }\n};\nfunction fillEventQueue(geojson, eventQueue) {\n if (geojson.type === \"FeatureCollection\") {\n const features = geojson.features;\n for (let i = 0; i < features.length; i++) {\n processFeature(features[i], eventQueue);\n }\n } else {\n processFeature(geojson, eventQueue);\n }\n}\nvar featureId = 0;\nvar ringId = 0;\nvar eventId = 0;\nfunction processFeature(featureOrGeometry, eventQueue) {\n const geom = featureOrGeometry.type === \"Feature\" ? featureOrGeometry.geometry : featureOrGeometry;\n let coords = geom.coordinates;\n if (geom.type === \"Polygon\" || geom.type === \"MultiLineString\") coords = [coords];\n if (geom.type === \"LineString\") coords = [[coords]];\n for (let i = 0; i < coords.length; i++) {\n for (let ii = 0; ii < coords[i].length; ii++) {\n let currentP = coords[i][ii][0];\n let nextP = null;\n ringId = ringId + 1;\n for (let iii = 0; iii < coords[i][ii].length - 1; iii++) {\n nextP = coords[i][ii][iii + 1];\n const e1 = new Event(currentP, featureId, ringId, eventId);\n const e2 = new Event(nextP, featureId, ringId, eventId + 1);\n e1.otherEvent = e2;\n e2.otherEvent = e1;\n if (checkWhichEventIsLeft(e1, e2) > 0) {\n e2.isLeftEndpoint = true;\n e1.isLeftEndpoint = false;\n } else {\n e1.isLeftEndpoint = true;\n e2.isLeftEndpoint = false;\n }\n eventQueue.push(e1);\n eventQueue.push(e2);\n currentP = nextP;\n eventId = eventId + 1;\n }\n }\n }\n featureId = featureId + 1;\n}\nvar Segment = class {\n constructor(event) {\n this.leftSweepEvent = event;\n this.rightSweepEvent = event.otherEvent;\n }\n};\nfunction testSegmentIntersect(seg1, seg2) {\n if (seg1 === null || seg2 === null) return false;\n if (seg1.leftSweepEvent.ringId === seg2.leftSweepEvent.ringId && (seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) || seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) || seg1.rightSweepEvent.isSamePoint(seg2.rightSweepEvent) || seg1.leftSweepEvent.isSamePoint(seg2.leftSweepEvent) || seg1.leftSweepEvent.isSamePoint(seg2.rightSweepEvent))) return false;\n const x1 = seg1.leftSweepEvent.p.x;\n const y1 = seg1.leftSweepEvent.p.y;\n const x2 = seg1.rightSweepEvent.p.x;\n const y2 = seg1.rightSweepEvent.p.y;\n const x3 = seg2.leftSweepEvent.p.x;\n const y3 = seg2.leftSweepEvent.p.y;\n const x4 = seg2.rightSweepEvent.p.x;\n const y4 = seg2.rightSweepEvent.p.y;\n const denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n const numeA = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3);\n const numeB = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3);\n if (denom === 0) {\n if (numeA === 0 && numeB === 0) return false;\n return false;\n }\n const uA = numeA / denom;\n const uB = numeB / denom;\n if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n const x = x1 + uA * (x2 - x1);\n const y = y1 + uA * (y2 - y1);\n return [x, y];\n }\n return false;\n}\nfunction runCheck(eventQueue, ignoreSelfIntersections) {\n ignoreSelfIntersections = ignoreSelfIntersections ? ignoreSelfIntersections : false;\n const intersectionPoints = [];\n const outQueue = new TinyQueue([], checkWhichSegmentHasRightEndpointFirst);\n while (eventQueue.length) {\n const event = eventQueue.pop();\n if (event.isLeftEndpoint) {\n const segment = new Segment(event);\n for (let i = 0; i < outQueue.data.length; i++) {\n const otherSeg = outQueue.data[i];\n if (ignoreSelfIntersections) {\n if (otherSeg.leftSweepEvent.featureId === event.featureId) continue;\n }\n const intersection3 = testSegmentIntersect(segment, otherSeg);\n if (intersection3 !== false) intersectionPoints.push(intersection3);\n }\n outQueue.push(segment);\n } else if (event.isLeftEndpoint === false) {\n outQueue.pop();\n }\n }\n return intersectionPoints;\n}\nfunction sweeplineIntersections(geojson, ignoreSelfIntersections) {\n const eventQueue = new TinyQueue([], checkWhichEventIsLeft);\n fillEventQueue(geojson, eventQueue);\n return runCheck(eventQueue, ignoreSelfIntersections);\n}\nvar sweeplineIntersections_esm_default = sweeplineIntersections;\n\n// node_modules/@turf/line-intersect/dist/esm/index.js\nvar sweeplineIntersections2 = sweeplineIntersections_esm_default;\nfunction lineIntersect(line1, line2, options = {}) {\n const { removeDuplicates = true, ignoreSelfIntersections = true } = options;\n let features = [];\n if (line1.type === \"FeatureCollection\")\n features = features.concat(line1.features);\n else if (line1.type === \"Feature\") features.push(line1);\n else if (line1.type === \"LineString\" || line1.type === \"Polygon\" || line1.type === \"MultiLineString\" || line1.type === \"MultiPolygon\") {\n features.push(feature(line1));\n }\n if (line2.type === \"FeatureCollection\")\n features = features.concat(line2.features);\n else if (line2.type === \"Feature\") features.push(line2);\n else if (line2.type === \"LineString\" || line2.type === \"Polygon\" || line2.type === \"MultiLineString\" || line2.type === \"MultiPolygon\") {\n features.push(feature(line2));\n }\n const intersections = sweeplineIntersections2(\n featureCollection(features),\n ignoreSelfIntersections\n );\n let results = [];\n if (removeDuplicates) {\n const unique = {};\n intersections.forEach((intersection3) => {\n const key = intersection3.join(\",\");\n if (!unique[key]) {\n unique[key] = true;\n results.push(intersection3);\n }\n });\n } else {\n results = intersections;\n }\n return featureCollection(results.map((r) => point(r)));\n}\n\n// node_modules/@turf/meta/dist/esm/index.js\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId2, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId2 = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId2\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId2\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId2\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox2, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox: bbox2, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\n\n// node_modules/@turf/polygon-to-line/dist/esm/index.js\nfunction polygonToLine(poly, options = {}) {\n const geom = getGeom(poly);\n if (!options.properties && poly.type === \"Feature\") {\n options.properties = poly.properties;\n }\n switch (geom.type) {\n case \"Polygon\":\n return singlePolygonToLine(geom, options);\n case \"MultiPolygon\":\n return multiPolygonToLine(geom, options);\n default:\n throw new Error(\"invalid poly\");\n }\n}\nfunction singlePolygonToLine(poly, options = {}) {\n const geom = getGeom(poly);\n const coords = geom.coordinates;\n const properties = options.properties ? options.properties : poly.type === \"Feature\" ? poly.properties : {};\n return coordsToLine(coords, properties);\n}\nfunction multiPolygonToLine(multiPoly, options = {}) {\n const geom = getGeom(multiPoly);\n const coords = geom.coordinates;\n const properties = options.properties ? options.properties : multiPoly.type === \"Feature\" ? multiPoly.properties : {};\n const lines = [];\n coords.forEach((coord) => {\n lines.push(coordsToLine(coord, properties));\n });\n return featureCollection(lines);\n}\nfunction coordsToLine(coords, properties) {\n if (coords.length > 1) {\n return multiLineString(coords, properties);\n }\n return lineString(coords[0], properties);\n}\n\n// node_modules/@turf/boolean-disjoint/dist/esm/index.js\nfunction booleanDisjoint(feature1, feature2, {\n ignoreSelfIntersections = true\n} = { ignoreSelfIntersections: true }) {\n let bool = true;\n flattenEach(feature1, (flatten1) => {\n flattenEach(feature2, (flatten2) => {\n if (bool === false) {\n return false;\n }\n bool = disjoint(\n flatten1.geometry,\n flatten2.geometry,\n ignoreSelfIntersections\n );\n });\n });\n return bool;\n}\nfunction disjoint(geom1, geom2, ignoreSelfIntersections) {\n switch (geom1.type) {\n case \"Point\":\n switch (geom2.type) {\n case \"Point\":\n return !compareCoords(geom1.coordinates, geom2.coordinates);\n case \"LineString\":\n return !isPointOnLine(geom2, geom1);\n case \"Polygon\":\n return !booleanPointInPolygon(geom1, geom2);\n }\n break;\n case \"LineString\":\n switch (geom2.type) {\n case \"Point\":\n return !isPointOnLine(geom1, geom2);\n case \"LineString\":\n return !isLineOnLine(geom1, geom2, ignoreSelfIntersections);\n case \"Polygon\":\n return !isLineInPoly(geom2, geom1, ignoreSelfIntersections);\n }\n break;\n case \"Polygon\":\n switch (geom2.type) {\n case \"Point\":\n return !booleanPointInPolygon(geom2, geom1);\n case \"LineString\":\n return !isLineInPoly(geom1, geom2, ignoreSelfIntersections);\n case \"Polygon\":\n return !isPolyInPoly(geom2, geom1, ignoreSelfIntersections);\n }\n }\n return false;\n}\nfunction isPointOnLine(lineString2, pt) {\n for (let i = 0; i < lineString2.coordinates.length - 1; i++) {\n if (isPointOnLineSegment(\n lineString2.coordinates[i],\n lineString2.coordinates[i + 1],\n pt.coordinates\n )) {\n return true;\n }\n }\n return false;\n}\nfunction isLineOnLine(lineString1, lineString2, ignoreSelfIntersections) {\n const doLinesIntersect = lineIntersect(lineString1, lineString2, {\n ignoreSelfIntersections\n });\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\nfunction isLineInPoly(polygon2, lineString2, ignoreSelfIntersections) {\n for (const coord of lineString2.coordinates) {\n if (booleanPointInPolygon(coord, polygon2)) {\n return true;\n }\n }\n const doLinesIntersect = lineIntersect(lineString2, polygonToLine(polygon2), {\n ignoreSelfIntersections\n });\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\nfunction isPolyInPoly(feature1, feature2, ignoreSelfIntersections) {\n for (const coord1 of feature1.coordinates[0]) {\n if (booleanPointInPolygon(coord1, feature2)) {\n return true;\n }\n }\n for (const coord2 of feature2.coordinates[0]) {\n if (booleanPointInPolygon(coord2, feature1)) {\n return true;\n }\n }\n const doLinesIntersect = lineIntersect(\n polygonToLine(feature1),\n polygonToLine(feature2),\n { ignoreSelfIntersections }\n );\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt) {\n const dxc = pt[0] - lineSegmentStart[0];\n const dyc = pt[1] - lineSegmentStart[1];\n const dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n const dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n const cross = dxc * dyl - dyc * dxl;\n if (cross !== 0) {\n return false;\n }\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n if (dxl > 0) {\n return lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0];\n } else {\n return lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n }\n } else if (dyl > 0) {\n return lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1];\n } else {\n return lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n }\n}\nfunction compareCoords(pair1, pair2) {\n return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\n\n// node_modules/@turf/boolean-intersects/dist/esm/index.js\nfunction booleanIntersects(feature1, feature2, {\n ignoreSelfIntersections = true\n} = {}) {\n let bool = false;\n flattenEach(feature1, (flatten1) => {\n flattenEach(feature2, (flatten2) => {\n if (bool === true) {\n return true;\n }\n bool = !booleanDisjoint(flatten1.geometry, flatten2.geometry, {\n ignoreSelfIntersections\n });\n });\n });\n return bool;\n}\nvar turf_boolean_intersects_default = booleanIntersects;\n\n// src/filters/geosjonFeatures.ts\nfunction geojsonFeatures({\n geojson,\n spatialFilter,\n uniqueIdProperty\n}) {\n let uniqueIdx = 0;\n const map = /* @__PURE__ */ new Map();\n if (!spatialFilter) {\n return [];\n }\n for (const feature2 of geojson.features) {\n const uniqueId = uniqueIdProperty ? feature2.properties[uniqueIdProperty] : ++uniqueIdx;\n if (!map.has(uniqueId) && turf_boolean_intersects_default(spatialFilter, feature2)) {\n map.set(uniqueId, feature2.properties);\n }\n }\n return Array.from(map.values());\n}\n\n// node_modules/@math.gl/core/dist/lib/common.js\nvar RADIANS_TO_DEGREES = 1 / Math.PI * 180;\nvar DEGREES_TO_RADIANS = 1 / 180 * Math.PI;\nvar DEFAULT_CONFIG = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true,\n _cartographicRadians: false\n};\nglobalThis.mathgl = globalThis.mathgl || { config: { ...DEFAULT_CONFIG } };\nvar config = globalThis.mathgl.config;\nfunction isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\nfunction lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n\n// node_modules/@math.gl/web-mercator/dist/assert.js\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message || \"@math.gl/web-mercator: assertion failed.\");\n }\n}\n\n// node_modules/@math.gl/web-mercator/dist/web-mercator-utils.js\nvar PI = Math.PI;\nvar PI_4 = PI / 4;\nvar DEGREES_TO_RADIANS2 = PI / 180;\nvar RADIANS_TO_DEGREES2 = 180 / PI;\nvar TILE_SIZE = 512;\nfunction lngLatToWorld(lngLat) {\n const [lng, lat] = lngLat;\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, \"invalid latitude\");\n const lambda2 = lng * DEGREES_TO_RADIANS2;\n const phi2 = lat * DEGREES_TO_RADIANS2;\n const x = TILE_SIZE * (lambda2 + PI) / (2 * PI);\n const y = TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);\n return [x, y];\n}\nfunction worldToLngLat(xy) {\n const [x, y] = xy;\n const lambda2 = x / TILE_SIZE * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES2, phi2 * RADIANS_TO_DEGREES2];\n}\n\n// node_modules/@math.gl/web-mercator/dist/get-bounds.js\nvar DEGREES_TO_RADIANS3 = Math.PI / 180;\n\n// src/utils/transformTileCoordsToWGS84.ts\nvar TRANSFORM_FN = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon\n};\nfunction transformTileCoordsToWGS84(geometry, bbox2) {\n const [west, south, east, north] = bbox2;\n const nw = lngLatToWorld([west, north]);\n const se = lngLatToWorld([east, south]);\n const projectedBbox = [nw, se];\n if (geometry.type === \"GeometryCollection\") {\n throw new Error(\"Unsupported geometry type GeometryCollection\");\n }\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return { ...geometry, coordinates };\n}\nfunction transformPoint([pointX, pointY], [nw, se]) {\n const x = lerp(nw[0], se[0], pointX);\n const y = lerp(nw[1], se[1], pointY);\n return worldToLngLat([x, y]);\n}\nfunction getPoints(geometry, bbox2) {\n return geometry.map((g) => transformPoint(g, bbox2));\n}\nfunction transformMultiPoint(multiPoint, bbox2) {\n return getPoints(multiPoint, bbox2);\n}\nfunction transformLineString(line, bbox2) {\n return getPoints(line, bbox2);\n}\nfunction transformMultiLineString(multiLineString2, bbox2) {\n return multiLineString2.map(\n (lineString2) => transformLineString(lineString2, bbox2)\n );\n}\nfunction transformPolygon(polygon2, bbox2) {\n return polygon2.map((polygonRing) => getPoints(polygonRing, bbox2));\n}\nfunction transformMultiPolygon(multiPolygon2, bbox2) {\n return multiPolygon2.map((polygon2) => transformPolygon(polygon2, bbox2));\n}\n\n// node_modules/@turf/bbox-polygon/dist/esm/index.js\nfunction bboxPolygon(bbox2, options = {}) {\n const west = Number(bbox2[0]);\n const south = Number(bbox2[1]);\n const east = Number(bbox2[2]);\n const north = Number(bbox2[3]);\n if (bbox2.length === 6) {\n throw new Error(\n \"@turf/bbox-polygon does not support BBox with 6 positions\"\n );\n }\n const lowLeft = [west, south];\n const topLeft = [west, north];\n const topRight = [east, north];\n const lowRight = [east, south];\n return polygon(\n [[lowLeft, lowRight, topRight, topLeft, lowLeft]],\n options.properties,\n { bbox: bbox2, id: options.id }\n );\n}\nvar turf_bbox_polygon_default = bboxPolygon;\n\n// node_modules/@turf/bbox/dist/esm/index.js\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\n\n// node_modules/@turf/boolean-point-on-line/dist/esm/index.js\nfunction booleanPointOnLine(pt, line, options = {}) {\n const ptCoords = getCoord(pt);\n const lineCoords = getCoords(line);\n for (let i = 0; i < lineCoords.length - 1; i++) {\n let ignoreBoundary = false;\n if (options.ignoreEndVertices) {\n if (i === 0) {\n ignoreBoundary = \"start\";\n }\n if (i === lineCoords.length - 2) {\n ignoreBoundary = \"end\";\n }\n if (i === 0 && i + 1 === lineCoords.length - 1) {\n ignoreBoundary = \"both\";\n }\n }\n if (isPointOnLineSegment2(\n lineCoords[i],\n lineCoords[i + 1],\n ptCoords,\n ignoreBoundary,\n typeof options.epsilon === \"undefined\" ? null : options.epsilon\n )) {\n return true;\n }\n }\n return false;\n}\nfunction isPointOnLineSegment2(lineSegmentStart, lineSegmentEnd, pt, excludeBoundary, epsilon2) {\n const x = pt[0];\n const y = pt[1];\n const x1 = lineSegmentStart[0];\n const y1 = lineSegmentStart[1];\n const x2 = lineSegmentEnd[0];\n const y2 = lineSegmentEnd[1];\n const dxc = pt[0] - x1;\n const dyc = pt[1] - y1;\n const dxl = x2 - x1;\n const dyl = y2 - y1;\n const cross = dxc * dyl - dyc * dxl;\n if (epsilon2 !== null) {\n if (Math.abs(cross) > epsilon2) {\n return false;\n }\n } else if (cross !== 0) {\n return false;\n }\n if (Math.abs(dxl) === Math.abs(dyl) && Math.abs(dxl) === 0) {\n if (excludeBoundary) {\n return false;\n }\n if (pt[0] === lineSegmentStart[0] && pt[1] === lineSegmentStart[1]) {\n return true;\n } else {\n return false;\n }\n }\n if (!excludeBoundary) {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0 ? x1 <= x && x <= x2 : x2 <= x && x <= x1;\n }\n return dyl > 0 ? y1 <= y && y <= y2 : y2 <= y && y <= y1;\n } else if (excludeBoundary === \"start\") {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0 ? x1 < x && x <= x2 : x2 <= x && x < x1;\n }\n return dyl > 0 ? y1 < y && y <= y2 : y2 <= y && y < y1;\n } else if (excludeBoundary === \"end\") {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0 ? x1 <= x && x < x2 : x2 < x && x <= x1;\n }\n return dyl > 0 ? y1 <= y && y < y2 : y2 < y && y <= y1;\n } else if (excludeBoundary === \"both\") {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0 ? x1 < x && x < x2 : x2 < x && x < x1;\n }\n return dyl > 0 ? y1 < y && y < y2 : y2 < y && y < y1;\n }\n return false;\n}\n\n// node_modules/@turf/boolean-within/dist/esm/index.js\nfunction booleanWithin(feature1, feature2) {\n var geom1 = getGeom(feature1);\n var geom2 = getGeom(feature2);\n var type1 = geom1.type;\n var type2 = geom2.type;\n switch (type1) {\n case \"Point\":\n switch (type2) {\n case \"MultiPoint\":\n return isPointInMultiPoint(geom1, geom2);\n case \"LineString\":\n return booleanPointOnLine(geom1, geom2, { ignoreEndVertices: true });\n case \"Polygon\":\n case \"MultiPolygon\":\n return booleanPointInPolygon(geom1, geom2, { ignoreBoundary: true });\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"MultiPoint\":\n switch (type2) {\n case \"MultiPoint\":\n return isMultiPointInMultiPoint(geom1, geom2);\n case \"LineString\":\n return isMultiPointOnLine(geom1, geom2);\n case \"Polygon\":\n case \"MultiPolygon\":\n return isMultiPointInPoly(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"LineString\":\n switch (type2) {\n case \"LineString\":\n return isLineOnLine2(geom1, geom2);\n case \"Polygon\":\n case \"MultiPolygon\":\n return isLineInPoly2(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"Polygon\":\n switch (type2) {\n case \"Polygon\":\n case \"MultiPolygon\":\n return isPolyInPoly2(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n default:\n throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n }\n}\nfunction isPointInMultiPoint(point2, multiPoint) {\n var i;\n var output = false;\n for (i = 0; i < multiPoint.coordinates.length; i++) {\n if (compareCoords2(multiPoint.coordinates[i], point2.coordinates)) {\n output = true;\n break;\n }\n }\n return output;\n}\nfunction isMultiPointInMultiPoint(multiPoint1, multiPoint2) {\n for (var i = 0; i < multiPoint1.coordinates.length; i++) {\n var anyMatch = false;\n for (var i2 = 0; i2 < multiPoint2.coordinates.length; i2++) {\n if (compareCoords2(multiPoint1.coordinates[i], multiPoint2.coordinates[i2])) {\n anyMatch = true;\n }\n }\n if (!anyMatch) {\n return false;\n }\n }\n return true;\n}\nfunction isMultiPointOnLine(multiPoint, lineString2) {\n var foundInsidePoint = false;\n for (var i = 0; i < multiPoint.coordinates.length; i++) {\n if (!booleanPointOnLine(multiPoint.coordinates[i], lineString2)) {\n return false;\n }\n if (!foundInsidePoint) {\n foundInsidePoint = booleanPointOnLine(\n multiPoint.coordinates[i],\n lineString2,\n { ignoreEndVertices: true }\n );\n }\n }\n return foundInsidePoint;\n}\nfunction isMultiPointInPoly(multiPoint, polygon2) {\n var output = true;\n var oneInside = false;\n var isInside = false;\n for (var i = 0; i < multiPoint.coordinates.length; i++) {\n isInside = booleanPointInPolygon(multiPoint.coordinates[i], polygon2);\n if (!isInside) {\n output = false;\n break;\n }\n if (!oneInside) {\n isInside = booleanPointInPolygon(multiPoint.coordinates[i], polygon2, {\n ignoreBoundary: true\n });\n }\n }\n return output && isInside;\n}\nfunction isLineOnLine2(lineString1, lineString2) {\n for (var i = 0; i < lineString1.coordinates.length; i++) {\n if (!booleanPointOnLine(lineString1.coordinates[i], lineString2)) {\n return false;\n }\n }\n return true;\n}\nfunction isLineInPoly2(linestring, polygon2) {\n var polyBbox = bbox(polygon2);\n var lineBbox = bbox(linestring);\n if (!doBBoxOverlap(polyBbox, lineBbox)) {\n return false;\n }\n var foundInsidePoint = false;\n for (var i = 0; i < linestring.coordinates.length; i++) {\n if (!booleanPointInPolygon(linestring.coordinates[i], polygon2)) {\n return false;\n }\n if (!foundInsidePoint) {\n foundInsidePoint = booleanPointInPolygon(\n linestring.coordinates[i],\n polygon2,\n { ignoreBoundary: true }\n );\n }\n if (!foundInsidePoint && i < linestring.coordinates.length - 1) {\n var midpoint = getMidpoint(\n linestring.coordinates[i],\n linestring.coordinates[i + 1]\n );\n foundInsidePoint = booleanPointInPolygon(midpoint, polygon2, {\n ignoreBoundary: true\n });\n }\n }\n return foundInsidePoint;\n}\nfunction isPolyInPoly2(geometry1, geometry2) {\n var poly1Bbox = bbox(geometry1);\n var poly2Bbox = bbox(geometry2);\n if (!doBBoxOverlap(poly2Bbox, poly1Bbox)) {\n return false;\n }\n for (var i = 0; i < geometry1.coordinates[0].length; i++) {\n if (!booleanPointInPolygon(geometry1.coordinates[0][i], geometry2)) {\n return false;\n }\n }\n return true;\n}\nfunction doBBoxOverlap(bbox1, bbox2) {\n if (bbox1[0] > bbox2[0]) return false;\n if (bbox1[2] < bbox2[2]) return false;\n if (bbox1[1] > bbox2[1]) return false;\n if (bbox1[3] < bbox2[3]) return false;\n return true;\n}\nfunction compareCoords2(pair1, pair2) {\n return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\nfunction getMidpoint(pair1, pair2) {\n return [(pair1[0] + pair2[0]) / 2, (pair1[1] + pair2[1]) / 2];\n}\nvar turf_boolean_within_default = booleanWithin;\n\n// node_modules/bignumber.js/bignumber.mjs\nvar isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i;\nvar mathceil = Math.ceil;\nvar mathfloor = Math.floor;\nvar bignumberError = \"[BigNumber Error] \";\nvar tooManyDigits = bignumberError + \"Number primitive has more than 15 significant digits: \";\nvar BASE = 1e14;\nvar LOG_BASE = 14;\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13];\nvar SQRT_BASE = 1e7;\nvar MAX = 1e9;\nfunction clone2(configObject) {\n var div, convertBase, parseNumeric, P = BigNumber2.prototype = { constructor: BigNumber2, toString: null, valueOf: null }, ONE = new BigNumber2(1), DECIMAL_PLACES = 20, ROUNDING_MODE = 4, TO_EXP_NEG = -7, TO_EXP_POS = 21, MIN_EXP = -1e7, MAX_EXP = 1e7, CRYPTO = false, MODULO_MODE = 1, POW_PRECISION = 0, FORMAT = {\n prefix: \"\",\n groupSize: 3,\n secondaryGroupSize: 0,\n groupSeparator: \",\",\n decimalSeparator: \".\",\n fractionGroupSize: 0,\n fractionGroupSeparator: \"\\xA0\",\n // non-breaking space\n suffix: \"\"\n }, ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\", alphabetHasNormalDecimalDigits = true;\n function BigNumber2(v2, b) {\n var alphabet, c, caseChanged, e, i, isNum, len, str, x = this;\n if (!(x instanceof BigNumber2)) return new BigNumber2(v2, b);\n if (b == null) {\n if (v2 && v2._isBigNumber === true) {\n x.s = v2.s;\n if (!v2.c || v2.e > MAX_EXP) {\n x.c = x.e = null;\n } else if (v2.e < MIN_EXP) {\n x.c = [x.e = 0];\n } else {\n x.e = v2.e;\n x.c = v2.c.slice();\n }\n return;\n }\n if ((isNum = typeof v2 == \"number\") && v2 * 0 == 0) {\n x.s = 1 / v2 < 0 ? (v2 = -v2, -1) : 1;\n if (v2 === ~~v2) {\n for (e = 0, i = v2; i >= 10; i /= 10, e++) ;\n if (e > MAX_EXP) {\n x.c = x.e = null;\n } else {\n x.e = e;\n x.c = [v2];\n }\n return;\n }\n str = String(v2);\n } else {\n if (!isNumeric.test(str = String(v2))) return parseNumeric(x, str, isNum);\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\n }\n if ((e = str.indexOf(\".\")) > -1) str = str.replace(\".\", \"\");\n if ((i = str.search(/e/i)) > 0) {\n if (e < 0) e = i;\n e += +str.slice(i + 1);\n str = str.substring(0, i);\n } else if (e < 0) {\n e = str.length;\n }\n } else {\n intCheck(b, 2, ALPHABET.length, \"Base\");\n if (b == 10 && alphabetHasNormalDecimalDigits) {\n x = new BigNumber2(v2);\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\n }\n str = String(v2);\n if (isNum = typeof v2 == \"number\") {\n if (v2 * 0 != 0) return parseNumeric(x, str, isNum, b);\n x.s = 1 / v2 < 0 ? (str = str.slice(1), -1) : 1;\n if (BigNumber2.DEBUG && str.replace(/^0\\.0*|\\./, \"\").length > 15) {\n throw Error(tooManyDigits + v2);\n }\n } else {\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\n }\n alphabet = ALPHABET.slice(0, b);\n e = i = 0;\n for (len = str.length; i < len; i++) {\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\n if (c == \".\") {\n if (i > e) {\n e = len;\n continue;\n }\n } else if (!caseChanged) {\n if (str == str.toUpperCase() && (str = str.toLowerCase()) || str == str.toLowerCase() && (str = str.toUpperCase())) {\n caseChanged = true;\n i = -1;\n e = 0;\n continue;\n }\n }\n return parseNumeric(x, String(v2), isNum, b);\n }\n }\n isNum = false;\n str = convertBase(str, b, 10, x.s);\n if ((e = str.indexOf(\".\")) > -1) str = str.replace(\".\", \"\");\n else e = str.length;\n }\n for (i = 0; str.charCodeAt(i) === 48; i++) ;\n for (len = str.length; str.charCodeAt(--len) === 48; ) ;\n if (str = str.slice(i, ++len)) {\n len -= i;\n if (isNum && BigNumber2.DEBUG && len > 15 && (v2 > MAX_SAFE_INTEGER || v2 !== mathfloor(v2))) {\n throw Error(tooManyDigits + x.s * v2);\n }\n if ((e = e - i - 1) > MAX_EXP) {\n x.c = x.e = null;\n } else if (e < MIN_EXP) {\n x.c = [x.e = 0];\n } else {\n x.e = e;\n x.c = [];\n i = (e + 1) % LOG_BASE;\n if (e < 0) i += LOG_BASE;\n if (i < len) {\n if (i) x.c.push(+str.slice(0, i));\n for (len -= LOG_BASE; i < len; ) {\n x.c.push(+str.slice(i, i += LOG_BASE));\n }\n i = LOG_BASE - (str = str.slice(i)).length;\n } else {\n i -= len;\n }\n for (; i--; str += \"0\") ;\n x.c.push(+str);\n }\n } else {\n x.c = [x.e = 0];\n }\n }\n BigNumber2.clone = clone2;\n BigNumber2.ROUND_UP = 0;\n BigNumber2.ROUND_DOWN = 1;\n BigNumber2.ROUND_CEIL = 2;\n BigNumber2.ROUND_FLOOR = 3;\n BigNumber2.ROUND_HALF_UP = 4;\n BigNumber2.ROUND_HALF_DOWN = 5;\n BigNumber2.ROUND_HALF_EVEN = 6;\n BigNumber2.ROUND_HALF_CEIL = 7;\n BigNumber2.ROUND_HALF_FLOOR = 8;\n BigNumber2.EUCLID = 9;\n BigNumber2.config = BigNumber2.set = function(obj) {\n var p, v2;\n if (obj != null) {\n if (typeof obj == \"object\") {\n if (obj.hasOwnProperty(p = \"DECIMAL_PLACES\")) {\n v2 = obj[p];\n intCheck(v2, 0, MAX, p);\n DECIMAL_PLACES = v2;\n }\n if (obj.hasOwnProperty(p = \"ROUNDING_MODE\")) {\n v2 = obj[p];\n intCheck(v2, 0, 8, p);\n ROUNDING_MODE = v2;\n }\n if (obj.hasOwnProperty(p = \"EXPONENTIAL_AT\")) {\n v2 = obj[p];\n if (v2 && v2.pop) {\n intCheck(v2[0], -MAX, 0, p);\n intCheck(v2[1], 0, MAX, p);\n TO_EXP_NEG = v2[0];\n TO_EXP_POS = v2[1];\n } else {\n intCheck(v2, -MAX, MAX, p);\n TO_EXP_NEG = -(TO_EXP_POS = v2 < 0 ? -v2 : v2);\n }\n }\n if (obj.hasOwnProperty(p = \"RANGE\")) {\n v2 = obj[p];\n if (v2 && v2.pop) {\n intCheck(v2[0], -MAX, -1, p);\n intCheck(v2[1], 1, MAX, p);\n MIN_EXP = v2[0];\n MAX_EXP = v2[1];\n } else {\n intCheck(v2, -MAX, MAX, p);\n if (v2) {\n MIN_EXP = -(MAX_EXP = v2 < 0 ? -v2 : v2);\n } else {\n throw Error(bignumberError + p + \" cannot be zero: \" + v2);\n }\n }\n }\n if (obj.hasOwnProperty(p = \"CRYPTO\")) {\n v2 = obj[p];\n if (v2 === !!v2) {\n if (v2) {\n if (typeof crypto != \"undefined\" && crypto && (crypto.getRandomValues || crypto.randomBytes)) {\n CRYPTO = v2;\n } else {\n CRYPTO = !v2;\n throw Error(bignumberError + \"crypto unavailable\");\n }\n } else {\n CRYPTO = v2;\n }\n } else {\n throw Error(bignumberError + p + \" not true or false: \" + v2);\n }\n }\n if (obj.hasOwnProperty(p = \"MODULO_MODE\")) {\n v2 = obj[p];\n intCheck(v2, 0, 9, p);\n MODULO_MODE = v2;\n }\n if (obj.hasOwnProperty(p = \"POW_PRECISION\")) {\n v2 = obj[p];\n intCheck(v2, 0, MAX, p);\n POW_PRECISION = v2;\n }\n if (obj.hasOwnProperty(p = \"FORMAT\")) {\n v2 = obj[p];\n if (typeof v2 == \"object\") FORMAT = v2;\n else throw Error(bignumberError + p + \" not an object: \" + v2);\n }\n if (obj.hasOwnProperty(p = \"ALPHABET\")) {\n v2 = obj[p];\n if (typeof v2 == \"string\" && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v2)) {\n alphabetHasNormalDecimalDigits = v2.slice(0, 10) == \"0123456789\";\n ALPHABET = v2;\n } else {\n throw Error(bignumberError + p + \" invalid: \" + v2);\n }\n }\n } else {\n throw Error(bignumberError + \"Object expected: \" + obj);\n }\n }\n return {\n DECIMAL_PLACES,\n ROUNDING_MODE,\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\n RANGE: [MIN_EXP, MAX_EXP],\n CRYPTO,\n MODULO_MODE,\n POW_PRECISION,\n FORMAT,\n ALPHABET\n };\n };\n BigNumber2.isBigNumber = function(v2) {\n if (!v2 || v2._isBigNumber !== true) return false;\n if (!BigNumber2.DEBUG) return true;\n var i, n, c = v2.c, e = v2.e, s = v2.s;\n out: if ({}.toString.call(c) == \"[object Array]\") {\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\n if (c[0] === 0) {\n if (e === 0 && c.length === 1) return true;\n break out;\n }\n i = (e + 1) % LOG_BASE;\n if (i < 1) i += LOG_BASE;\n if (String(c[0]).length == i) {\n for (i = 0; i < c.length; i++) {\n n = c[i];\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\n }\n if (n !== 0) return true;\n }\n }\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\n return true;\n }\n throw Error(bignumberError + \"Invalid BigNumber: \" + v2);\n };\n BigNumber2.maximum = BigNumber2.max = function() {\n return maxOrMin(arguments, -1);\n };\n BigNumber2.minimum = BigNumber2.min = function() {\n return maxOrMin(arguments, 1);\n };\n BigNumber2.random = function() {\n var pow2_53 = 9007199254740992;\n var random53bitInt = Math.random() * pow2_53 & 2097151 ? function() {\n return mathfloor(Math.random() * pow2_53);\n } : function() {\n return (Math.random() * 1073741824 | 0) * 8388608 + (Math.random() * 8388608 | 0);\n };\n return function(dp) {\n var a, b, e, k, v2, i = 0, c = [], rand = new BigNumber2(ONE);\n if (dp == null) dp = DECIMAL_PLACES;\n else intCheck(dp, 0, MAX);\n k = mathceil(dp / LOG_BASE);\n if (CRYPTO) {\n if (crypto.getRandomValues) {\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\n for (; i < k; ) {\n v2 = a[i] * 131072 + (a[i + 1] >>> 11);\n if (v2 >= 9e15) {\n b = crypto.getRandomValues(new Uint32Array(2));\n a[i] = b[0];\n a[i + 1] = b[1];\n } else {\n c.push(v2 % 1e14);\n i += 2;\n }\n }\n i = k / 2;\n } else if (crypto.randomBytes) {\n a = crypto.randomBytes(k *= 7);\n for (; i < k; ) {\n v2 = (a[i] & 31) * 281474976710656 + a[i + 1] * 1099511627776 + a[i + 2] * 4294967296 + a[i + 3] * 16777216 + (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\n if (v2 >= 9e15) {\n crypto.randomBytes(7).copy(a, i);\n } else {\n c.push(v2 % 1e14);\n i += 7;\n }\n }\n i = k / 7;\n } else {\n CRYPTO = false;\n throw Error(bignumberError + \"crypto unavailable\");\n }\n }\n if (!CRYPTO) {\n for (; i < k; ) {\n v2 = random53bitInt();\n if (v2 < 9e15) c[i++] = v2 % 1e14;\n }\n }\n k = c[--i];\n dp %= LOG_BASE;\n if (k && dp) {\n v2 = POWS_TEN[LOG_BASE - dp];\n c[i] = mathfloor(k / v2) * v2;\n }\n for (; c[i] === 0; c.pop(), i--) ;\n if (i < 0) {\n c = [e = 0];\n } else {\n for (e = -1; c[0] === 0; c.splice(0, 1), e -= LOG_BASE) ;\n for (i = 1, v2 = c[0]; v2 >= 10; v2 /= 10, i++) ;\n if (i < LOG_BASE) e -= LOG_BASE - i;\n }\n rand.e = e;\n rand.c = c;\n return rand;\n };\n }();\n BigNumber2.sum = function() {\n var i = 1, args = arguments, sum3 = new BigNumber2(args[0]);\n for (; i < args.length; ) sum3 = sum3.plus(args[i++]);\n return sum3;\n };\n convertBase = /* @__PURE__ */ function() {\n var decimal = \"0123456789\";\n function toBaseOut(str, baseIn, baseOut, alphabet) {\n var j, arr = [0], arrL, i = 0, len = str.length;\n for (; i < len; ) {\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn) ;\n arr[0] += alphabet.indexOf(str.charAt(i++));\n for (j = 0; j < arr.length; j++) {\n if (arr[j] > baseOut - 1) {\n if (arr[j + 1] == null) arr[j + 1] = 0;\n arr[j + 1] += arr[j] / baseOut | 0;\n arr[j] %= baseOut;\n }\n }\n }\n return arr.reverse();\n }\n return function(str, baseIn, baseOut, sign, callerIsToString) {\n var alphabet, d, e, k, r, x, xc, y, i = str.indexOf(\".\"), dp = DECIMAL_PLACES, rm = ROUNDING_MODE;\n if (i >= 0) {\n k = POW_PRECISION;\n POW_PRECISION = 0;\n str = str.replace(\".\", \"\");\n y = new BigNumber2(baseIn);\n x = y.pow(str.length - i);\n POW_PRECISION = k;\n y.c = toBaseOut(\n toFixedPoint(coeffToString(x.c), x.e, \"0\"),\n 10,\n baseOut,\n decimal\n );\n y.e = y.c.length;\n }\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString ? (alphabet = ALPHABET, decimal) : (alphabet = decimal, ALPHABET));\n e = k = xc.length;\n for (; xc[--k] == 0; xc.pop()) ;\n if (!xc[0]) return alphabet.charAt(0);\n if (i < 0) {\n --e;\n } else {\n x.c = xc;\n x.e = e;\n x.s = sign;\n x = div(x, y, dp, rm, baseOut);\n xc = x.c;\n r = x.r;\n e = x.e;\n }\n d = e + dp + 1;\n i = xc[d];\n k = baseOut / 2;\n r = r || d < 0 || xc[d + 1] != null;\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : i > k || i == k && (rm == 4 || r || rm == 6 && xc[d - 1] & 1 || rm == (x.s < 0 ? 8 : 7));\n if (d < 1 || !xc[0]) {\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\n } else {\n xc.length = d;\n if (r) {\n for (--baseOut; ++xc[--d] > baseOut; ) {\n xc[d] = 0;\n if (!d) {\n ++e;\n xc = [1].concat(xc);\n }\n }\n }\n for (k = xc.length; !xc[--k]; ) ;\n for (i = 0, str = \"\"; i <= k; str += alphabet.charAt(xc[i++])) ;\n str = toFixedPoint(str, e, alphabet.charAt(0));\n }\n return str;\n };\n }();\n div = /* @__PURE__ */ function() {\n function multiply(x, k, base) {\n var m, temp, xlo, xhi, carry = 0, i = x.length, klo = k % SQRT_BASE, khi = k / SQRT_BASE | 0;\n for (x = x.slice(); i--; ) {\n xlo = x[i] % SQRT_BASE;\n xhi = x[i] / SQRT_BASE | 0;\n m = khi * xlo + xhi * klo;\n temp = klo * xlo + m % SQRT_BASE * SQRT_BASE + carry;\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\n x[i] = temp % base;\n }\n if (carry) x = [carry].concat(x);\n return x;\n }\n function compare2(a, b, aL, bL) {\n var i, cmp;\n if (aL != bL) {\n cmp = aL > bL ? 1 : -1;\n } else {\n for (i = cmp = 0; i < aL; i++) {\n if (a[i] != b[i]) {\n cmp = a[i] > b[i] ? 1 : -1;\n break;\n }\n }\n }\n return cmp;\n }\n function subtract(a, b, aL, base) {\n var i = 0;\n for (; aL--; ) {\n a[aL] -= i;\n i = a[aL] < b[aL] ? 1 : 0;\n a[aL] = i * base + a[aL] - b[aL];\n }\n for (; !a[0] && a.length > 1; a.splice(0, 1)) ;\n }\n return function(x, y, dp, rm, base) {\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, yL, yz, s = x.s == y.s ? 1 : -1, xc = x.c, yc = y.c;\n if (!xc || !xc[0] || !yc || !yc[0]) {\n return new BigNumber2(\n // Return NaN if either NaN, or both Infinity or 0.\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : (\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\n )\n );\n }\n q = new BigNumber2(s);\n qc = q.c = [];\n e = x.e - y.e;\n s = dp + e + 1;\n if (!base) {\n base = BASE;\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\n s = s / LOG_BASE | 0;\n }\n for (i = 0; yc[i] == (xc[i] || 0); i++) ;\n if (yc[i] > (xc[i] || 0)) e--;\n if (s < 0) {\n qc.push(1);\n more = true;\n } else {\n xL = xc.length;\n yL = yc.length;\n i = 0;\n s += 2;\n n = mathfloor(base / (yc[0] + 1));\n if (n > 1) {\n yc = multiply(yc, n, base);\n xc = multiply(xc, n, base);\n yL = yc.length;\n xL = xc.length;\n }\n xi = yL;\n rem = xc.slice(0, yL);\n remL = rem.length;\n for (; remL < yL; rem[remL++] = 0) ;\n yz = yc.slice();\n yz = [0].concat(yz);\n yc0 = yc[0];\n if (yc[1] >= base / 2) yc0++;\n do {\n n = 0;\n cmp = compare2(yc, rem, yL, remL);\n if (cmp < 0) {\n rem0 = rem[0];\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\n n = mathfloor(rem0 / yc0);\n if (n > 1) {\n if (n >= base) n = base - 1;\n prod = multiply(yc, n, base);\n prodL = prod.length;\n remL = rem.length;\n while (compare2(prod, rem, prodL, remL) == 1) {\n n--;\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\n prodL = prod.length;\n cmp = 1;\n }\n } else {\n if (n == 0) {\n cmp = n = 1;\n }\n prod = yc.slice();\n prodL = prod.length;\n }\n if (prodL < remL) prod = [0].concat(prod);\n subtract(rem, prod, remL, base);\n remL = rem.length;\n if (cmp == -1) {\n while (compare2(yc, rem, yL, remL) < 1) {\n n++;\n subtract(rem, yL < remL ? yz : yc, remL, base);\n remL = rem.length;\n }\n }\n } else if (cmp === 0) {\n n++;\n rem = [0];\n }\n qc[i++] = n;\n if (rem[0]) {\n rem[remL++] = xc[xi] || 0;\n } else {\n rem = [xc[xi]];\n remL = 1;\n }\n } while ((xi++ < xL || rem[0] != null) && s--);\n more = rem[0] != null;\n if (!qc[0]) qc.splice(0, 1);\n }\n if (base == BASE) {\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++) ;\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\n } else {\n q.e = e;\n q.r = +more;\n }\n return q;\n };\n }();\n function format(n, i, rm, id) {\n var c0, e, ne, len, str;\n if (rm == null) rm = ROUNDING_MODE;\n else intCheck(rm, 0, 8);\n if (!n.c) return n.toString();\n c0 = n.c[0];\n ne = n.e;\n if (i == null) {\n str = coeffToString(n.c);\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) ? toExponential(str, ne) : toFixedPoint(str, ne, \"0\");\n } else {\n n = round(new BigNumber2(n), i, rm);\n e = n.e;\n str = coeffToString(n.c);\n len = str.length;\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\n for (; len < i; str += \"0\", len++) ;\n str = toExponential(str, e);\n } else {\n i -= ne;\n str = toFixedPoint(str, e, \"0\");\n if (e + 1 > len) {\n if (--i > 0) for (str += \".\"; i--; str += \"0\") ;\n } else {\n i += e - len;\n if (i > 0) {\n if (e + 1 == len) str += \".\";\n for (; i--; str += \"0\") ;\n }\n }\n }\n }\n return n.s < 0 && c0 ? \"-\" + str : str;\n }\n function maxOrMin(args, n) {\n var k, y, i = 1, x = new BigNumber2(args[0]);\n for (; i < args.length; i++) {\n y = new BigNumber2(args[i]);\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\n x = y;\n }\n }\n return x;\n }\n function normalise(n, c, e) {\n var i = 1, j = c.length;\n for (; !c[--j]; c.pop()) ;\n for (j = c[0]; j >= 10; j /= 10, i++) ;\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\n n.c = n.e = null;\n } else if (e < MIN_EXP) {\n n.c = [n.e = 0];\n } else {\n n.e = e;\n n.c = c;\n }\n return n;\n }\n parseNumeric = /* @__PURE__ */ function() {\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i, dotAfter = /^([^.]+)\\.$/, dotBefore = /^\\.([^.]+)$/, isInfinityOrNaN = /^-?(Infinity|NaN)$/, whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\n return function(x, str, isNum, b) {\n var base, s = isNum ? str : str.replace(whitespaceOrPlus, \"\");\n if (isInfinityOrNaN.test(s)) {\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\n } else {\n if (!isNum) {\n s = s.replace(basePrefix, function(m, p1, p2) {\n base = (p2 = p2.toLowerCase()) == \"x\" ? 16 : p2 == \"b\" ? 2 : 8;\n return !b || b == base ? p1 : m;\n });\n if (b) {\n base = b;\n s = s.replace(dotAfter, \"$1\").replace(dotBefore, \"0.$1\");\n }\n if (str != s) return new BigNumber2(s, base);\n }\n if (BigNumber2.DEBUG) {\n throw Error(bignumberError + \"Not a\" + (b ? \" base \" + b : \"\") + \" number: \" + str);\n }\n x.s = null;\n }\n x.c = x.e = null;\n };\n }();\n function round(x, sd, rm, r) {\n var d, i, j, k, n, ni, rd, xc = x.c, pows10 = POWS_TEN;\n if (xc) {\n out: {\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++) ;\n i = sd - d;\n if (i < 0) {\n i += LOG_BASE;\n j = sd;\n n = xc[ni = 0];\n rd = mathfloor(n / pows10[d - j - 1] % 10);\n } else {\n ni = mathceil((i + 1) / LOG_BASE);\n if (ni >= xc.length) {\n if (r) {\n for (; xc.length <= ni; xc.push(0)) ;\n n = rd = 0;\n d = 1;\n i %= LOG_BASE;\n j = i - LOG_BASE + 1;\n } else {\n break out;\n }\n } else {\n n = k = xc[ni];\n for (d = 1; k >= 10; k /= 10, d++) ;\n i %= LOG_BASE;\n j = i - LOG_BASE + d;\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\n }\n }\n r = r || sd < 0 || // Are there any non-zero digits after the rounding digit?\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\n r = rm < 4 ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 && // Check whether the digit to the left of the rounding digit is odd.\n (i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7));\n if (sd < 1 || !xc[0]) {\n xc.length = 0;\n if (r) {\n sd -= x.e + 1;\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\n x.e = -sd || 0;\n } else {\n xc[0] = x.e = 0;\n }\n return x;\n }\n if (i == 0) {\n xc.length = ni;\n k = 1;\n ni--;\n } else {\n xc.length = ni + 1;\n k = pows10[LOG_BASE - i];\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\n }\n if (r) {\n for (; ; ) {\n if (ni == 0) {\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++) ;\n j = xc[0] += k;\n for (k = 1; j >= 10; j /= 10, k++) ;\n if (i != k) {\n x.e++;\n if (xc[0] == BASE) xc[0] = 1;\n }\n break;\n } else {\n xc[ni] += k;\n if (xc[ni] != BASE) break;\n xc[ni--] = 0;\n k = 1;\n }\n }\n }\n for (i = xc.length; xc[--i] === 0; xc.pop()) ;\n }\n if (x.e > MAX_EXP) {\n x.c = x.e = null;\n } else if (x.e < MIN_EXP) {\n x.c = [x.e = 0];\n }\n }\n return x;\n }\n function valueOf(n) {\n var str, e = n.e;\n if (e === null) return n.toString();\n str = coeffToString(n.c);\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS ? toExponential(str, e) : toFixedPoint(str, e, \"0\");\n return n.s < 0 ? \"-\" + str : str;\n }\n P.absoluteValue = P.abs = function() {\n var x = new BigNumber2(this);\n if (x.s < 0) x.s = 1;\n return x;\n };\n P.comparedTo = function(y, b) {\n return compare(this, new BigNumber2(y, b));\n };\n P.decimalPlaces = P.dp = function(dp, rm) {\n var c, n, v2, x = this;\n if (dp != null) {\n intCheck(dp, 0, MAX);\n if (rm == null) rm = ROUNDING_MODE;\n else intCheck(rm, 0, 8);\n return round(new BigNumber2(x), dp + x.e + 1, rm);\n }\n if (!(c = x.c)) return null;\n n = ((v2 = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\n if (v2 = c[v2]) for (; v2 % 10 == 0; v2 /= 10, n--) ;\n if (n < 0) n = 0;\n return n;\n };\n P.dividedBy = P.div = function(y, b) {\n return div(this, new BigNumber2(y, b), DECIMAL_PLACES, ROUNDING_MODE);\n };\n P.dividedToIntegerBy = P.idiv = function(y, b) {\n return div(this, new BigNumber2(y, b), 0, 1);\n };\n P.exponentiatedBy = P.pow = function(n, m) {\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y, x = this;\n n = new BigNumber2(n);\n if (n.c && !n.isInteger()) {\n throw Error(bignumberError + \"Exponent not an integer: \" + valueOf(n));\n }\n if (m != null) m = new BigNumber2(m);\n nIsBig = n.e > 14;\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\n y = new BigNumber2(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\n return m ? y.mod(m) : y;\n }\n nIsNeg = n.s < 0;\n if (m) {\n if (m.c ? !m.c[0] : !m.s) return new BigNumber2(NaN);\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\n if (isModExp) x = x.mod(m);\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0 ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7 : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\n k = x.s < 0 && isOdd(n) ? -0 : 0;\n if (x.e > -1) k = 1 / k;\n return new BigNumber2(nIsNeg ? 1 / k : k);\n } else if (POW_PRECISION) {\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\n }\n if (nIsBig) {\n half = new BigNumber2(0.5);\n if (nIsNeg) n.s = 1;\n nIsOdd = isOdd(n);\n } else {\n i = Math.abs(+valueOf(n));\n nIsOdd = i % 2;\n }\n y = new BigNumber2(ONE);\n for (; ; ) {\n if (nIsOdd) {\n y = y.times(x);\n if (!y.c) break;\n if (k) {\n if (y.c.length > k) y.c.length = k;\n } else if (isModExp) {\n y = y.mod(m);\n }\n }\n if (i) {\n i = mathfloor(i / 2);\n if (i === 0) break;\n nIsOdd = i % 2;\n } else {\n n = n.times(half);\n round(n, n.e + 1, 1);\n if (n.e > 14) {\n nIsOdd = isOdd(n);\n } else {\n i = +valueOf(n);\n if (i === 0) break;\n nIsOdd = i % 2;\n }\n }\n x = x.times(x);\n if (k) {\n if (x.c && x.c.length > k) x.c.length = k;\n } else if (isModExp) {\n x = x.mod(m);\n }\n }\n if (isModExp) return y;\n if (nIsNeg) y = ONE.div(y);\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\n };\n P.integerValue = function(rm) {\n var n = new BigNumber2(this);\n if (rm == null) rm = ROUNDING_MODE;\n else intCheck(rm, 0, 8);\n return round(n, n.e + 1, rm);\n };\n P.isEqualTo = P.eq = function(y, b) {\n return compare(this, new BigNumber2(y, b)) === 0;\n };\n P.isFinite = function() {\n return !!this.c;\n };\n P.isGreaterThan = P.gt = function(y, b) {\n return compare(this, new BigNumber2(y, b)) > 0;\n };\n P.isGreaterThanOrEqualTo = P.gte = function(y, b) {\n return (b = compare(this, new BigNumber2(y, b))) === 1 || b === 0;\n };\n P.isInteger = function() {\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\n };\n P.isLessThan = P.lt = function(y, b) {\n return compare(this, new BigNumber2(y, b)) < 0;\n };\n P.isLessThanOrEqualTo = P.lte = function(y, b) {\n return (b = compare(this, new BigNumber2(y, b))) === -1 || b === 0;\n };\n P.isNaN = function() {\n return !this.s;\n };\n P.isNegative = function() {\n return this.s < 0;\n };\n P.isPositive = function() {\n return this.s > 0;\n };\n P.isZero = function() {\n return !!this.c && this.c[0] == 0;\n };\n P.minus = function(y, b) {\n var i, j, t, xLTy, x = this, a = x.s;\n y = new BigNumber2(y, b);\n b = y.s;\n if (!a || !b) return new BigNumber2(NaN);\n if (a != b) {\n y.s = -b;\n return x.plus(y);\n }\n var xe = x.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x.c, yc = y.c;\n if (!xe || !ye) {\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber2(yc ? x : NaN);\n if (!xc[0] || !yc[0]) {\n return yc[0] ? (y.s = -b, y) : new BigNumber2(xc[0] ? x : (\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\n ROUNDING_MODE == 3 ? -0 : 0\n ));\n }\n }\n xe = bitFloor(xe);\n ye = bitFloor(ye);\n xc = xc.slice();\n if (a = xe - ye) {\n if (xLTy = a < 0) {\n a = -a;\n t = xc;\n } else {\n ye = xe;\n t = yc;\n }\n t.reverse();\n for (b = a; b--; t.push(0)) ;\n t.reverse();\n } else {\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\n for (a = b = 0; b < j; b++) {\n if (xc[b] != yc[b]) {\n xLTy = xc[b] < yc[b];\n break;\n }\n }\n }\n if (xLTy) {\n t = xc;\n xc = yc;\n yc = t;\n y.s = -y.s;\n }\n b = (j = yc.length) - (i = xc.length);\n if (b > 0) for (; b--; xc[i++] = 0) ;\n b = BASE - 1;\n for (; j > a; ) {\n if (xc[--j] < yc[j]) {\n for (i = j; i && !xc[--i]; xc[i] = b) ;\n --xc[i];\n xc[j] += BASE;\n }\n xc[j] -= yc[j];\n }\n for (; xc[0] == 0; xc.splice(0, 1), --ye) ;\n if (!xc[0]) {\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\n y.c = [y.e = 0];\n return y;\n }\n return normalise(y, xc, ye);\n };\n P.modulo = P.mod = function(y, b) {\n var q, s, x = this;\n y = new BigNumber2(y, b);\n if (!x.c || !y.s || y.c && !y.c[0]) {\n return new BigNumber2(NaN);\n } else if (!y.c || x.c && !x.c[0]) {\n return new BigNumber2(x);\n }\n if (MODULO_MODE == 9) {\n s = y.s;\n y.s = 1;\n q = div(x, y, 0, 3);\n y.s = s;\n q.s *= s;\n } else {\n q = div(x, y, 0, MODULO_MODE);\n }\n y = x.minus(q.times(y));\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\n return y;\n };\n P.multipliedBy = P.times = function(y, b) {\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, base, sqrtBase, x = this, xc = x.c, yc = (y = new BigNumber2(y, b)).c;\n if (!xc || !yc || !xc[0] || !yc[0]) {\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\n y.c = y.e = y.s = null;\n } else {\n y.s *= x.s;\n if (!xc || !yc) {\n y.c = y.e = null;\n } else {\n y.c = [0];\n y.e = 0;\n }\n }\n return y;\n }\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\n y.s *= x.s;\n xcL = xc.length;\n ycL = yc.length;\n if (xcL < ycL) {\n zc = xc;\n xc = yc;\n yc = zc;\n i = xcL;\n xcL = ycL;\n ycL = i;\n }\n for (i = xcL + ycL, zc = []; i--; zc.push(0)) ;\n base = BASE;\n sqrtBase = SQRT_BASE;\n for (i = ycL; --i >= 0; ) {\n c = 0;\n ylo = yc[i] % sqrtBase;\n yhi = yc[i] / sqrtBase | 0;\n for (k = xcL, j = i + k; j > i; ) {\n xlo = xc[--k] % sqrtBase;\n xhi = xc[k] / sqrtBase | 0;\n m = yhi * xlo + xhi * ylo;\n xlo = ylo * xlo + m % sqrtBase * sqrtBase + zc[j] + c;\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\n zc[j--] = xlo % base;\n }\n zc[j] = c;\n }\n if (c) {\n ++e;\n } else {\n zc.splice(0, 1);\n }\n return normalise(y, zc, e);\n };\n P.negated = function() {\n var x = new BigNumber2(this);\n x.s = -x.s || null;\n return x;\n };\n P.plus = function(y, b) {\n var t, x = this, a = x.s;\n y = new BigNumber2(y, b);\n b = y.s;\n if (!a || !b) return new BigNumber2(NaN);\n if (a != b) {\n y.s = -b;\n return x.minus(y);\n }\n var xe = x.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x.c, yc = y.c;\n if (!xe || !ye) {\n if (!xc || !yc) return new BigNumber2(a / 0);\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber2(xc[0] ? x : a * 0);\n }\n xe = bitFloor(xe);\n ye = bitFloor(ye);\n xc = xc.slice();\n if (a = xe - ye) {\n if (a > 0) {\n ye = xe;\n t = yc;\n } else {\n a = -a;\n t = xc;\n }\n t.reverse();\n for (; a--; t.push(0)) ;\n t.reverse();\n }\n a = xc.length;\n b = yc.length;\n if (a - b < 0) {\n t = yc;\n yc = xc;\n xc = t;\n b = a;\n }\n for (a = 0; b; ) {\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\n }\n if (a) {\n xc = [a].concat(xc);\n ++ye;\n }\n return normalise(y, xc, ye);\n };\n P.precision = P.sd = function(sd, rm) {\n var c, n, v2, x = this;\n if (sd != null && sd !== !!sd) {\n intCheck(sd, 1, MAX);\n if (rm == null) rm = ROUNDING_MODE;\n else intCheck(rm, 0, 8);\n return round(new BigNumber2(x), sd, rm);\n }\n if (!(c = x.c)) return null;\n v2 = c.length - 1;\n n = v2 * LOG_BASE + 1;\n if (v2 = c[v2]) {\n for (; v2 % 10 == 0; v2 /= 10, n--) ;\n for (v2 = c[0]; v2 >= 10; v2 /= 10, n++) ;\n }\n if (sd && x.e + 1 > n) n = x.e + 1;\n return n;\n };\n P.shiftedBy = function(k) {\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\n return this.times(\"1e\" + k);\n };\n P.squareRoot = P.sqrt = function() {\n var m, n, r, rep, t, x = this, c = x.c, s = x.s, e = x.e, dp = DECIMAL_PLACES + 4, half = new BigNumber2(\"0.5\");\n if (s !== 1 || !c || !c[0]) {\n return new BigNumber2(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\n }\n s = Math.sqrt(+valueOf(x));\n if (s == 0 || s == 1 / 0) {\n n = coeffToString(c);\n if ((n.length + e) % 2 == 0) n += \"0\";\n s = Math.sqrt(+n);\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\n if (s == 1 / 0) {\n n = \"5e\" + e;\n } else {\n n = s.toExponential();\n n = n.slice(0, n.indexOf(\"e\") + 1) + e;\n }\n r = new BigNumber2(n);\n } else {\n r = new BigNumber2(s + \"\");\n }\n if (r.c[0]) {\n e = r.e;\n s = e + dp;\n if (s < 3) s = 0;\n for (; ; ) {\n t = r;\n r = half.times(t.plus(div(x, t, dp, 1)));\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\n if (r.e < e) --s;\n n = n.slice(s - 3, s + 1);\n if (n == \"9999\" || !rep && n == \"4999\") {\n if (!rep) {\n round(t, t.e + DECIMAL_PLACES + 2, 0);\n if (t.times(t).eq(x)) {\n r = t;\n break;\n }\n }\n dp += 4;\n s += 4;\n rep = 1;\n } else {\n if (!+n || !+n.slice(1) && n.charAt(0) == \"5\") {\n round(r, r.e + DECIMAL_PLACES + 2, 1);\n m = !r.times(r).eq(x);\n }\n break;\n }\n }\n }\n }\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\n };\n P.toExponential = function(dp, rm) {\n if (dp != null) {\n intCheck(dp, 0, MAX);\n dp++;\n }\n return format(this, dp, rm, 1);\n };\n P.toFixed = function(dp, rm) {\n if (dp != null) {\n intCheck(dp, 0, MAX);\n dp = dp + this.e + 1;\n }\n return format(this, dp, rm);\n };\n P.toFormat = function(dp, rm, format2) {\n var str, x = this;\n if (format2 == null) {\n if (dp != null && rm && typeof rm == \"object\") {\n format2 = rm;\n rm = null;\n } else if (dp && typeof dp == \"object\") {\n format2 = dp;\n dp = rm = null;\n } else {\n format2 = FORMAT;\n }\n } else if (typeof format2 != \"object\") {\n throw Error(bignumberError + \"Argument not an object: \" + format2);\n }\n str = x.toFixed(dp, rm);\n if (x.c) {\n var i, arr = str.split(\".\"), g1 = +format2.groupSize, g2 = +format2.secondaryGroupSize, groupSeparator = format2.groupSeparator || \"\", intPart = arr[0], fractionPart = arr[1], isNeg = x.s < 0, intDigits = isNeg ? intPart.slice(1) : intPart, len = intDigits.length;\n if (g2) {\n i = g1;\n g1 = g2;\n g2 = i;\n len -= i;\n }\n if (g1 > 0 && len > 0) {\n i = len % g1 || g1;\n intPart = intDigits.substr(0, i);\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\n if (isNeg) intPart = \"-\" + intPart;\n }\n str = fractionPart ? intPart + (format2.decimalSeparator || \"\") + ((g2 = +format2.fractionGroupSize) ? fractionPart.replace(\n new RegExp(\"\\\\d{\" + g2 + \"}\\\\B\", \"g\"),\n \"$&\" + (format2.fractionGroupSeparator || \"\")\n ) : fractionPart) : intPart;\n }\n return (format2.prefix || \"\") + str + (format2.suffix || \"\");\n };\n P.toFraction = function(md) {\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s, x = this, xc = x.c;\n if (md != null) {\n n = new BigNumber2(md);\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\n throw Error(bignumberError + \"Argument \" + (n.isInteger() ? \"out of range: \" : \"not an integer: \") + valueOf(n));\n }\n }\n if (!xc) return new BigNumber2(x);\n d = new BigNumber2(ONE);\n n1 = d0 = new BigNumber2(ONE);\n d1 = n0 = new BigNumber2(ONE);\n s = coeffToString(xc);\n e = d.e = s.length - x.e - 1;\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\n md = !md || n.comparedTo(d) > 0 ? e > 0 ? d : n1 : n;\n exp = MAX_EXP;\n MAX_EXP = 1 / 0;\n n = new BigNumber2(s);\n n0.c[0] = 0;\n for (; ; ) {\n q = div(n, d, 0, 1);\n d2 = d0.plus(q.times(d1));\n if (d2.comparedTo(md) == 1) break;\n d0 = d1;\n d1 = d2;\n n1 = n0.plus(q.times(d2 = n1));\n n0 = d2;\n d = n.minus(q.times(d2 = d));\n n = d2;\n }\n d2 = div(md.minus(d0), d1, 0, 1);\n n0 = n0.plus(d2.times(n1));\n d0 = d0.plus(d2.times(d1));\n n0.s = n1.s = x.s;\n e = e * 2;\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()\n ) < 1 ? [n1, d1] : [n0, d0];\n MAX_EXP = exp;\n return r;\n };\n P.toNumber = function() {\n return +valueOf(this);\n };\n P.toPrecision = function(sd, rm) {\n if (sd != null) intCheck(sd, 1, MAX);\n return format(this, sd, rm, 2);\n };\n P.toString = function(b) {\n var str, n = this, s = n.s, e = n.e;\n if (e === null) {\n if (s) {\n str = \"Infinity\";\n if (s < 0) str = \"-\" + str;\n } else {\n str = \"NaN\";\n }\n } else {\n if (b == null) {\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS ? toExponential(coeffToString(n.c), e) : toFixedPoint(coeffToString(n.c), e, \"0\");\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\n n = round(new BigNumber2(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\n str = toFixedPoint(coeffToString(n.c), n.e, \"0\");\n } else {\n intCheck(b, 2, ALPHABET.length, \"Base\");\n str = convertBase(toFixedPoint(coeffToString(n.c), e, \"0\"), 10, b, s, true);\n }\n if (s < 0 && n.c[0]) str = \"-\" + str;\n }\n return str;\n };\n P.valueOf = P.toJSON = function() {\n return valueOf(this);\n };\n P._isBigNumber = true;\n P[Symbol.toStringTag] = \"BigNumber\";\n P[Symbol.for(\"nodejs.util.inspect.custom\")] = P.valueOf;\n if (configObject != null) BigNumber2.set(configObject);\n return BigNumber2;\n}\nfunction bitFloor(n) {\n var i = n | 0;\n return n > 0 || n === i ? i : i - 1;\n}\nfunction coeffToString(a) {\n var s, z, i = 1, j = a.length, r = a[0] + \"\";\n for (; i < j; ) {\n s = a[i++] + \"\";\n z = LOG_BASE - s.length;\n for (; z--; s = \"0\" + s) ;\n r += s;\n }\n for (j = r.length; r.charCodeAt(--j) === 48; ) ;\n return r.slice(0, j + 1 || 1);\n}\nfunction compare(x, y) {\n var a, b, xc = x.c, yc = y.c, i = x.s, j = y.s, k = x.e, l = y.e;\n if (!i || !j) return null;\n a = xc && !xc[0];\n b = yc && !yc[0];\n if (a || b) return a ? b ? 0 : -j : i;\n if (i != j) return i;\n a = i < 0;\n b = k == l;\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\n if (!b) return k > l ^ a ? 1 : -1;\n j = (k = xc.length) < (l = yc.length) ? k : l;\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\n return k == l ? 0 : k > l ^ a ? 1 : -1;\n}\nfunction intCheck(n, min2, max2, name) {\n if (n < min2 || n > max2 || n !== mathfloor(n)) {\n throw Error(bignumberError + (name || \"Argument\") + (typeof n == \"number\" ? n < min2 || n > max2 ? \" out of range: \" : \" not an integer: \" : \" not a primitive number: \") + String(n));\n }\n}\nfunction isOdd(n) {\n var k = n.c.length - 1;\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\n}\nfunction toExponential(str, e) {\n return (str.length > 1 ? str.charAt(0) + \".\" + str.slice(1) : str) + (e < 0 ? \"e\" : \"e+\") + e;\n}\nfunction toFixedPoint(str, e, z) {\n var len, zs;\n if (e < 0) {\n for (zs = z + \".\"; ++e; zs += z) ;\n str = zs + str;\n } else {\n len = str.length;\n if (++e > len) {\n for (zs = z, e -= len; --e; zs += z) ;\n str += zs;\n } else if (e < len) {\n str = str.slice(0, e) + \".\" + str.slice(e);\n }\n }\n return str;\n}\nvar BigNumber = clone2();\nvar bignumber_default = BigNumber;\n\n// node_modules/splaytree-ts/dist/esm/index.js\nvar SplayTreeNode = class {\n constructor(key) {\n __publicField(this, \"key\");\n __publicField(this, \"left\", null);\n __publicField(this, \"right\", null);\n this.key = key;\n }\n};\nvar SplayTreeSetNode = class extends SplayTreeNode {\n constructor(key) {\n super(key);\n }\n};\nvar SplayTree = class {\n constructor() {\n __publicField(this, \"size\", 0);\n __publicField(this, \"modificationCount\", 0);\n __publicField(this, \"splayCount\", 0);\n }\n splay(key) {\n const root = this.root;\n if (root == null) {\n this.compare(key, key);\n return -1;\n }\n let right = null;\n let newTreeRight = null;\n let left = null;\n let newTreeLeft = null;\n let current = root;\n const compare2 = this.compare;\n let comp;\n while (true) {\n comp = compare2(current.key, key);\n if (comp > 0) {\n let currentLeft = current.left;\n if (currentLeft == null) break;\n comp = compare2(currentLeft.key, key);\n if (comp > 0) {\n current.left = currentLeft.right;\n currentLeft.right = current;\n current = currentLeft;\n currentLeft = current.left;\n if (currentLeft == null) break;\n }\n if (right == null) {\n newTreeRight = current;\n } else {\n right.left = current;\n }\n right = current;\n current = currentLeft;\n } else if (comp < 0) {\n let currentRight = current.right;\n if (currentRight == null) break;\n comp = compare2(currentRight.key, key);\n if (comp < 0) {\n current.right = currentRight.left;\n currentRight.left = current;\n current = currentRight;\n currentRight = current.right;\n if (currentRight == null) break;\n }\n if (left == null) {\n newTreeLeft = current;\n } else {\n left.right = current;\n }\n left = current;\n current = currentRight;\n } else {\n break;\n }\n }\n if (left != null) {\n left.right = current.left;\n current.left = newTreeLeft;\n }\n if (right != null) {\n right.left = current.right;\n current.right = newTreeRight;\n }\n if (this.root !== current) {\n this.root = current;\n this.splayCount++;\n }\n return comp;\n }\n splayMin(node) {\n let current = node;\n let nextLeft = current.left;\n while (nextLeft != null) {\n const left = nextLeft;\n current.left = left.right;\n left.right = current;\n current = left;\n nextLeft = current.left;\n }\n return current;\n }\n splayMax(node) {\n let current = node;\n let nextRight = current.right;\n while (nextRight != null) {\n const right = nextRight;\n current.right = right.left;\n right.left = current;\n current = right;\n nextRight = current.right;\n }\n return current;\n }\n _delete(key) {\n if (this.root == null) return null;\n const comp = this.splay(key);\n if (comp != 0) return null;\n let root = this.root;\n const result = root;\n const left = root.left;\n this.size--;\n if (left == null) {\n this.root = root.right;\n } else {\n const right = root.right;\n root = this.splayMax(left);\n root.right = right;\n this.root = root;\n }\n this.modificationCount++;\n return result;\n }\n addNewRoot(node, comp) {\n this.size++;\n this.modificationCount++;\n const root = this.root;\n if (root == null) {\n this.root = node;\n return;\n }\n if (comp < 0) {\n node.left = root;\n node.right = root.right;\n root.right = null;\n } else {\n node.right = root;\n node.left = root.left;\n root.left = null;\n }\n this.root = node;\n }\n _first() {\n const root = this.root;\n if (root == null) return null;\n this.root = this.splayMin(root);\n return this.root;\n }\n _last() {\n const root = this.root;\n if (root == null) return null;\n this.root = this.splayMax(root);\n return this.root;\n }\n clear() {\n this.root = null;\n this.size = 0;\n this.modificationCount++;\n }\n has(key) {\n return this.validKey(key) && this.splay(key) == 0;\n }\n defaultCompare() {\n return (a, b) => a < b ? -1 : a > b ? 1 : 0;\n }\n wrap() {\n return {\n getRoot: () => {\n return this.root;\n },\n setRoot: (root) => {\n this.root = root;\n },\n getSize: () => {\n return this.size;\n },\n getModificationCount: () => {\n return this.modificationCount;\n },\n getSplayCount: () => {\n return this.splayCount;\n },\n setSplayCount: (count) => {\n this.splayCount = count;\n },\n splay: (key) => {\n return this.splay(key);\n },\n has: (key) => {\n return this.has(key);\n }\n };\n }\n};\nvar _a, _b;\nvar SplayTreeSet = class _SplayTreeSet extends SplayTree {\n constructor(compare2, isValidKey) {\n super();\n __publicField(this, \"root\", null);\n __publicField(this, \"compare\");\n __publicField(this, \"validKey\");\n __publicField(this, _a, \"[object Set]\");\n this.compare = compare2 ?? this.defaultCompare();\n this.validKey = isValidKey ?? ((v2) => v2 != null && v2 != void 0);\n }\n delete(element) {\n if (!this.validKey(element)) return false;\n return this._delete(element) != null;\n }\n deleteAll(elements) {\n for (const element of elements) {\n this.delete(element);\n }\n }\n forEach(f) {\n const nodes = this[Symbol.iterator]();\n let result;\n while (result = nodes.next(), !result.done) {\n f(result.value, result.value, this);\n }\n }\n add(element) {\n const compare2 = this.splay(element);\n if (compare2 != 0) this.addNewRoot(new SplayTreeSetNode(element), compare2);\n return this;\n }\n addAndReturn(element) {\n const compare2 = this.splay(element);\n if (compare2 != 0) this.addNewRoot(new SplayTreeSetNode(element), compare2);\n return this.root.key;\n }\n addAll(elements) {\n for (const element of elements) {\n this.add(element);\n }\n }\n isEmpty() {\n return this.root == null;\n }\n isNotEmpty() {\n return this.root != null;\n }\n single() {\n if (this.size == 0) throw \"Bad state: No element\";\n if (this.size > 1) throw \"Bad state: Too many element\";\n return this.root.key;\n }\n first() {\n if (this.size == 0) throw \"Bad state: No element\";\n return this._first().key;\n }\n last() {\n if (this.size == 0) throw \"Bad state: No element\";\n return this._last().key;\n }\n lastBefore(element) {\n if (element == null) throw \"Invalid arguments(s)\";\n if (this.root == null) return null;\n const comp = this.splay(element);\n if (comp < 0) return this.root.key;\n let node = this.root.left;\n if (node == null) return null;\n let nodeRight = node.right;\n while (nodeRight != null) {\n node = nodeRight;\n nodeRight = node.right;\n }\n return node.key;\n }\n firstAfter(element) {\n if (element == null) throw \"Invalid arguments(s)\";\n if (this.root == null) return null;\n const comp = this.splay(element);\n if (comp > 0) return this.root.key;\n let node = this.root.right;\n if (node == null) return null;\n let nodeLeft = node.left;\n while (nodeLeft != null) {\n node = nodeLeft;\n nodeLeft = node.left;\n }\n return node.key;\n }\n retainAll(elements) {\n const retainSet = new _SplayTreeSet(this.compare, this.validKey);\n const modificationCount = this.modificationCount;\n for (const object of elements) {\n if (modificationCount != this.modificationCount) {\n throw \"Concurrent modification during iteration.\";\n }\n if (this.validKey(object) && this.splay(object) == 0) {\n retainSet.add(this.root.key);\n }\n }\n if (retainSet.size != this.size) {\n this.root = retainSet.root;\n this.size = retainSet.size;\n this.modificationCount++;\n }\n }\n lookup(object) {\n if (!this.validKey(object)) return null;\n const comp = this.splay(object);\n if (comp != 0) return null;\n return this.root.key;\n }\n intersection(other) {\n const result = new _SplayTreeSet(this.compare, this.validKey);\n for (const element of this) {\n if (other.has(element)) result.add(element);\n }\n return result;\n }\n difference(other) {\n const result = new _SplayTreeSet(this.compare, this.validKey);\n for (const element of this) {\n if (!other.has(element)) result.add(element);\n }\n return result;\n }\n union(other) {\n const u4 = this.clone();\n u4.addAll(other);\n return u4;\n }\n clone() {\n const set2 = new _SplayTreeSet(this.compare, this.validKey);\n set2.size = this.size;\n set2.root = this.copyNode(this.root);\n return set2;\n }\n copyNode(node) {\n if (node == null) return null;\n function copyChildren(node2, dest) {\n let left;\n let right;\n do {\n left = node2.left;\n right = node2.right;\n if (left != null) {\n const newLeft = new SplayTreeSetNode(left.key);\n dest.left = newLeft;\n copyChildren(left, newLeft);\n }\n if (right != null) {\n const newRight = new SplayTreeSetNode(right.key);\n dest.right = newRight;\n node2 = right;\n dest = newRight;\n }\n } while (right != null);\n }\n const result = new SplayTreeSetNode(node.key);\n copyChildren(node, result);\n return result;\n }\n toSet() {\n return this.clone();\n }\n entries() {\n return new SplayTreeSetEntryIterableIterator(this.wrap());\n }\n keys() {\n return this[Symbol.iterator]();\n }\n values() {\n return this[Symbol.iterator]();\n }\n [(_b = Symbol.iterator, _a = Symbol.toStringTag, _b)]() {\n return new SplayTreeKeyIterableIterator(this.wrap());\n }\n};\nvar SplayTreeIterableIterator = class {\n constructor(tree) {\n __publicField(this, \"tree\");\n __publicField(this, \"path\", new Array());\n __publicField(this, \"modificationCount\", null);\n __publicField(this, \"splayCount\");\n this.tree = tree;\n this.splayCount = tree.getSplayCount();\n }\n [Symbol.iterator]() {\n return this;\n }\n next() {\n if (this.moveNext()) return { done: false, value: this.current() };\n return { done: true, value: null };\n }\n current() {\n if (!this.path.length) return null;\n const node = this.path[this.path.length - 1];\n return this.getValue(node);\n }\n rebuildPath(key) {\n this.path.splice(0, this.path.length);\n this.tree.splay(key);\n this.path.push(this.tree.getRoot());\n this.splayCount = this.tree.getSplayCount();\n }\n findLeftMostDescendent(node) {\n while (node != null) {\n this.path.push(node);\n node = node.left;\n }\n }\n moveNext() {\n if (this.modificationCount != this.tree.getModificationCount()) {\n if (this.modificationCount == null) {\n this.modificationCount = this.tree.getModificationCount();\n let node2 = this.tree.getRoot();\n while (node2 != null) {\n this.path.push(node2);\n node2 = node2.left;\n }\n return this.path.length > 0;\n }\n throw \"Concurrent modification during iteration.\";\n }\n if (!this.path.length) return false;\n if (this.splayCount != this.tree.getSplayCount()) {\n this.rebuildPath(this.path[this.path.length - 1].key);\n }\n let node = this.path[this.path.length - 1];\n let next = node.right;\n if (next != null) {\n while (next != null) {\n this.path.push(next);\n next = next.left;\n }\n return true;\n }\n this.path.pop();\n while (this.path.length && this.path[this.path.length - 1].right === node) {\n node = this.path.pop();\n }\n return this.path.length > 0;\n }\n};\nvar SplayTreeKeyIterableIterator = class extends SplayTreeIterableIterator {\n getValue(node) {\n return node.key;\n }\n};\nvar SplayTreeSetEntryIterableIterator = class extends SplayTreeIterableIterator {\n getValue(node) {\n return [node.key, node.key];\n }\n};\n\n// node_modules/polyclip-ts/dist/esm/index.js\nvar constant_default = (x) => {\n return () => {\n return x;\n };\n};\nvar compare_default = (eps) => {\n const almostEqual = eps ? (a, b) => b.minus(a).abs().isLessThanOrEqualTo(eps) : constant_default(false);\n return (a, b) => {\n if (almostEqual(a, b)) return 0;\n return a.comparedTo(b);\n };\n};\nfunction orient_default(eps) {\n const almostCollinear = eps ? (area2, ax, ay, cx, cy) => area2.exponentiatedBy(2).isLessThanOrEqualTo(\n cx.minus(ax).exponentiatedBy(2).plus(cy.minus(ay).exponentiatedBy(2)).times(eps)\n ) : constant_default(false);\n return (a, b, c) => {\n const ax = a.x, ay = a.y, cx = c.x, cy = c.y;\n const area2 = ay.minus(cy).times(b.x.minus(cx)).minus(ax.minus(cx).times(b.y.minus(cy)));\n if (almostCollinear(area2, ax, ay, cx, cy)) return 0;\n return area2.comparedTo(0);\n };\n}\nvar identity_default = (x) => {\n return x;\n};\nvar snap_default = (eps) => {\n if (eps) {\n const xTree = new SplayTreeSet(compare_default(eps));\n const yTree = new SplayTreeSet(compare_default(eps));\n const snapCoord = (coord, tree) => {\n return tree.addAndReturn(coord);\n };\n const snap = (v2) => {\n return {\n x: snapCoord(v2.x, xTree),\n y: snapCoord(v2.y, yTree)\n };\n };\n snap({ x: new bignumber_default(0), y: new bignumber_default(0) });\n return snap;\n }\n return identity_default;\n};\nvar set = (eps) => {\n return {\n set: (eps2) => {\n precision = set(eps2);\n },\n reset: () => set(eps),\n compare: compare_default(eps),\n snap: snap_default(eps),\n orient: orient_default(eps)\n };\n};\nvar precision = set();\nvar isInBbox = (bbox2, point2) => {\n return bbox2.ll.x.isLessThanOrEqualTo(point2.x) && point2.x.isLessThanOrEqualTo(bbox2.ur.x) && bbox2.ll.y.isLessThanOrEqualTo(point2.y) && point2.y.isLessThanOrEqualTo(bbox2.ur.y);\n};\nvar getBboxOverlap = (b1, b2) => {\n if (b2.ur.x.isLessThan(b1.ll.x) || b1.ur.x.isLessThan(b2.ll.x) || b2.ur.y.isLessThan(b1.ll.y) || b1.ur.y.isLessThan(b2.ll.y))\n return null;\n const lowerX = b1.ll.x.isLessThan(b2.ll.x) ? b2.ll.x : b1.ll.x;\n const upperX = b1.ur.x.isLessThan(b2.ur.x) ? b1.ur.x : b2.ur.x;\n const lowerY = b1.ll.y.isLessThan(b2.ll.y) ? b2.ll.y : b1.ll.y;\n const upperY = b1.ur.y.isLessThan(b2.ur.y) ? b1.ur.y : b2.ur.y;\n return { ll: { x: lowerX, y: lowerY }, ur: { x: upperX, y: upperY } };\n};\nvar crossProduct = (a, b) => a.x.times(b.y).minus(a.y.times(b.x));\nvar dotProduct = (a, b) => a.x.times(b.x).plus(a.y.times(b.y));\nvar length = (v2) => dotProduct(v2, v2).sqrt();\nvar sineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = { x: pBase.x.minus(pShared.x), y: pBase.y.minus(pShared.y) };\n const vAngle = { x: pAngle.x.minus(pShared.x), y: pAngle.y.minus(pShared.y) };\n return crossProduct(vAngle, vBase).div(length(vAngle)).div(length(vBase));\n};\nvar cosineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = { x: pBase.x.minus(pShared.x), y: pBase.y.minus(pShared.y) };\n const vAngle = { x: pAngle.x.minus(pShared.x), y: pAngle.y.minus(pShared.y) };\n return dotProduct(vAngle, vBase).div(length(vAngle)).div(length(vBase));\n};\nvar horizontalIntersection = (pt, v2, y) => {\n if (v2.y.isZero()) return null;\n return { x: pt.x.plus(v2.x.div(v2.y).times(y.minus(pt.y))), y };\n};\nvar verticalIntersection = (pt, v2, x) => {\n if (v2.x.isZero()) return null;\n return { x, y: pt.y.plus(v2.y.div(v2.x).times(x.minus(pt.x))) };\n};\nvar intersection = (pt1, v1, pt2, v2) => {\n if (v1.x.isZero()) return verticalIntersection(pt2, v2, pt1.x);\n if (v2.x.isZero()) return verticalIntersection(pt1, v1, pt2.x);\n if (v1.y.isZero()) return horizontalIntersection(pt2, v2, pt1.y);\n if (v2.y.isZero()) return horizontalIntersection(pt1, v1, pt2.y);\n const kross = crossProduct(v1, v2);\n if (kross.isZero()) return null;\n const ve = { x: pt2.x.minus(pt1.x), y: pt2.y.minus(pt1.y) };\n const d1 = crossProduct(ve, v1).div(kross);\n const d2 = crossProduct(ve, v2).div(kross);\n const x1 = pt1.x.plus(d2.times(v1.x)), x2 = pt2.x.plus(d1.times(v2.x));\n const y1 = pt1.y.plus(d2.times(v1.y)), y2 = pt2.y.plus(d1.times(v2.y));\n const x = x1.plus(x2).div(2);\n const y = y1.plus(y2).div(2);\n return { x, y };\n};\nvar SweepEvent = class _SweepEvent {\n // Warning: 'point' input will be modified and re-used (for performance)\n constructor(point2, isLeft) {\n __publicField(this, \"point\");\n __publicField(this, \"isLeft\");\n __publicField(this, \"segment\");\n __publicField(this, \"otherSE\");\n __publicField(this, \"consumedBy\");\n if (point2.events === void 0) point2.events = [this];\n else point2.events.push(this);\n this.point = point2;\n this.isLeft = isLeft;\n }\n // for ordering sweep events in the sweep event queue\n static compare(a, b) {\n const ptCmp = _SweepEvent.comparePoints(a.point, b.point);\n if (ptCmp !== 0) return ptCmp;\n if (a.point !== b.point) a.link(b);\n if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n return Segment2.compare(a.segment, b.segment);\n }\n // for ordering points in sweep line order\n static comparePoints(aPt, bPt) {\n if (aPt.x.isLessThan(bPt.x)) return -1;\n if (aPt.x.isGreaterThan(bPt.x)) return 1;\n if (aPt.y.isLessThan(bPt.y)) return -1;\n if (aPt.y.isGreaterThan(bPt.y)) return 1;\n return 0;\n }\n link(other) {\n if (other.point === this.point) {\n throw new Error(\"Tried to link already linked events\");\n }\n const otherEvents = other.point.events;\n for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n const evt = otherEvents[i];\n this.point.events.push(evt);\n evt.point = this.point;\n }\n this.checkForConsuming();\n }\n /* Do a pass over our linked events and check to see if any pair\n * of segments match, and should be consumed. */\n checkForConsuming() {\n const numEvents = this.point.events.length;\n for (let i = 0; i < numEvents; i++) {\n const evt1 = this.point.events[i];\n if (evt1.segment.consumedBy !== void 0) continue;\n for (let j = i + 1; j < numEvents; j++) {\n const evt2 = this.point.events[j];\n if (evt2.consumedBy !== void 0) continue;\n if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n evt1.segment.consume(evt2.segment);\n }\n }\n }\n getAvailableLinkedEvents() {\n const events = [];\n for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n const evt = this.point.events[i];\n if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n events.push(evt);\n }\n }\n return events;\n }\n /**\n * Returns a comparator function for sorting linked events that will\n * favor the event that will give us the smallest left-side angle.\n * All ring construction starts as low as possible heading to the right,\n * so by always turning left as sharp as possible we'll get polygons\n * without uncessary loops & holes.\n *\n * The comparator function has a compute cache such that it avoids\n * re-computing already-computed values.\n */\n getLeftmostComparator(baseEvent) {\n const cache = /* @__PURE__ */ new Map();\n const fillCache = (linkedEvent) => {\n const nextEvent = linkedEvent.otherSE;\n cache.set(linkedEvent, {\n sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n });\n };\n return (a, b) => {\n if (!cache.has(a)) fillCache(a);\n if (!cache.has(b)) fillCache(b);\n const { sine: asine, cosine: acosine } = cache.get(a);\n const { sine: bsine, cosine: bcosine } = cache.get(b);\n if (asine.isGreaterThanOrEqualTo(0) && bsine.isGreaterThanOrEqualTo(0)) {\n if (acosine.isLessThan(bcosine)) return 1;\n if (acosine.isGreaterThan(bcosine)) return -1;\n return 0;\n }\n if (asine.isLessThan(0) && bsine.isLessThan(0)) {\n if (acosine.isLessThan(bcosine)) return -1;\n if (acosine.isGreaterThan(bcosine)) return 1;\n return 0;\n }\n if (bsine.isLessThan(asine)) return -1;\n if (bsine.isGreaterThan(asine)) return 1;\n return 0;\n };\n }\n};\nvar RingOut = class _RingOut {\n constructor(events) {\n __publicField(this, \"events\");\n __publicField(this, \"poly\");\n __publicField(this, \"_isExteriorRing\");\n __publicField(this, \"_enclosingRing\");\n this.events = events;\n for (let i = 0, iMax = events.length; i < iMax; i++) {\n events[i].segment.ringOut = this;\n }\n this.poly = null;\n }\n /* Given the segments from the sweep line pass, compute & return a series\n * of closed rings from all the segments marked to be part of the result */\n static factory(allSegments) {\n const ringsOut = [];\n for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n const segment = allSegments[i];\n if (!segment.isInResult() || segment.ringOut) continue;\n let prevEvent = null;\n let event = segment.leftSE;\n let nextEvent = segment.rightSE;\n const events = [event];\n const startingPoint = event.point;\n const intersectionLEs = [];\n while (true) {\n prevEvent = event;\n event = nextEvent;\n events.push(event);\n if (event.point === startingPoint) break;\n while (true) {\n const availableLEs = event.getAvailableLinkedEvents();\n if (availableLEs.length === 0) {\n const firstPt = events[0].point;\n const lastPt = events[events.length - 1].point;\n throw new Error(\n `Unable to complete output ring starting at [${firstPt.x}, ${firstPt.y}]. Last matching segment found ends at [${lastPt.x}, ${lastPt.y}].`\n );\n }\n if (availableLEs.length === 1) {\n nextEvent = availableLEs[0].otherSE;\n break;\n }\n let indexLE = null;\n for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n if (intersectionLEs[j].point === event.point) {\n indexLE = j;\n break;\n }\n }\n if (indexLE !== null) {\n const intersectionLE = intersectionLEs.splice(indexLE)[0];\n const ringEvents = events.splice(intersectionLE.index);\n ringEvents.unshift(ringEvents[0].otherSE);\n ringsOut.push(new _RingOut(ringEvents.reverse()));\n continue;\n }\n intersectionLEs.push({\n index: events.length,\n point: event.point\n });\n const comparator = event.getLeftmostComparator(prevEvent);\n nextEvent = availableLEs.sort(comparator)[0].otherSE;\n break;\n }\n }\n ringsOut.push(new _RingOut(events));\n }\n return ringsOut;\n }\n getGeom() {\n let prevPt = this.events[0].point;\n const points = [prevPt];\n for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n const pt2 = this.events[i].point;\n const nextPt2 = this.events[i + 1].point;\n if (precision.orient(pt2, prevPt, nextPt2) === 0) continue;\n points.push(pt2);\n prevPt = pt2;\n }\n if (points.length === 1) return null;\n const pt = points[0];\n const nextPt = points[1];\n if (precision.orient(pt, prevPt, nextPt) === 0) points.shift();\n points.push(points[0]);\n const step = this.isExteriorRing() ? 1 : -1;\n const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n const iEnd = this.isExteriorRing() ? points.length : -1;\n const orderedPoints = [];\n for (let i = iStart; i != iEnd; i += step)\n orderedPoints.push([points[i].x.toNumber(), points[i].y.toNumber()]);\n return orderedPoints;\n }\n isExteriorRing() {\n if (this._isExteriorRing === void 0) {\n const enclosing = this.enclosingRing();\n this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n }\n return this._isExteriorRing;\n }\n enclosingRing() {\n if (this._enclosingRing === void 0) {\n this._enclosingRing = this._calcEnclosingRing();\n }\n return this._enclosingRing;\n }\n /* Returns the ring that encloses this one, if any */\n _calcEnclosingRing() {\n let leftMostEvt = this.events[0];\n for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n const evt = this.events[i];\n if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n }\n let prevSeg = leftMostEvt.segment.prevInResult();\n let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n while (true) {\n if (!prevSeg) return null;\n if (!prevPrevSeg) return prevSeg.ringOut;\n if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n if (prevPrevSeg.ringOut?.enclosingRing() !== prevSeg.ringOut) {\n return prevSeg.ringOut;\n } else return prevSeg.ringOut?.enclosingRing();\n }\n prevSeg = prevPrevSeg.prevInResult();\n prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n }\n }\n};\nvar PolyOut = class {\n constructor(exteriorRing) {\n __publicField(this, \"exteriorRing\");\n __publicField(this, \"interiorRings\");\n this.exteriorRing = exteriorRing;\n exteriorRing.poly = this;\n this.interiorRings = [];\n }\n addInterior(ring) {\n this.interiorRings.push(ring);\n ring.poly = this;\n }\n getGeom() {\n const geom0 = this.exteriorRing.getGeom();\n if (geom0 === null) return null;\n const geom = [geom0];\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringGeom = this.interiorRings[i].getGeom();\n if (ringGeom === null) continue;\n geom.push(ringGeom);\n }\n return geom;\n }\n};\nvar MultiPolyOut = class {\n constructor(rings) {\n __publicField(this, \"rings\");\n __publicField(this, \"polys\");\n this.rings = rings;\n this.polys = this._composePolys(rings);\n }\n getGeom() {\n const geom = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polyGeom = this.polys[i].getGeom();\n if (polyGeom === null) continue;\n geom.push(polyGeom);\n }\n return geom;\n }\n _composePolys(rings) {\n const polys = [];\n for (let i = 0, iMax = rings.length; i < iMax; i++) {\n const ring = rings[i];\n if (ring.poly) continue;\n if (ring.isExteriorRing()) polys.push(new PolyOut(ring));\n else {\n const enclosingRing = ring.enclosingRing();\n if (!enclosingRing?.poly) polys.push(new PolyOut(enclosingRing));\n enclosingRing?.poly?.addInterior(ring);\n }\n }\n return polys;\n }\n};\nvar SweepLine = class {\n constructor(queue, comparator = Segment2.compare) {\n __publicField(this, \"queue\");\n __publicField(this, \"tree\");\n __publicField(this, \"segments\");\n this.queue = queue;\n this.tree = new SplayTreeSet(comparator);\n this.segments = [];\n }\n process(event) {\n const segment = event.segment;\n const newEvents = [];\n if (event.consumedBy) {\n if (event.isLeft) this.queue.delete(event.otherSE);\n else this.tree.delete(segment);\n return newEvents;\n }\n if (event.isLeft) this.tree.add(segment);\n let prevSeg = segment;\n let nextSeg = segment;\n do {\n prevSeg = this.tree.lastBefore(prevSeg);\n } while (prevSeg != null && prevSeg.consumedBy != void 0);\n do {\n nextSeg = this.tree.firstAfter(nextSeg);\n } while (nextSeg != null && nextSeg.consumedBy != void 0);\n if (event.isLeft) {\n let prevMySplitter = null;\n if (prevSeg) {\n const prevInter = prevSeg.getIntersection(segment);\n if (prevInter !== null) {\n if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n if (!prevSeg.isAnEndpoint(prevInter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n let nextMySplitter = null;\n if (nextSeg) {\n const nextInter = nextSeg.getIntersection(segment);\n if (nextInter !== null) {\n if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n if (!nextSeg.isAnEndpoint(nextInter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n if (prevMySplitter !== null || nextMySplitter !== null) {\n let mySplitter = null;\n if (prevMySplitter === null) mySplitter = nextMySplitter;\n else if (nextMySplitter === null) mySplitter = prevMySplitter;\n else {\n const cmpSplitters = SweepEvent.comparePoints(\n prevMySplitter,\n nextMySplitter\n );\n mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n }\n this.queue.delete(segment.rightSE);\n newEvents.push(segment.rightSE);\n const newEventsFromSplit = segment.split(mySplitter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (newEvents.length > 0) {\n this.tree.delete(segment);\n newEvents.push(event);\n } else {\n this.segments.push(segment);\n segment.prev = prevSeg;\n }\n } else {\n if (prevSeg && nextSeg) {\n const inter = prevSeg.getIntersection(nextSeg);\n if (inter !== null) {\n if (!prevSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (!nextSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n this.tree.delete(segment);\n }\n return newEvents;\n }\n /* Safely split a segment that is currently in the datastructures\n * IE - a segment other than the one that is currently being processed. */\n _splitSafely(seg, pt) {\n this.tree.delete(seg);\n const rightSE = seg.rightSE;\n this.queue.delete(rightSE);\n const newEvents = seg.split(pt);\n newEvents.push(rightSE);\n if (seg.consumedBy === void 0) this.tree.add(seg);\n return newEvents;\n }\n};\nvar Operation = class {\n constructor() {\n __publicField(this, \"type\");\n __publicField(this, \"numMultiPolys\");\n }\n run(type, geom, moreGeoms) {\n operation.type = type;\n const multipolys = [new MultiPolyIn(geom, true)];\n for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n }\n operation.numMultiPolys = multipolys.length;\n if (operation.type === \"difference\") {\n const subject = multipolys[0];\n let i = 1;\n while (i < multipolys.length) {\n if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;\n else multipolys.splice(i, 1);\n }\n }\n if (operation.type === \"intersection\") {\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const mpA = multipolys[i];\n for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n }\n }\n }\n const queue = new SplayTreeSet(SweepEvent.compare);\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const sweepEvents = multipolys[i].getSweepEvents();\n for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n queue.add(sweepEvents[j]);\n }\n }\n const sweepLine = new SweepLine(queue);\n let evt = null;\n if (queue.size != 0) {\n evt = queue.first();\n queue.delete(evt);\n }\n while (evt) {\n const newEvents = sweepLine.process(evt);\n for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n const evt2 = newEvents[i];\n if (evt2.consumedBy === void 0) queue.add(evt2);\n }\n if (queue.size != 0) {\n evt = queue.first();\n queue.delete(evt);\n } else {\n evt = null;\n }\n }\n precision.reset();\n const ringsOut = RingOut.factory(sweepLine.segments);\n const result = new MultiPolyOut(ringsOut);\n return result.getGeom();\n }\n};\nvar operation = new Operation();\nvar operation_default = operation;\nvar segmentId = 0;\nvar Segment2 = class _Segment {\n /* Warning: a reference to ringWindings input will be stored,\n * and possibly will be later modified */\n constructor(leftSE, rightSE, rings, windings) {\n __publicField(this, \"id\");\n __publicField(this, \"leftSE\");\n __publicField(this, \"rightSE\");\n __publicField(this, \"rings\");\n __publicField(this, \"windings\");\n __publicField(this, \"ringOut\");\n __publicField(this, \"consumedBy\");\n __publicField(this, \"prev\");\n __publicField(this, \"_prevInResult\");\n __publicField(this, \"_beforeState\");\n __publicField(this, \"_afterState\");\n __publicField(this, \"_isInResult\");\n this.id = ++segmentId;\n this.leftSE = leftSE;\n leftSE.segment = this;\n leftSE.otherSE = rightSE;\n this.rightSE = rightSE;\n rightSE.segment = this;\n rightSE.otherSE = leftSE;\n this.rings = rings;\n this.windings = windings;\n }\n /* This compare() function is for ordering segments in the sweep\n * line tree, and does so according to the following criteria:\n *\n * Consider the vertical line that lies an infinestimal step to the\n * right of the right-more of the two left endpoints of the input\n * segments. Imagine slowly moving a point up from negative infinity\n * in the increasing y direction. Which of the two segments will that\n * point intersect first? That segment comes 'before' the other one.\n *\n * If neither segment would be intersected by such a line, (if one\n * or more of the segments are vertical) then the line to be considered\n * is directly on the right-more of the two left inputs.\n */\n static compare(a, b) {\n const alx = a.leftSE.point.x;\n const blx = b.leftSE.point.x;\n const arx = a.rightSE.point.x;\n const brx = b.rightSE.point.x;\n if (brx.isLessThan(alx)) return 1;\n if (arx.isLessThan(blx)) return -1;\n const aly = a.leftSE.point.y;\n const bly = b.leftSE.point.y;\n const ary = a.rightSE.point.y;\n const bry = b.rightSE.point.y;\n if (alx.isLessThan(blx)) {\n if (bly.isLessThan(aly) && bly.isLessThan(ary)) return 1;\n if (bly.isGreaterThan(aly) && bly.isGreaterThan(ary)) return -1;\n const aCmpBLeft = a.comparePoint(b.leftSE.point);\n if (aCmpBLeft < 0) return 1;\n if (aCmpBLeft > 0) return -1;\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n return -1;\n }\n if (alx.isGreaterThan(blx)) {\n if (aly.isLessThan(bly) && aly.isLessThan(bry)) return -1;\n if (aly.isGreaterThan(bly) && aly.isGreaterThan(bry)) return 1;\n const bCmpALeft = b.comparePoint(a.leftSE.point);\n if (bCmpALeft !== 0) return bCmpALeft;\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n return 1;\n }\n if (aly.isLessThan(bly)) return -1;\n if (aly.isGreaterThan(bly)) return 1;\n if (arx.isLessThan(brx)) {\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n }\n if (arx.isGreaterThan(brx)) {\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n }\n if (!arx.eq(brx)) {\n const ay = ary.minus(aly);\n const ax = arx.minus(alx);\n const by = bry.minus(bly);\n const bx = brx.minus(blx);\n if (ay.isGreaterThan(ax) && by.isLessThan(bx)) return 1;\n if (ay.isLessThan(ax) && by.isGreaterThan(bx)) return -1;\n }\n if (arx.isGreaterThan(brx)) return 1;\n if (arx.isLessThan(brx)) return -1;\n if (ary.isLessThan(bry)) return -1;\n if (ary.isGreaterThan(bry)) return 1;\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n return 0;\n }\n static fromRing(pt1, pt2, ring) {\n let leftPt, rightPt, winding;\n const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n if (cmpPts < 0) {\n leftPt = pt1;\n rightPt = pt2;\n winding = 1;\n } else if (cmpPts > 0) {\n leftPt = pt2;\n rightPt = pt1;\n winding = -1;\n } else\n throw new Error(\n `Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`\n );\n const leftSE = new SweepEvent(leftPt, true);\n const rightSE = new SweepEvent(rightPt, false);\n return new _Segment(leftSE, rightSE, [ring], [winding]);\n }\n /* When a segment is split, the rightSE is replaced with a new sweep event */\n replaceRightSE(newRightSE) {\n this.rightSE = newRightSE;\n this.rightSE.segment = this;\n this.rightSE.otherSE = this.leftSE;\n this.leftSE.otherSE = this.rightSE;\n }\n bbox() {\n const y1 = this.leftSE.point.y;\n const y2 = this.rightSE.point.y;\n return {\n ll: { x: this.leftSE.point.x, y: y1.isLessThan(y2) ? y1 : y2 },\n ur: { x: this.rightSE.point.x, y: y1.isGreaterThan(y2) ? y1 : y2 }\n };\n }\n /* A vector from the left point to the right */\n vector() {\n return {\n x: this.rightSE.point.x.minus(this.leftSE.point.x),\n y: this.rightSE.point.y.minus(this.leftSE.point.y)\n };\n }\n isAnEndpoint(pt) {\n return pt.x.eq(this.leftSE.point.x) && pt.y.eq(this.leftSE.point.y) || pt.x.eq(this.rightSE.point.x) && pt.y.eq(this.rightSE.point.y);\n }\n /* Compare this segment with a point.\n *\n * A point P is considered to be colinear to a segment if there\n * exists a distance D such that if we travel along the segment\n * from one * endpoint towards the other a distance D, we find\n * ourselves at point P.\n *\n * Return value indicates:\n *\n * 1: point lies above the segment (to the left of vertical)\n * 0: point is colinear to segment\n * -1: point lies below the segment (to the right of vertical)\n */\n comparePoint(point2) {\n return precision.orient(this.leftSE.point, point2, this.rightSE.point);\n }\n /**\n * Given another segment, returns the first non-trivial intersection\n * between the two segments (in terms of sweep line ordering), if it exists.\n *\n * A 'non-trivial' intersection is one that will cause one or both of the\n * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n *\n * * endpoint of segA with endpoint of segB --> trivial\n * * endpoint of segA with point along segB --> non-trivial\n * * endpoint of segB with point along segA --> non-trivial\n * * point along segA with point along segB --> non-trivial\n *\n * If no non-trivial intersection exists, return null\n * Else, return null.\n */\n getIntersection(other) {\n const tBbox = this.bbox();\n const oBbox = other.bbox();\n const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n if (bboxOverlap === null) return null;\n const tlp = this.leftSE.point;\n const trp = this.rightSE.point;\n const olp = other.leftSE.point;\n const orp = other.rightSE.point;\n const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n if (touchesThisLSE && touchesOtherLSE) {\n if (touchesThisRSE && !touchesOtherRSE) return trp;\n if (!touchesThisRSE && touchesOtherRSE) return orp;\n return null;\n }\n if (touchesThisLSE) {\n if (touchesOtherRSE) {\n if (tlp.x.eq(orp.x) && tlp.y.eq(orp.y)) return null;\n }\n return tlp;\n }\n if (touchesOtherLSE) {\n if (touchesThisRSE) {\n if (trp.x.eq(olp.x) && trp.y.eq(olp.y)) return null;\n }\n return olp;\n }\n if (touchesThisRSE && touchesOtherRSE) return null;\n if (touchesThisRSE) return trp;\n if (touchesOtherRSE) return orp;\n const pt = intersection(tlp, this.vector(), olp, other.vector());\n if (pt === null) return null;\n if (!isInBbox(bboxOverlap, pt)) return null;\n return precision.snap(pt);\n }\n /**\n * Split the given segment into multiple segments on the given points.\n * * Each existing segment will retain its leftSE and a new rightSE will be\n * generated for it.\n * * A new segment will be generated which will adopt the original segment's\n * rightSE, and a new leftSE will be generated for it.\n * * If there are more than two points given to split on, new segments\n * in the middle will be generated with new leftSE and rightSE's.\n * * An array of the newly generated SweepEvents will be returned.\n *\n * Warning: input array of points is modified\n */\n split(point2) {\n const newEvents = [];\n const alreadyLinked = point2.events !== void 0;\n const newLeftSE = new SweepEvent(point2, true);\n const newRightSE = new SweepEvent(point2, false);\n const oldRightSE = this.rightSE;\n this.replaceRightSE(newRightSE);\n newEvents.push(newRightSE);\n newEvents.push(newLeftSE);\n const newSeg = new _Segment(\n newLeftSE,\n oldRightSE,\n this.rings.slice(),\n this.windings.slice()\n );\n if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n newSeg.swapEvents();\n }\n if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n this.swapEvents();\n }\n if (alreadyLinked) {\n newLeftSE.checkForConsuming();\n newRightSE.checkForConsuming();\n }\n return newEvents;\n }\n /* Swap which event is left and right */\n swapEvents() {\n const tmpEvt = this.rightSE;\n this.rightSE = this.leftSE;\n this.leftSE = tmpEvt;\n this.leftSE.isLeft = true;\n this.rightSE.isLeft = false;\n for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n this.windings[i] *= -1;\n }\n }\n /* Consume another segment. We take their rings under our wing\n * and mark them as consumed. Use for perfectly overlapping segments */\n consume(other) {\n let consumer = this;\n let consumee = other;\n while (consumer.consumedBy) consumer = consumer.consumedBy;\n while (consumee.consumedBy) consumee = consumee.consumedBy;\n const cmp = _Segment.compare(consumer, consumee);\n if (cmp === 0) return;\n if (cmp > 0) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n if (consumer.prev === consumee) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n const ring = consumee.rings[i];\n const winding = consumee.windings[i];\n const index = consumer.rings.indexOf(ring);\n if (index === -1) {\n consumer.rings.push(ring);\n consumer.windings.push(winding);\n } else consumer.windings[index] += winding;\n }\n consumee.rings = null;\n consumee.windings = null;\n consumee.consumedBy = consumer;\n consumee.leftSE.consumedBy = consumer.leftSE;\n consumee.rightSE.consumedBy = consumer.rightSE;\n }\n /* The first segment previous segment chain that is in the result */\n prevInResult() {\n if (this._prevInResult !== void 0) return this._prevInResult;\n if (!this.prev) this._prevInResult = null;\n else if (this.prev.isInResult()) this._prevInResult = this.prev;\n else this._prevInResult = this.prev.prevInResult();\n return this._prevInResult;\n }\n beforeState() {\n if (this._beforeState !== void 0) return this._beforeState;\n if (!this.prev)\n this._beforeState = {\n rings: [],\n windings: [],\n multiPolys: []\n };\n else {\n const seg = this.prev.consumedBy || this.prev;\n this._beforeState = seg.afterState();\n }\n return this._beforeState;\n }\n afterState() {\n if (this._afterState !== void 0) return this._afterState;\n const beforeState = this.beforeState();\n this._afterState = {\n rings: beforeState.rings.slice(0),\n windings: beforeState.windings.slice(0),\n multiPolys: []\n };\n const ringsAfter = this._afterState.rings;\n const windingsAfter = this._afterState.windings;\n const mpsAfter = this._afterState.multiPolys;\n for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n const ring = this.rings[i];\n const winding = this.windings[i];\n const index = ringsAfter.indexOf(ring);\n if (index === -1) {\n ringsAfter.push(ring);\n windingsAfter.push(winding);\n } else windingsAfter[index] += winding;\n }\n const polysAfter = [];\n const polysExclude = [];\n for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n if (windingsAfter[i] === 0) continue;\n const ring = ringsAfter[i];\n const poly = ring.poly;\n if (polysExclude.indexOf(poly) !== -1) continue;\n if (ring.isExterior) polysAfter.push(poly);\n else {\n if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n const index = polysAfter.indexOf(ring.poly);\n if (index !== -1) polysAfter.splice(index, 1);\n }\n }\n for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n const mp = polysAfter[i].multiPoly;\n if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n }\n return this._afterState;\n }\n /* Is this segment part of the final result? */\n isInResult() {\n if (this.consumedBy) return false;\n if (this._isInResult !== void 0) return this._isInResult;\n const mpsBefore = this.beforeState().multiPolys;\n const mpsAfter = this.afterState().multiPolys;\n switch (operation_default.type) {\n case \"union\": {\n const noBefores = mpsBefore.length === 0;\n const noAfters = mpsAfter.length === 0;\n this._isInResult = noBefores !== noAfters;\n break;\n }\n case \"intersection\": {\n let least;\n let most;\n if (mpsBefore.length < mpsAfter.length) {\n least = mpsBefore.length;\n most = mpsAfter.length;\n } else {\n least = mpsAfter.length;\n most = mpsBefore.length;\n }\n this._isInResult = most === operation_default.numMultiPolys && least < most;\n break;\n }\n case \"xor\": {\n const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n this._isInResult = diff % 2 === 1;\n break;\n }\n case \"difference\": {\n const isJustSubject = (mps) => mps.length === 1 && mps[0].isSubject;\n this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n break;\n }\n }\n return this._isInResult;\n }\n};\nvar RingIn = class {\n constructor(geomRing, poly, isExterior) {\n __publicField(this, \"poly\");\n __publicField(this, \"isExterior\");\n __publicField(this, \"segments\");\n __publicField(this, \"bbox\");\n if (!Array.isArray(geomRing) || geomRing.length === 0) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.poly = poly;\n this.isExterior = isExterior;\n this.segments = [];\n if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n const firstPoint = precision.snap({ x: new bignumber_default(geomRing[0][0]), y: new bignumber_default(geomRing[0][1]) });\n this.bbox = {\n ll: { x: firstPoint.x, y: firstPoint.y },\n ur: { x: firstPoint.x, y: firstPoint.y }\n };\n let prevPoint = firstPoint;\n for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n const point2 = precision.snap({ x: new bignumber_default(geomRing[i][0]), y: new bignumber_default(geomRing[i][1]) });\n if (point2.x.eq(prevPoint.x) && point2.y.eq(prevPoint.y)) continue;\n this.segments.push(Segment2.fromRing(prevPoint, point2, this));\n if (point2.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = point2.x;\n if (point2.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = point2.y;\n if (point2.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = point2.x;\n if (point2.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = point2.y;\n prevPoint = point2;\n }\n if (!firstPoint.x.eq(prevPoint.x) || !firstPoint.y.eq(prevPoint.y)) {\n this.segments.push(Segment2.fromRing(prevPoint, firstPoint, this));\n }\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n const segment = this.segments[i];\n sweepEvents.push(segment.leftSE);\n sweepEvents.push(segment.rightSE);\n }\n return sweepEvents;\n }\n};\nvar PolyIn = class {\n constructor(geomPoly, multiPoly) {\n __publicField(this, \"multiPoly\");\n __publicField(this, \"exteriorRing\");\n __publicField(this, \"interiorRings\");\n __publicField(this, \"bbox\");\n if (!Array.isArray(geomPoly)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.exteriorRing = new RingIn(geomPoly[0], this, true);\n this.bbox = {\n ll: { x: this.exteriorRing.bbox.ll.x, y: this.exteriorRing.bbox.ll.y },\n ur: { x: this.exteriorRing.bbox.ur.x, y: this.exteriorRing.bbox.ur.y }\n };\n this.interiorRings = [];\n for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n const ring = new RingIn(geomPoly[i], this, false);\n if (ring.bbox.ll.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = ring.bbox.ll.x;\n if (ring.bbox.ll.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = ring.bbox.ll.y;\n if (ring.bbox.ur.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = ring.bbox.ur.x;\n if (ring.bbox.ur.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = ring.bbox.ur.y;\n this.interiorRings.push(ring);\n }\n this.multiPoly = multiPoly;\n }\n getSweepEvents() {\n const sweepEvents = this.exteriorRing.getSweepEvents();\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n sweepEvents.push(ringSweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n};\nvar MultiPolyIn = class {\n constructor(geom, isSubject) {\n __publicField(this, \"isSubject\");\n __publicField(this, \"polys\");\n __publicField(this, \"bbox\");\n if (!Array.isArray(geom)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n try {\n if (typeof geom[0][0][0] === \"number\") geom = [geom];\n } catch (ex) {\n }\n this.polys = [];\n this.bbox = {\n ll: { x: new bignumber_default(Number.POSITIVE_INFINITY), y: new bignumber_default(Number.POSITIVE_INFINITY) },\n ur: { x: new bignumber_default(Number.NEGATIVE_INFINITY), y: new bignumber_default(Number.NEGATIVE_INFINITY) }\n };\n for (let i = 0, iMax = geom.length; i < iMax; i++) {\n const poly = new PolyIn(geom[i], this);\n if (poly.bbox.ll.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = poly.bbox.ll.x;\n if (poly.bbox.ll.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = poly.bbox.ll.y;\n if (poly.bbox.ur.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = poly.bbox.ur.x;\n if (poly.bbox.ur.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = poly.bbox.ur.y;\n this.polys.push(poly);\n }\n this.isSubject = isSubject;\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polySweepEvents = this.polys[i].getSweepEvents();\n for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n sweepEvents.push(polySweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n};\nvar union = (geom, ...moreGeoms) => operation_default.run(\"union\", geom, moreGeoms);\nvar intersection2 = (geom, ...moreGeoms) => operation_default.run(\"intersection\", geom, moreGeoms);\nvar setPrecision = precision.set;\n\n// node_modules/@turf/intersect/dist/esm/index.js\nfunction intersect(features, options = {}) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must specify at least 2 geometries\");\n }\n const intersection22 = intersection2(geoms[0], ...geoms.slice(1));\n if (intersection22.length === 0) return null;\n if (intersection22.length === 1)\n return polygon(intersection22[0], options.properties);\n return multiPolygon(intersection22, options.properties);\n}\nvar turf_intersect_default = intersect;\n\n// src/utils/transformToTileCoords.ts\nvar TRANSFORM_FN2 = {\n Point: transformPoint2,\n MultiPoint: transformMultiPoint2,\n LineString: transformLineString2,\n MultiLineString: transformMultiLineString2,\n Polygon: transformPolygon2,\n MultiPolygon: transformMultiPolygon2\n};\nfunction transformToTileCoords(geometry, bbox2) {\n const [west, south, east, north] = bbox2;\n const nw = projectFlat([west, north]);\n const se = projectFlat([east, south]);\n const projectedBbox = [nw, se];\n if (geometry.type === \"GeometryCollection\") {\n throw new Error(\"Unsupported geometry type GeometryCollection\");\n }\n const transformFn = TRANSFORM_FN2[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return { ...geometry, coordinates };\n}\nfunction transformPoint2([pointX, pointY], [nw, se]) {\n const x = inverseLerp(nw[0], se[0], pointX);\n const y = inverseLerp(nw[1], se[1], pointY);\n return [x, y];\n}\nfunction getPoints2(geometry, bbox2) {\n return geometry.map((g) => transformPoint2(projectFlat(g), bbox2));\n}\nfunction transformMultiPoint2(multiPoint, bbox2) {\n return getPoints2(multiPoint, bbox2);\n}\nfunction transformLineString2(line, bbox2) {\n return getPoints2(line, bbox2);\n}\nfunction transformMultiLineString2(multiLineString2, bbox2) {\n return multiLineString2.map(\n (lineString2) => transformLineString2(lineString2, bbox2)\n );\n}\nfunction transformPolygon2(polygon2, bbox2) {\n return polygon2.map((polygonRing) => getPoints2(polygonRing, bbox2));\n}\nfunction transformMultiPolygon2(multiPolygon2, bbox2) {\n return multiPolygon2.map((polygon2) => transformPolygon2(polygon2, bbox2));\n}\nfunction projectFlat(xyz) {\n return lngLatToWorld(xyz);\n}\nfunction inverseLerp(a, b, x) {\n return (x - a) / (b - a);\n}\n\n// src/filters/tileIntersection.ts\nimport {\n cellToBoundary as quadbinCellToBoundary,\n geometryToCells as quadbinGeometryToCells\n} from \"quadbin\";\nimport { polygonToCells as h3PolygonToCells } from \"h3-js\";\n\n// node_modules/@turf/bbox-clip/dist/esm/index.js\nfunction lineclip(points, bbox2, result) {\n var len = points.length, codeA = bitCode(points[0], bbox2), part = [], i, codeB, lastCode;\n let a;\n let b;\n if (!result) result = [];\n for (i = 1; i < len; i++) {\n a = points[i - 1];\n b = points[i];\n codeB = lastCode = bitCode(b, bbox2);\n while (true) {\n if (!(codeA | codeB)) {\n part.push(a);\n if (codeB !== lastCode) {\n part.push(b);\n if (i < len - 1) {\n result.push(part);\n part = [];\n }\n } else if (i === len - 1) {\n part.push(b);\n }\n break;\n } else if (codeA & codeB) {\n break;\n } else if (codeA) {\n a = intersect2(a, b, codeA, bbox2);\n codeA = bitCode(a, bbox2);\n } else {\n b = intersect2(a, b, codeB, bbox2);\n codeB = bitCode(b, bbox2);\n }\n }\n codeA = lastCode;\n }\n if (part.length) result.push(part);\n return result;\n}\nfunction polygonclip(points, bbox2) {\n var result, edge, prev, prevInside, i, p, inside;\n for (edge = 1; edge <= 8; edge *= 2) {\n result = [];\n prev = points[points.length - 1];\n prevInside = !(bitCode(prev, bbox2) & edge);\n for (i = 0; i < points.length; i++) {\n p = points[i];\n inside = !(bitCode(p, bbox2) & edge);\n if (inside !== prevInside) result.push(intersect2(prev, p, edge, bbox2));\n if (inside) result.push(p);\n prev = p;\n prevInside = inside;\n }\n points = result;\n if (!points.length) break;\n }\n return result;\n}\nfunction intersect2(a, b, edge, bbox2) {\n return edge & 8 ? [a[0] + (b[0] - a[0]) * (bbox2[3] - a[1]) / (b[1] - a[1]), bbox2[3]] : edge & 4 ? [a[0] + (b[0] - a[0]) * (bbox2[1] - a[1]) / (b[1] - a[1]), bbox2[1]] : edge & 2 ? [bbox2[2], a[1] + (b[1] - a[1]) * (bbox2[2] - a[0]) / (b[0] - a[0])] : edge & 1 ? [bbox2[0], a[1] + (b[1] - a[1]) * (bbox2[0] - a[0]) / (b[0] - a[0])] : null;\n}\nfunction bitCode(p, bbox2) {\n var code = 0;\n if (p[0] < bbox2[0]) code |= 1;\n else if (p[0] > bbox2[2]) code |= 2;\n if (p[1] < bbox2[1]) code |= 4;\n else if (p[1] > bbox2[3]) code |= 8;\n return code;\n}\nfunction bboxClip(feature2, bbox2) {\n const geom = getGeom(feature2);\n const type = geom.type;\n const properties = feature2.type === \"Feature\" ? feature2.properties : {};\n let coords = geom.coordinates;\n switch (type) {\n case \"LineString\":\n case \"MultiLineString\": {\n const lines = [];\n if (type === \"LineString\") {\n coords = [coords];\n }\n coords.forEach((line) => {\n lineclip(line, bbox2, lines);\n });\n if (lines.length === 1) {\n return lineString(lines[0], properties);\n }\n return multiLineString(lines, properties);\n }\n case \"Polygon\":\n return polygon(clipPolygon(coords, bbox2), properties);\n case \"MultiPolygon\":\n return multiPolygon(\n coords.map((poly) => {\n return clipPolygon(poly, bbox2);\n }),\n properties\n );\n default:\n throw new Error(\"geometry \" + type + \" not supported\");\n }\n}\nfunction clipPolygon(rings, bbox2) {\n const outRings = [];\n for (const ring of rings) {\n const clipped = polygonclip(ring, bbox2);\n if (clipped.length > 0) {\n if (clipped[0][0] !== clipped[clipped.length - 1][0] || clipped[0][1] !== clipped[clipped.length - 1][1]) {\n clipped.push(clipped[0]);\n }\n if (clipped.length >= 4) {\n outRings.push(clipped);\n }\n }\n }\n return outRings;\n}\nvar turf_bbox_clip_default = bboxClip;\n\n// src/filters/tileIntersection.ts\nfunction intersectTileGeometry(tileBbox, tileFormat, spatialFilter) {\n const tilePolygon = turf_bbox_polygon_default(tileBbox);\n if (!spatialFilter || turf_boolean_within_default(tilePolygon, spatialFilter)) {\n return true;\n }\n const clippedSpatialFilter = turf_intersect_default(\n featureCollection([tilePolygon, feature(spatialFilter)])\n );\n if (!clippedSpatialFilter) {\n return false;\n }\n return tileFormat === \"mvt\" /* MVT */ ? transformToTileCoords(clippedSpatialFilter.geometry, tileBbox) : clippedSpatialFilter.geometry;\n}\nfunction intersectTileRaster(parent, cellResolution, spatialFilter) {\n return intersectTileQuadbin(parent, cellResolution, spatialFilter);\n}\nfunction intersectTileQuadbin(parent, cellResolution, spatialFilter) {\n const tilePolygon = quadbinCellToBoundary(parent);\n if (!spatialFilter || turf_boolean_within_default(tilePolygon, spatialFilter)) {\n return true;\n }\n const clippedSpatialFilter = turf_intersect_default(\n featureCollection([feature(tilePolygon), feature(spatialFilter)])\n );\n if (!clippedSpatialFilter) {\n return false;\n }\n const cells = quadbinGeometryToCells(\n clippedSpatialFilter.geometry,\n cellResolution\n );\n return new Set(cells);\n}\nvar BBOX_WEST = [-180, -90, 0, 90];\nvar BBOX_EAST = [0, -90, 180, 90];\nfunction intersectTileH3(cellResolution, spatialFilter) {\n if (!spatialFilter) {\n return true;\n }\n const spatialFilterFeature = feature(spatialFilter);\n const cellsWest = h3PolygonToCells(\n turf_bbox_clip_default(spatialFilterFeature, BBOX_WEST).geometry.coordinates,\n cellResolution,\n true\n );\n const cellsEast = h3PolygonToCells(\n turf_bbox_clip_default(spatialFilterFeature, BBOX_EAST).geometry.coordinates,\n cellResolution,\n true\n );\n return new Set(cellsWest.concat(cellsEast));\n}\n\n// src/filters/tileFeaturesGeometries.ts\nvar FEATURE_GEOM_PROPERTY = \"__geomValue\";\nfunction tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options\n}) {\n const map = /* @__PURE__ */ new Map();\n for (const tile of tiles) {\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n const tileBbox = [\n tile.bbox.west,\n tile.bbox.south,\n tile.bbox.east,\n tile.bbox.north\n ];\n const intersection3 = intersectTileGeometry(\n tileBbox,\n tileFormat,\n spatialFilter\n );\n if (intersection3 === false) continue;\n const transformedSpatialFilter = intersection3 === true ? void 0 : intersection3;\n calculateFeatures({\n map,\n spatialFilter: transformedSpatialFilter,\n data: tile.data.points,\n type: \"Point\",\n bbox: tileBbox,\n tileFormat,\n uniqueIdProperty,\n options\n });\n calculateFeatures({\n map,\n spatialFilter: transformedSpatialFilter,\n data: tile.data.lines,\n type: \"LineString\",\n bbox: tileBbox,\n tileFormat,\n uniqueIdProperty,\n options\n });\n calculateFeatures({\n map,\n spatialFilter: transformedSpatialFilter,\n data: tile.data.polygons,\n type: \"Polygon\",\n bbox: tileBbox,\n tileFormat,\n uniqueIdProperty,\n options\n });\n }\n return Array.from(map.values());\n}\nfunction processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox: bbox2,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n spatialFilter\n}) {\n const tileProps = getPropertiesFromTile(data, startIndex);\n const uniquePropertyValue = getUniquePropertyValue(\n tileProps,\n uniqueIdProperty,\n map\n );\n if (!uniquePropertyValue || map.has(uniquePropertyValue)) {\n return;\n }\n let geometry = null;\n if (storeGeometry || spatialFilter) {\n const { positions } = data;\n const ringCoordinates = getRingCoordinatesFor(\n startIndex,\n endIndex,\n positions\n );\n geometry = getFeatureByType(ringCoordinates, type);\n }\n if (geometry && spatialFilter && !turf_boolean_intersects_default(geometry, spatialFilter)) {\n return;\n }\n const properties = parseProperties(tileProps);\n if (storeGeometry && geometry) {\n properties[FEATURE_GEOM_PROPERTY] = tileFormat === \"mvt\" /* MVT */ ? transformTileCoordsToWGS84(geometry, bbox2) : geometry;\n }\n map.set(uniquePropertyValue, properties);\n}\nfunction addIntersectedFeaturesInTile({\n map,\n data,\n spatialFilter,\n type,\n bbox: bbox2,\n tileFormat,\n uniqueIdProperty,\n options\n}) {\n const indices = getIndices(data, type);\n const storeGeometry = options?.storeGeometry || false;\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox: bbox2,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n spatialFilter\n });\n }\n}\nfunction getIndices(data, type) {\n let indices;\n switch (type) {\n case \"Polygon\":\n indices = data.primitivePolygonIndices;\n break;\n case \"LineString\":\n indices = data.pathIndices;\n break;\n case \"Point\":\n indices = createIndicesForPoints(data);\n break;\n default:\n throw new Error(\n `Unsupported geometry type: ${type}`\n );\n }\n return indices.value;\n}\nfunction getFeatureId(data, startIndex) {\n return data.featureIds.value[startIndex];\n}\nfunction getPropertiesFromTile(data, startIndex) {\n const featureId2 = getFeatureId(data, startIndex);\n const { properties, numericProps, fields } = data;\n const result = {\n uniqueId: fields?.[featureId2]?.id,\n properties: properties[featureId2],\n numericProps: {}\n };\n for (const key in numericProps) {\n result.numericProps[key] = numericProps[key].value[startIndex];\n }\n return result;\n}\nfunction parseProperties(tileProps) {\n const { properties, numericProps } = tileProps;\n return Object.assign({}, properties, numericProps);\n}\nfunction getUniquePropertyValue(tileProps, uniqueIdProperty, map) {\n if (uniqueIdProperty) {\n return getValueFromTileProps(tileProps, uniqueIdProperty);\n }\n if (tileProps.uniqueId) {\n return tileProps.uniqueId;\n }\n const artificialId = map.size + 1;\n return getValueFromTileProps(tileProps, \"cartodb_id\") || getValueFromTileProps(tileProps, \"geoid\") || artificialId;\n}\nfunction getValueFromTileProps(tileProps, propertyName) {\n const { properties, numericProps } = tileProps;\n return numericProps[propertyName] || properties[propertyName];\n}\nfunction getFeatureByType(coordinates, type) {\n switch (type) {\n case \"Polygon\":\n return { type: \"Polygon\", coordinates: [coordinates] };\n case \"LineString\":\n return { type: \"LineString\", coordinates };\n case \"Point\":\n return { type: \"Point\", coordinates: coordinates[0] };\n default:\n throw new Error(\"Invalid geometry type\");\n }\n}\nfunction getRingCoordinatesFor(startIndex, endIndex, positions) {\n const ringCoordinates = [];\n for (let j = startIndex; j < endIndex; j++) {\n ringCoordinates.push(\n Array.from(\n positions.value.subarray(j * positions.size, (j + 1) * positions.size)\n )\n );\n }\n return ringCoordinates;\n}\nfunction calculateFeatures({\n map,\n spatialFilter,\n data,\n type,\n bbox: bbox2,\n tileFormat,\n uniqueIdProperty,\n options\n}) {\n if (!data?.properties.length) {\n return;\n }\n if (!spatialFilter) {\n addAllFeaturesInTile({\n map,\n data,\n type,\n bbox: bbox2,\n tileFormat,\n uniqueIdProperty,\n options\n });\n } else {\n addIntersectedFeaturesInTile({\n map,\n data,\n spatialFilter,\n type,\n bbox: bbox2,\n tileFormat,\n uniqueIdProperty,\n options\n });\n }\n}\nfunction addAllFeaturesInTile({\n map,\n data,\n type,\n bbox: bbox2,\n tileFormat,\n uniqueIdProperty,\n options\n}) {\n const indices = getIndices(data, type);\n const storeGeometry = options?.storeGeometry || false;\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox: bbox2,\n tileFormat,\n uniqueIdProperty,\n storeGeometry\n });\n }\n}\nfunction createIndicesForPoints(data) {\n const featureIds = data.featureIds.value;\n const lastFeatureId = featureIds[featureIds.length - 1];\n const PointIndicesArray = featureIds.constructor;\n const pointIndices = {\n value: new PointIndicesArray(featureIds.length + 1),\n size: 1\n };\n pointIndices.value.set(featureIds);\n pointIndices.value.set([lastFeatureId + 1], featureIds.length);\n return pointIndices;\n}\n\n// src/filters/tileFeaturesSpatialIndex.ts\nimport { getResolution as quadbinGetResolution } from \"quadbin\";\nimport { getResolution as h3GetResolution } from \"h3-js\";\nfunction tileFeaturesSpatialIndex({\n tiles,\n spatialFilter,\n spatialDataColumn,\n spatialDataType\n}) {\n const map = /* @__PURE__ */ new Map();\n const spatialIndex = getSpatialIndex(spatialDataType);\n const cellResolution = getResolution(tiles, spatialIndex);\n const spatialIndexIDName = spatialDataColumn ? spatialDataColumn : spatialIndex;\n if (!cellResolution) {\n return [];\n }\n let intersection3;\n if (spatialIndex === \"h3\" /* H3 */) {\n intersection3 = intersectTileH3(cellResolution, spatialFilter);\n }\n for (const tile of tiles) {\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n if (spatialIndex === \"quadbin\" /* QUADBIN */) {\n const parent = getTileIndex(tile, spatialIndex);\n intersection3 = intersectTileQuadbin(\n parent,\n cellResolution,\n spatialFilter\n );\n }\n if (!intersection3) continue;\n tile.data.forEach((d) => {\n if (intersection3 === true || intersection3.has(d.id)) {\n map.set(d.id, { ...d.properties, [spatialIndexIDName]: d.id });\n }\n });\n }\n return Array.from(map.values());\n}\nfunction getTileIndex(tile, spatialIndex) {\n if (spatialIndex === \"quadbin\" /* QUADBIN */) {\n return tile.index.q;\n }\n return tile.id;\n}\nfunction getResolution(tiles, spatialIndex) {\n const data = tiles.find((tile) => tile.data?.length)?.data;\n if (!data) {\n return;\n }\n if (spatialIndex === \"quadbin\" /* QUADBIN */) {\n return Number(quadbinGetResolution(data[0].id));\n }\n if (spatialIndex === \"h3\" /* H3 */) {\n return h3GetResolution(data[0].id);\n }\n}\nfunction getSpatialIndex(spatialDataType) {\n switch (spatialDataType) {\n case \"h3\":\n return \"h3\" /* H3 */;\n case \"quadbin\":\n return \"quadbin\" /* QUADBIN */;\n default:\n throw new Error(\"Unexpected spatial data type\");\n }\n}\n\n// src/constants-internal.ts\nvar V3_MINOR_VERSION = \"3.4\";\nvar DEFAULT_GEO_COLUMN = \"geom\";\nvar DEFAULT_MAX_LENGTH_URL = 7e3;\nvar DEFAULT_TILE_RESOLUTION = 0.5;\nvar REDUCED_QUERIES_TILE_RESOLUTION = 1;\nvar DEFAULT_AGGREGATION_RES_LEVEL_H3 = 4;\nvar DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN = 6;\nvar DEFAULT_AGGREGATION_EXP_ALIAS = \"__aggregationValue\";\nvar DEFAULT_AGGREGATION_EXP = `1 AS ${DEFAULT_AGGREGATION_EXP_ALIAS}`;\n\n// src/filters/tileFeaturesRaster.ts\nimport { cellToTile, getResolution as getResolution2, tileToCell } from \"quadbin\";\nfunction tileFeaturesRaster({\n tiles,\n ...options\n}) {\n const metadataByBand = {};\n for (const band of options.rasterMetadata.bands) {\n metadataByBand[band.name] = { ...band, nodata: Number(band.nodata) };\n }\n tiles = tiles.filter(isRasterTileVisible);\n if (tiles.length === 0) return [];\n const tileResolution = getResolution2(tiles[0].index.q);\n const tileBlockSize = tiles[0].data.blockSize;\n const cellResolution = tileResolution + BigInt(Math.log2(tileBlockSize));\n const data = /* @__PURE__ */ new Map();\n for (const tile of tiles) {\n const parent = tile.index.q;\n const intersection3 = intersectTileRaster(\n parent,\n cellResolution,\n options.spatialFilter\n );\n if (intersection3 === false) continue;\n const tileSortedCells = cellToChildrenRaster(parent, cellResolution);\n for (let i = 0; i < tileSortedCells.length; i++) {\n if (intersection3 !== true && !intersection3.has(tileSortedCells[i])) {\n continue;\n }\n const cellData = {};\n let cellDataExists = false;\n for (const band in tile.data.cells.numericProps) {\n const value = tile.data.cells.numericProps[band].value[i];\n const bandMetadata = metadataByBand[band];\n if (isValidBandValue(value, bandMetadata.nodata)) {\n cellData[band] = tile.data.cells.numericProps[band].value[i];\n cellDataExists = true;\n }\n }\n if (cellDataExists) {\n data.set(tileSortedCells[i], cellData);\n }\n }\n }\n return Array.from(data.values());\n}\nfunction isRasterTile(tile) {\n return !!tile.data?.cells;\n}\nfunction isRasterTileVisible(tile) {\n return !!(tile.isVisible && tile.data?.cells?.numericProps);\n}\nfunction cellToChildrenRaster(parent, resolution) {\n const parentTile = cellToTile(parent);\n const childZ = Number(resolution);\n const blockSize = 2 ** (childZ - parentTile.z);\n const childBaseX = parentTile.x * blockSize;\n const childBaseY = parentTile.y * blockSize;\n const cells = [];\n for (let i = 0, il = blockSize ** 2; i < il; i++) {\n const x = childBaseX + i % blockSize;\n const y = childBaseY + Math.floor(i / blockSize);\n cells.push(tileToCell({ x, y, z: childZ }));\n }\n return cells;\n}\nfunction isValidBandValue(value, nodata) {\n return Number.isNaN(value) ? false : nodata !== value;\n}\n\n// src/types.ts\nvar SchemaFieldType = /* @__PURE__ */ ((SchemaFieldType2) => {\n SchemaFieldType2[\"Number\"] = \"number\";\n SchemaFieldType2[\"Bigint\"] = \"bigint\";\n SchemaFieldType2[\"String\"] = \"string\";\n SchemaFieldType2[\"Geometry\"] = \"geometry\";\n SchemaFieldType2[\"Timestamp\"] = \"timestamp\";\n SchemaFieldType2[\"Object\"] = \"object\";\n SchemaFieldType2[\"Boolean\"] = \"boolean\";\n SchemaFieldType2[\"Variant\"] = \"variant\";\n SchemaFieldType2[\"Unknown\"] = \"unknown\";\n return SchemaFieldType2;\n})(SchemaFieldType || {});\n\n// src/utils.ts\nvar FILTER_TYPES = new Set(Object.values(FilterType));\nfunction normalizeObjectKeys(el) {\n if (Array.isArray(el)) {\n return el.map((value) => normalizeObjectKeys(value));\n } else if (typeof el !== \"object\") {\n return el;\n }\n return Object.entries(el).reduce(\n (acc, [key, value]) => {\n acc[key.toLowerCase()] = typeof value === \"object\" && value ? normalizeObjectKeys(value) : value;\n return acc;\n },\n {}\n );\n}\nfunction assert2(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\nvar _InvalidColumnError = class _InvalidColumnError extends Error {\n constructor(message) {\n super(`${_InvalidColumnError.NAME}: ${message}`);\n this.name = _InvalidColumnError.NAME;\n }\n static is(error) {\n return error instanceof _InvalidColumnError || error.message?.includes(_InvalidColumnError.NAME);\n }\n};\n__publicField(_InvalidColumnError, \"NAME\", \"InvalidColumnError\");\nvar InvalidColumnError = _InvalidColumnError;\nfunction isEmptyObject(object) {\n for (const _ in object) {\n return false;\n }\n return true;\n}\nvar isObject2 = (x) => x !== null && typeof x === \"object\";\nvar isPureObject = (x) => isObject2(x) && x.constructor === {}.constructor;\nfunction assignOptional(target, ...sources) {\n for (const source of sources) {\n for (const key in source) {\n if (source[key] !== void 0) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\nfunction getWidgetSpatialDataType(spatialDataType, spatialDataColumn, schema) {\n const field = schema.find((field2) => field2.name === spatialDataColumn);\n if (field && field.type === \"geometry\" /* Geometry */) {\n return \"geo\";\n }\n return spatialDataType;\n}\n\n// src/filters/tileFeatures.ts\nfunction tileFeatures({\n tiles,\n spatialFilter,\n uniqueIdProperty,\n tileFormat,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n spatialDataType,\n rasterMetadata,\n storeGeometry = false\n}) {\n if (spatialDataType === \"geo\") {\n return tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options: { storeGeometry }\n });\n }\n if (tiles.some(isRasterTile)) {\n assert2(rasterMetadata, \"Missing raster metadata\");\n return tileFeaturesRaster({\n tiles,\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n rasterMetadata\n });\n }\n return tileFeaturesSpatialIndex({\n tiles,\n spatialFilter,\n spatialDataColumn,\n spatialDataType\n });\n}\n\n// src/deck/get-data-filter-extension-props.ts\nvar DEFAULT_FILTER_SIZE = 4;\nfunction getDataFilterExtensionProps(filters, filtersLogicalOperator) {\n const { filtersWithoutTimeType, timeColumn, timeFilter } = getFiltersByType(filters);\n return {\n filterRange: getFilterRange(timeFilter, DEFAULT_FILTER_SIZE),\n updateTriggers: getUpdateTriggers(\n filtersWithoutTimeType,\n timeColumn,\n timeFilter\n ),\n getFilterValue: getFilterValue(\n filtersWithoutTimeType,\n timeColumn,\n timeFilter,\n DEFAULT_FILTER_SIZE,\n filtersLogicalOperator\n )\n };\n}\nfunction getFiltersByType(filters) {\n const filtersWithoutTimeType = {};\n let timeColumn = null;\n let timeFilter = null;\n for (const [column, columnData] of Object.entries(filters)) {\n for (const [type, typeData] of Object.entries(columnData)) {\n if (type === \"time\" /* TIME */) {\n timeColumn = column;\n timeFilter = typeData;\n } else {\n filtersWithoutTimeType[column] = { [type]: typeData };\n }\n }\n }\n return {\n filtersWithoutTimeType,\n timeColumn,\n timeFilter\n };\n}\nfunction getFilterRange(timeFilter, filterSize) {\n const result = Array(filterSize).fill([0, 0]);\n result[0] = [1, 1];\n if (timeFilter) {\n const offsetBy = timeFilter.params?.offsetBy || 0;\n result[1] = timeFilter.values[0].map((v2) => v2 - offsetBy);\n }\n return result;\n}\nfunction getUpdateTriggers(filtersWithoutTimeType, timeColumn, timeFilter) {\n const result = { ...filtersWithoutTimeType };\n if (timeColumn && timeFilter) {\n result[timeColumn] = {\n ...result[timeColumn],\n offsetBy: timeFilter.params?.offsetBy,\n [\"time\" /* TIME */]: {}\n // Allows working with other filters, without an impact on performance.\n };\n }\n return {\n getFilterValue: JSON.stringify(result)\n };\n}\nfunction getFilterValue(filtersWithoutTimeType, timeColumn, timeFilter, filterSize, filtersLogicalOperator) {\n const result = Array(filterSize).fill(0);\n const featureFilter = _buildFeatureFilter({\n filters: filtersWithoutTimeType,\n type: \"number\",\n filtersLogicalOperator\n });\n return (feature2) => {\n result[0] = featureFilter(feature2);\n if (timeColumn && timeFilter) {\n const offsetBy = timeFilter.params?.offsetBy || 0;\n const f = feature2.properties || feature2;\n result[1] = f[timeColumn] - offsetBy;\n }\n return result;\n };\n}\n\n// src/api/carto-api-error.ts\nvar CartoAPIError = class extends Error {\n constructor(error, errorContext, response, responseJson) {\n let responseString = \"Failed to connect\";\n if (response) {\n responseString = \"Server returned: \";\n if (response.status === 400) {\n responseString += \"Bad request\";\n } else if (response.status === 401 || response.status === 403) {\n responseString += \"Unauthorized access\";\n } else if (response.status === 404) {\n responseString += \"Not found\";\n } else {\n responseString += \"Error\";\n }\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n let message = `${errorContext.requestType} API request failed`;\n message += `\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === \"requestType\") continue;\n message += `\n${formatErrorKey(key)}: ${errorContext[key]}`;\n }\n message += \"\\n\";\n super(message);\n /** Source error from server */\n __publicField(this, \"error\");\n /** Context (API call & parameters) in which error occured */\n __publicField(this, \"errorContext\");\n /** Response from server */\n __publicField(this, \"response\");\n /** JSON Response from server */\n __publicField(this, \"responseJson\");\n this.name = \"CartoAPIError\";\n this.response = response;\n this.responseJson = responseJson;\n this.error = error;\n this.errorContext = errorContext;\n }\n};\nfunction formatErrorKey(key) {\n return key.replace(/([A-Z])/g, \" $1\").replace(/^./, (s) => s.toUpperCase());\n}\n\n// src/api/endpoints.ts\nfunction joinPath(...args) {\n return args.map((part) => part.endsWith(\"/\") ? part.slice(0, -1) : part).join(\"/\");\n}\nfunction buildV3Path(apiBaseUrl, version, endpoint, ...rest) {\n return joinPath(apiBaseUrl, version, endpoint, ...rest);\n}\nfunction buildPublicMapUrl({\n apiBaseUrl,\n cartoMapId\n}) {\n return buildV3Path(apiBaseUrl, \"v3\", \"maps\", \"public\", cartoMapId);\n}\nfunction buildStatsUrl({\n attribute,\n apiBaseUrl,\n connectionName,\n source,\n type\n}) {\n if (type === \"query\") {\n return buildV3Path(apiBaseUrl, \"v3\", \"stats\", connectionName, attribute);\n }\n return buildV3Path(\n apiBaseUrl,\n \"v3\",\n \"stats\",\n connectionName,\n source,\n attribute\n );\n}\nfunction buildSourceUrl({\n apiBaseUrl,\n connectionName,\n endpoint\n}) {\n return buildV3Path(apiBaseUrl, \"v3\", \"maps\", connectionName, endpoint);\n}\nfunction buildQueryUrl({\n apiBaseUrl,\n connectionName\n}) {\n return buildV3Path(apiBaseUrl, \"v3\", \"sql\", connectionName, \"query\");\n}\n\n// src/api/request-with-parameters.ts\nvar DEFAULT_HEADERS = {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n};\nvar DEFAULT_REQUEST_CACHE = /* @__PURE__ */ new Map();\nasync function requestWithParameters({\n baseUrl,\n parameters = {},\n headers: customHeaders = {},\n errorContext,\n maxLengthURL = DEFAULT_MAX_LENGTH_URL,\n localCache,\n signal\n}) {\n parameters = {\n v: V3_MINOR_VERSION,\n client: getClient(),\n ...typeof deck !== \"undefined\" && deck.VERSION && { deckglVersion: deck.VERSION },\n ...parameters\n };\n baseUrl = excludeURLParameters(baseUrl, Object.keys(parameters));\n const key = createCacheKey(baseUrl, parameters, customHeaders);\n const {\n cache: REQUEST_CACHE,\n canReadCache,\n canStoreInCache\n } = getCacheSettings(localCache);\n if (canReadCache && REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key);\n }\n const url = createURLWithParameters(baseUrl, parameters);\n const headers = { ...DEFAULT_HEADERS, ...customHeaders };\n const fetchPromise = url.length > maxLengthURL ? fetch(baseUrl, {\n method: \"POST\",\n body: JSON.stringify(parameters),\n headers,\n signal\n }) : fetch(url, { headers, signal });\n let response;\n let responseJson;\n const jsonPromise = fetchPromise.then((_response) => {\n response = _response;\n return response.json();\n }).then((json) => {\n responseJson = json;\n if (!response || !response.ok) {\n throw new Error(json.error);\n }\n return json;\n }).catch((error) => {\n if (canStoreInCache) {\n REQUEST_CACHE.delete(key);\n }\n throw new CartoAPIError(error, errorContext, response, responseJson);\n });\n if (canStoreInCache) {\n REQUEST_CACHE.set(key, jsonPromise);\n }\n return jsonPromise;\n}\nfunction getCacheSettings(localCache) {\n const canReadCache = localCache?.cacheControl?.includes(\"no-cache\") ? false : true;\n const canStoreInCache = localCache?.cacheControl?.includes(\"no-store\") ? false : true;\n const cache = localCache?.cache || DEFAULT_REQUEST_CACHE;\n return {\n cache,\n canReadCache,\n canStoreInCache\n };\n}\nfunction createCacheKey(baseUrl, parameters, headers) {\n const parameterEntries = Object.entries(parameters).sort(\n ([a], [b]) => a > b ? 1 : -1\n );\n const headerEntries = Object.entries(headers).sort(\n ([a], [b]) => a > b ? 1 : -1\n );\n return JSON.stringify({\n baseUrl,\n parameters: parameterEntries,\n headers: headerEntries\n });\n}\nfunction createURLWithParameters(baseUrlString, parameters) {\n const baseUrl = new URL(baseUrlString);\n for (const [key, value] of Object.entries(parameters)) {\n if (isPureObject(value) || Array.isArray(value)) {\n baseUrl.searchParams.set(key, JSON.stringify(value));\n } else {\n if (value !== null && value !== void 0) {\n baseUrl.searchParams.set(\n key,\n value.toString()\n );\n }\n }\n }\n return baseUrl.toString();\n}\nfunction excludeURLParameters(baseUrlString, parameters) {\n const baseUrl = new URL(baseUrlString);\n for (const param of parameters) {\n if (baseUrl.searchParams.has(param)) {\n baseUrl.searchParams.delete(param);\n }\n }\n return baseUrl.toString();\n}\nfunction clearDefaultRequestCache() {\n DEFAULT_REQUEST_CACHE.clear();\n}\n\n// src/sources/base-source.ts\nvar SOURCE_DEFAULTS = {\n apiBaseUrl: DEFAULT_API_BASE_URL,\n headers: {},\n maxLengthURL: DEFAULT_MAX_LENGTH_URL\n};\nasync function baseSource(endpoint, options, urlParameters) {\n const { accessToken, connectionName, cache, ...optionalOptions } = options;\n const mergedOptions = {\n ...SOURCE_DEFAULTS,\n clientId: getClient(),\n accessToken,\n connectionName,\n endpoint\n };\n for (const key in optionalOptions) {\n if (optionalOptions[key]) {\n mergedOptions[key] = optionalOptions[key];\n }\n }\n const baseUrl = buildSourceUrl(mergedOptions);\n const { clientId, maxLengthURL, localCache } = mergedOptions;\n const headers = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers\n };\n const parameters = { client: clientId, ...options.tags, ...urlParameters };\n const errorContext = {\n requestType: \"Map instantiation\",\n connection: options.connectionName,\n type: endpoint,\n source: JSON.stringify(parameters, void 0, 2)\n };\n const { tilejson, schema } = await requestWithParameters({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache\n });\n const dataUrl = tilejson.url[0];\n if (cache) {\n cache.value = parseInt(\n new URL(dataUrl).searchParams.get(\"cache\") || \"\",\n 10\n );\n }\n errorContext.requestType = \"Map data\";\n const json = await requestWithParameters({\n baseUrl: dataUrl,\n parameters: { client: clientId },\n headers,\n errorContext,\n maxLengthURL,\n localCache\n });\n if (accessToken) {\n json.accessToken = accessToken;\n }\n if (schema) {\n json.schema = schema;\n }\n return json;\n}\n\n// src/sources/constants.ts\nvar RasterBandColorinterp = /* @__PURE__ */ ((RasterBandColorinterp2) => {\n RasterBandColorinterp2[\"Gray\"] = \"gray\";\n RasterBandColorinterp2[\"Red\"] = \"red\";\n RasterBandColorinterp2[\"Green\"] = \"green\";\n RasterBandColorinterp2[\"Blue\"] = \"blue\";\n RasterBandColorinterp2[\"Alpha\"] = \"alpha\";\n RasterBandColorinterp2[\"Palette\"] = \"palette\";\n return RasterBandColorinterp2;\n})(RasterBandColorinterp || {});\n\n// src/sources/boundary-query-source.ts\nvar boundaryQuerySource = async function(options) {\n const {\n columns,\n filters,\n tilesetTableName,\n propertiesSqlQuery,\n queryParameters\n } = options;\n const urlParameters = {\n tilesetTableName,\n propertiesSqlQuery\n };\n if (columns) {\n urlParameters.columns = columns.join(\",\");\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n return baseSource(\"boundary\", options, urlParameters);\n};\n\n// src/sources/boundary-table-source.ts\nvar boundaryTableSource = async function(options) {\n const { filters, tilesetTableName, columns, propertiesTableName } = options;\n const urlParameters = {\n tilesetTableName,\n propertiesTableName\n };\n if (columns) {\n urlParameters.columns = columns.join(\",\");\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource(\"boundary\", options, urlParameters);\n};\n\n// src/widget-sources/widget-source.ts\nvar _WidgetSource = class _WidgetSource {\n constructor(props) {\n __publicField(this, \"props\");\n this.props = {\n ..._WidgetSource.defaultProps,\n clientId: getClient(),\n // Refresh clientId, default may have changed.\n ...props\n };\n }\n /**\n * Destroys the widget source and releases allocated resources.\n *\n * For remote sources (tables, queries) this has no effect, but for local\n * sources (tilesets, rasters) these resources will affect performance\n * and stability if many (10+) sources are created and not released.\n */\n destroy() {\n }\n};\n__publicField(_WidgetSource, \"defaultProps\", {\n apiVersion: \"v3\" /* V3 */,\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: getClient(),\n filters: {},\n filtersLogicalOperator: \"and\"\n});\nvar WidgetSource = _WidgetSource;\n\n// src/models/common.ts\nfunction dealWithApiError({\n response,\n data\n}) {\n if (data.error === \"Column not found\") {\n throw new InvalidColumnError(`${data.error} ${data.column_name}`);\n }\n if (typeof data.error === \"string\" && data.error?.includes(\"Missing columns\")) {\n throw new InvalidColumnError(data.error);\n }\n switch (response.status) {\n case 401:\n throw new Error(\"Unauthorized access. Invalid credentials\");\n case 403:\n throw new Error(\"Forbidden access to the requested data\");\n default:\n throw new Error(\n data && data.error && typeof data.error === \"string\" ? data.error : JSON.stringify(data?.hint || data.error?.[0])\n );\n }\n}\nasync function makeCall({\n url,\n accessToken,\n opts\n}) {\n let response;\n let data;\n const isPost = opts?.method === \"POST\";\n try {\n response = await fetch(url.toString(), {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n ...isPost && { \"Content-Type\": \"application/json\" },\n ...opts.headers\n },\n ...isPost && {\n method: opts?.method,\n body: opts?.body\n },\n signal: opts?.signal,\n ...opts?.otherOptions\n });\n data = await response.json();\n } catch (error) {\n if (error.name === \"AbortError\") throw error;\n throw new Error(`Failed request: ${error}`);\n }\n if (!response.ok) {\n dealWithApiError({ response, data });\n }\n return data;\n}\n\n// src/models/model.ts\nvar AVAILABLE_MODELS = [\n \"category\",\n \"histogram\",\n \"formula\",\n \"pick\",\n \"timeseries\",\n \"range\",\n \"scatterplot\",\n \"table\",\n \"aggregations\"\n];\nvar { V3 } = ApiVersion;\nvar REQUEST_GET_MAX_URL_LENGTH = 2048;\nfunction executeModel(props) {\n assert2(props.source, \"executeModel: missing source\");\n assert2(props.model, \"executeModel: missing model\");\n assert2(props.params, \"executeModel: missing params\");\n assert2(\n AVAILABLE_MODELS.includes(props.model),\n `executeModel: model provided isn't valid. Available models: ${AVAILABLE_MODELS.join(\n \", \"\n )}`\n );\n const { model, source, params, opts } = props;\n const { type, apiVersion, apiBaseUrl, accessToken, connectionName, clientId } = source;\n assert2(apiBaseUrl, \"executeModel: missing apiBaseUrl\");\n assert2(accessToken, \"executeModel: missing accessToken\");\n assert2(apiVersion === V3, \"executeModel: SQL Model API requires CARTO 3+\");\n assert2(type !== \"tileset\", \"executeModel: Tilesets not supported\");\n let url = `${apiBaseUrl}/v3/sql/${connectionName}/model/${model}`;\n const {\n data,\n filters,\n filtersLogicalOperator = \"and\",\n spatialDataType = \"geo\",\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n spatialFiltersMode = \"intersects\",\n tags\n } = source;\n const queryParams = {\n type,\n client: clientId,\n source: data,\n params,\n queryParameters: source.queryParameters || \"\",\n filters,\n filtersLogicalOperator,\n ...tags ?? {}\n };\n queryParams.spatialDataType = spatialDataType;\n queryParams.spatialDataColumn = spatialDataColumn;\n if (source.spatialFilter) {\n queryParams.spatialFilters = { [spatialDataColumn]: source.spatialFilter };\n if (spatialDataType !== \"geo\") {\n queryParams.spatialFiltersMode = spatialFiltersMode;\n }\n }\n const urlWithSearchParams = url + \"?\" + objectToURLSearchParams(queryParams).toString();\n const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;\n if (isGet) {\n url = urlWithSearchParams;\n }\n return makeCall({\n url,\n accessToken: source.accessToken,\n opts: {\n ...opts,\n method: isGet ? \"GET\" : \"POST\",\n ...!isGet && { body: JSON.stringify(queryParams) }\n }\n });\n}\nfunction objectToURLSearchParams(object) {\n const params = new URLSearchParams();\n for (const key in object) {\n if (isPureObject(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (Array.isArray(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (object[key] === null) {\n params.append(key, \"null\");\n } else if (object[key] !== void 0) {\n params.append(key, String(object[key]));\n }\n }\n return params;\n}\n\n// src/filters.ts\nvar FILTER_TYPES2 = new Set(Object.values(FilterType));\nvar isFilterType = (type) => FILTER_TYPES2.has(type);\nfunction addFilter(filters, { column, type, values, owner }) {\n if (!filters[column]) {\n filters[column] = {};\n }\n const filter = { values, owner };\n filters[column][type] = filter;\n return filters;\n}\nfunction removeFilter(filters, { column, owner }) {\n const filter = filters[column];\n if (!filter) {\n return filters;\n }\n if (owner) {\n for (const type of FILTER_TYPES2) {\n if (owner === filter[type]?.owner) {\n delete filter[type];\n }\n }\n }\n if (!owner || isEmptyObject(filter)) {\n delete filters[column];\n }\n return filters;\n}\nfunction clearFilters(filters) {\n for (const column of Object.keys(filters)) {\n delete filters[column];\n }\n return filters;\n}\nfunction hasFilter(filters, { column, owner }) {\n const filter = filters[column];\n if (!filter) {\n return false;\n }\n if (!owner) {\n return true;\n }\n for (const type of FILTER_TYPES2) {\n if (owner === filter[type]?.owner) {\n return true;\n }\n }\n return false;\n}\nfunction getFilter(filters, { column, type, owner }) {\n const filter = filters[column];\n if (!filter) {\n return null;\n }\n if (!owner || owner === filter[type]?.owner) {\n return filter[type] || null;\n }\n return null;\n}\nfunction getApplicableFilters(owner, filters) {\n if (!filters) return {};\n const applicableFilters = {};\n for (const column in filters) {\n for (const type in filters[column]) {\n if (!isFilterType(type)) continue;\n const filter = filters[column][type];\n const isApplicable = !owner || !filter?.owner || filter?.owner !== owner;\n if (filter && isApplicable) {\n applicableFilters[column] || (applicableFilters[column] = {});\n applicableFilters[column][type] = filter;\n }\n }\n }\n return applicableFilters;\n}\n\n// src/widget-sources/constants.ts\nvar OTHERS_CATEGORY_NAME = \"_carto_others\";\n\n// src/widget-sources/widget-remote-source.ts\nvar WidgetRemoteSource = class extends WidgetSource {\n _getModelSource(filters, filterOwner) {\n const props = this.props;\n return {\n apiVersion: props.apiVersion,\n apiBaseUrl: props.apiBaseUrl,\n clientId: props.clientId,\n accessToken: props.accessToken,\n connectionName: props.connectionName,\n filters: getApplicableFilters(filterOwner, filters || props.filters),\n filtersLogicalOperator: props.filtersLogicalOperator,\n spatialDataType: props.spatialDataType,\n spatialDataColumn: props.spatialDataColumn,\n tags: props.tags\n };\n }\n async getCategories(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n rawResult,\n ...params\n } = options;\n const {\n column,\n operation: operation2,\n operationColumn,\n operationExp,\n othersThreshold,\n orderBy\n } = params;\n if (operation2 === AggregationTypes.Custom) {\n assert2(operationExp, \"operationExp is required for custom operation\");\n }\n const result = await executeModel({\n model: \"category\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: {\n column,\n operation: operation2,\n operationExp,\n operationColumn: operationColumn || column,\n othersThreshold,\n orderBy\n },\n opts: { signal, headers: this.props.headers }\n });\n const normalizedRows = normalizeObjectKeys(result.rows || []);\n if (rawResult) {\n return result;\n }\n if (!othersThreshold) {\n return normalizedRows;\n }\n return [\n ...normalizedRows,\n { name: OTHERS_CATEGORY_NAME, value: result?.metadata?.others }\n ];\n }\n async getFeatures(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const { columns, dataType, featureIds, z, limit, tileResolution } = params;\n return executeModel({\n model: \"pick\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: {\n columns,\n dataType,\n featureIds,\n z,\n limit: limit || 1e3,\n tileResolution: tileResolution || DEFAULT_TILE_RESOLUTION\n },\n opts: { signal, headers: this.props.headers }\n // Avoid `normalizeObjectKeys()`, which changes column names.\n }).then(({ rows }) => ({ rows }));\n }\n async getFormula(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n operationExp,\n ...params\n } = options;\n const { column, operation: operation2 } = params;\n if (operation2 === AggregationTypes.Custom) {\n assert2(operationExp, \"operationExp is required for custom operation\");\n }\n return executeModel({\n model: \"formula\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: {\n column: column ?? \"*\",\n operation: operation2 ?? AggregationTypes.Count,\n operationExp\n },\n opts: { signal, headers: this.props.headers }\n }).then((res) => normalizeObjectKeys(res.rows[0]));\n }\n async getHistogram(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const { column, operation: operation2, ticks } = params;\n const data = await executeModel({\n model: \"histogram\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: { column, operation: operation2, ticks },\n opts: { signal, headers: this.props.headers }\n }).then((res) => normalizeObjectKeys(res.rows));\n if (data.length) {\n const result = Array(ticks.length + 1).fill(0);\n data.forEach(\n ({ tick, value }) => result[tick] = value\n );\n return result;\n }\n return [];\n }\n async getRange(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const { column } = params;\n return executeModel({\n model: \"range\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: { column },\n opts: { signal, headers: this.props.headers }\n }).then((res) => normalizeObjectKeys(res.rows[0]));\n }\n async getScatter(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const { xAxisColumn, xAxisJoinOperation, yAxisColumn, yAxisJoinOperation } = params;\n const HARD_LIMIT = 500;\n return executeModel({\n model: \"scatterplot\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: {\n xAxisColumn,\n xAxisJoinOperation,\n yAxisColumn,\n yAxisJoinOperation,\n limit: HARD_LIMIT\n },\n opts: { signal, headers: this.props.headers }\n }).then((res) => normalizeObjectKeys(res.rows)).then((res) => res.map(({ x, y }) => [x, y]));\n }\n async getTable(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const { columns, sortBy, sortDirection, offset = 0, limit = 10 } = params;\n return executeModel({\n model: \"table\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: {\n column: columns,\n sortBy,\n sortDirection,\n limit,\n offset\n },\n opts: { signal, headers: this.props.headers }\n }).then((res) => ({\n // Avoid `normalizeObjectKeys()`, which changes column names.\n rows: res.rows ?? res.ROWS,\n totalCount: res.metadata?.total ?? res.METADATA?.TOTAL\n }));\n }\n async getTimeSeries(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {\n column,\n operationColumn,\n joinOperation,\n operation: operation2,\n operationExp,\n stepSize,\n stepMultiplier,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues\n } = params;\n if (operation2 === AggregationTypes.Custom) {\n assert2(operationExp, \"operationExp is required for custom operation\");\n }\n return executeModel({\n model: \"timeseries\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: {\n column,\n stepSize,\n stepMultiplier,\n operationColumn: operationColumn || column,\n joinOperation,\n operation: operation2,\n operationExp,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues\n },\n opts: { signal, headers: this.props.headers }\n }).then((res) => ({\n rows: normalizeObjectKeys(res.rows),\n categories: res.metadata?.categories\n }));\n }\n async getAggregations(options) {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n aggregations\n } = options;\n return executeModel({\n model: \"aggregations\",\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter\n },\n params: {\n aggregations\n },\n opts: { signal, headers: this.props.headers }\n }).then((res) => ({\n rows: res.rows.map((row) => normalizeObjectKeys(row))\n }));\n }\n /** @experimental */\n async getExtent(options = {}) {\n const { signal, filters = this.props.filters, filterOwner } = options;\n const {\n type,\n data,\n apiBaseUrl,\n apiVersion,\n connectionName,\n spatialDataColumn,\n spatialDataType,\n queryParameters\n } = this.getModelSource(filters, filterOwner);\n assert2(apiVersion === \"v3\" /* V3 */, \"Stats API requires CARTO 3+\");\n let url;\n const parameters = { filters, spatialDataType };\n if (type === \"query\") {\n url = `${apiBaseUrl}/${apiVersion}/stats/${connectionName}/${spatialDataColumn}`;\n parameters.q = data;\n parameters.queryParameters = queryParameters;\n } else {\n url = `${apiBaseUrl}/${apiVersion}/stats/${connectionName}/${data}/${spatialDataColumn}`;\n }\n const headers = {\n Authorization: `Bearer ${this.props.accessToken}`,\n ...this.props.headers\n };\n const errorContext = {\n requestType: \"Tile stats\",\n connection: connectionName,\n type\n };\n return requestWithParameters({\n baseUrl: url,\n headers,\n signal,\n errorContext,\n parameters\n }).then(({ extent: { xmin, ymin, xmax, ymax } }) => ({\n bbox: [xmin, ymin, xmax, ymax]\n }));\n }\n};\n\n// src/widget-sources/widget-query-source.ts\nvar WidgetQuerySource = class extends WidgetRemoteSource {\n getModelSource(filters, filterOwner) {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: \"query\",\n data: this.props.sqlQuery,\n queryParameters: this.props.queryParameters\n };\n }\n};\n\n// src/operations/aggregation.ts\nvar aggregationFunctions = {\n count: (values) => values.length,\n min: (...args) => applyAggregationFunction(min, ...args),\n max: (...args) => applyAggregationFunction(max, ...args),\n sum: (...args) => applyAggregationFunction(sum2, ...args),\n avg: (...args) => applyAggregationFunction(avg, ...args)\n};\nfunction aggregate(feature2, keys, operation2) {\n if (!keys?.length) {\n throw new Error(\"Cannot aggregate a feature without having keys\");\n } else if (keys.length === 1) {\n const value = feature2[keys[0]];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n }\n const aggregationFn = aggregationFunctions[operation2];\n if (!aggregationFn) {\n throw new Error(`${operation2} isn't a valid aggregation function`);\n }\n return aggregationFn(\n keys.map((column) => {\n const value = feature2[column];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n })\n );\n}\nfunction isPotentiallyValidNumber(value) {\n return typeof value === \"string\" && value.trim().length > 0;\n}\nvar applyAggregationFunction = (aggFn, values, keys, operation2) => {\n const normalizedKeys = normalizeKeys(keys);\n const elements = (normalizedKeys?.length || 0) <= 1 ? filterFalsyElements(values, normalizedKeys || []) : values;\n return aggFn(elements, keys, operation2);\n};\nfunction filterFalsyElements(values, keys) {\n const filterFn = (value) => value !== null && value !== void 0;\n if (!keys?.length) {\n return values.filter(filterFn);\n }\n return values.filter((v2) => filterFn(v2[keys[0]]));\n}\nfunction avg(values, keys, joinOperation) {\n return sum2(values, keys, joinOperation) / (values.length || 1);\n}\nfunction sum2(values, keys, joinOperation) {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return values.reduce(\n (a, b) => a + aggregate(b, normalizedKeys, joinOperation),\n 0\n );\n }\n return values.reduce((a, b) => a + b, 0);\n}\nfunction min(values, keys, joinOperation) {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return values.reduce(\n (a, b) => Math.min(a, aggregate(b, normalizedKeys, joinOperation)),\n Infinity\n );\n }\n let min2 = Number.POSITIVE_INFINITY;\n for (const value of values) {\n min2 = Math.min(min2, value);\n }\n return min2;\n}\nfunction max(values, keys, joinOperation) {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return values.reduce(\n (a, b) => Math.max(a, aggregate(b, normalizedKeys, joinOperation)),\n -Infinity\n );\n }\n let max2 = Number.NEGATIVE_INFINITY;\n for (const value of values) {\n max2 = Math.max(max2, value);\n }\n return max2;\n}\nfunction normalizeKeys(keys) {\n return Array.isArray(keys) ? keys : typeof keys === \"string\" ? [keys] : void 0;\n}\n\n// src/operations/applySorting.ts\nvar import_thenby = __toESM(require_thenBy_module(), 1);\nfunction applySorting(features, {\n sortBy,\n sortByDirection = \"asc\",\n sortByColumnType = \"string\"\n} = {}) {\n if (sortBy === void 0) {\n return features;\n }\n const isValidSortBy = Array.isArray(sortBy) && sortBy.length || // sortBy can be an array of columns\n typeof sortBy === \"string\";\n if (!isValidSortBy) {\n throw new Error(\"Sorting options are bad formatted\");\n }\n const sortFn = createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType: sortByColumnType || \"string\"\n });\n return features.sort(sortFn);\n}\nfunction createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType\n}) {\n const [firstSortOption, ...othersSortOptions] = normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType\n });\n let sortFn = (0, import_thenby.firstBy)(...firstSortOption);\n for (const sortOptions of othersSortOptions) {\n sortFn = sortFn.thenBy(...sortOptions);\n }\n return sortFn;\n}\nfunction normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType\n}) {\n const numberFormat = sortByColumnType === \"number\" && {\n cmp: (a, b) => a - b\n };\n if (!Array.isArray(sortBy)) {\n sortBy = [sortBy];\n }\n return sortBy.map((sortByEl) => {\n if (typeof sortByEl === \"string\") {\n return [sortByEl, { direction: sortByDirection, ...numberFormat }];\n }\n if (Array.isArray(sortByEl)) {\n if (sortByEl[1] === void 0) {\n return [sortByEl, { direction: sortByDirection, ...numberFormat }];\n }\n if (typeof sortByEl[1] === \"object\") {\n const othersSortOptions = numberFormat ? { ...numberFormat, ...sortByEl[1] } : sortByEl[1];\n return [\n sortByEl[0],\n { direction: sortByDirection, ...othersSortOptions }\n ];\n }\n }\n return sortByEl;\n });\n}\n\n// src/operations/groupBy.ts\nfunction groupValuesByColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n operation: operation2,\n othersThreshold,\n orderBy = \"frequency_desc\"\n}) {\n if (Array.isArray(data) && data.length === 0) {\n return { rows: null };\n }\n const groups = data.reduce((accumulator, item) => {\n const group2 = item[keysColumn];\n const values = accumulator.get(group2) || [];\n accumulator.set(group2, values);\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n const isValid = (operation2 === \"count\" ? true : aggregatedValue !== null) && aggregatedValue !== void 0;\n if (isValid) {\n values.push(aggregatedValue);\n accumulator.set(group2, values);\n }\n return accumulator;\n }, /* @__PURE__ */ new Map());\n const targetOperation = aggregationFunctions[operation2];\n if (!targetOperation) {\n return { rows: [] };\n }\n const allCategories = Array.from(groups).map(([name, value]) => ({\n name,\n value: targetOperation(value)\n })).sort(getSorter(orderBy));\n if (othersThreshold && allCategories.length > othersThreshold) {\n const otherValue = allCategories.slice(othersThreshold).flatMap(({ name }) => groups.get(name));\n return {\n rows: allCategories,\n metadata: {\n others: targetOperation(otherValue)\n }\n };\n }\n return {\n rows: allCategories\n };\n}\nfunction getSorter(orderBy) {\n switch (orderBy) {\n case \"frequency_asc\":\n return (a, b) => a.value - b.value || nameCompare(a.name, b.name);\n case \"frequency_desc\":\n return (a, b) => b.value - a.value || nameCompare(a.name, b.name);\n case \"alphabetical_asc\":\n return (a, b) => nameCompare(a.name, b.name) || b.value - a.value;\n case \"alphabetical_desc\":\n return (a, b) => nameCompare(b.name, a.name) || b.value - a.value;\n }\n}\nfunction nameCompare(a, b) {\n if (typeof a === \"number\" && typeof b === \"number\") {\n return a - b;\n }\n return String(a ?? \"null\").localeCompare(String(b ?? \"null\"));\n}\n\n// src/utils/dateUtils.ts\nfunction getUTCMonday(date) {\n const dateCp = new Date(date);\n const day = dateCp.getUTCDay();\n const diff = dateCp.getUTCDate() - day + (day ? 1 : -6);\n dateCp.setUTCDate(diff);\n return Date.UTC(\n dateCp.getUTCFullYear(),\n dateCp.getUTCMonth(),\n dateCp.getUTCDate()\n );\n}\n\n// src/operations/groupByDate.ts\nvar GROUP_KEY_FN_MAPPING = {\n year: (date) => Date.UTC(date.getUTCFullYear()),\n month: (date) => Date.UTC(date.getUTCFullYear(), date.getUTCMonth()),\n week: (date) => getUTCMonday(date),\n day: (date) => Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()),\n hour: (date) => Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours()\n ),\n minute: (date) => Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes()\n ),\n second: (date) => Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n )\n};\nfunction groupValuesByDateColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n groupType,\n operation: operation2\n}) {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n const groupKeyFn = GROUP_KEY_FN_MAPPING[groupType];\n if (!groupKeyFn) {\n return null;\n }\n const groups = data.reduce((acc, item) => {\n const value = item[keysColumn];\n const formattedValue = new Date(value);\n const groupKey = groupKeyFn(formattedValue);\n if (!isNaN(groupKey)) {\n let groupedValues = acc.get(groupKey);\n if (!groupedValues) {\n groupedValues = [];\n acc.set(groupKey, groupedValues);\n }\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n const isValid = aggregatedValue !== null && aggregatedValue !== void 0;\n if (isValid) {\n groupedValues.push(aggregatedValue);\n acc.set(groupKey, groupedValues);\n }\n }\n return acc;\n }, /* @__PURE__ */ new Map());\n const targetOperation = aggregationFunctions[operation2];\n return [...groups.entries()].map(([name, value]) => ({\n name,\n value: targetOperation(value)\n })).sort((a, b) => a.name - b.name);\n}\n\n// src/operations/histogram.ts\nfunction histogram({\n data,\n valuesColumns,\n joinOperation,\n ticks,\n operation: operation2\n}) {\n if (Array.isArray(data) && data.length === 0) {\n return [];\n }\n const binsContainer = [Number.MIN_SAFE_INTEGER, ...ticks].map(\n (tick, index, arr) => ({\n bin: index,\n start: tick,\n end: index === arr.length - 1 ? Number.MAX_SAFE_INTEGER : arr[index + 1],\n values: []\n })\n );\n data.forEach((feature2) => {\n const featureValue = aggregate(\n feature2,\n valuesColumns,\n joinOperation\n );\n const isValid = featureValue !== null && featureValue !== void 0;\n if (!isValid) {\n return;\n }\n const binContainer = binsContainer.find(\n (bin) => bin.start <= featureValue && bin.end > featureValue\n );\n if (!binContainer) {\n return;\n }\n binContainer.values.push(featureValue);\n });\n const targetOperation = aggregationFunctions[operation2];\n const transformedBins = binsContainer.map(\n (binContainer) => binContainer.values\n );\n return transformedBins.map(\n (values) => values.length ? targetOperation(values) : 0\n );\n}\n\n// src/operations/scatterPlot.ts\nfunction scatterPlot({\n data,\n xAxisColumns,\n xAxisJoinOperation,\n yAxisColumns,\n yAxisJoinOperation\n}) {\n return data.reduce(\n (acc, feature2) => {\n const xValue = aggregate(\n feature2,\n xAxisColumns,\n xAxisJoinOperation\n );\n const xIsValid = xValue !== null && xValue !== void 0;\n const yValue = aggregate(\n feature2,\n yAxisColumns,\n yAxisJoinOperation\n );\n const yIsValid = yValue !== null && yValue !== void 0;\n if (xIsValid && yIsValid) {\n acc.push([xValue, yValue]);\n }\n return acc;\n },\n []\n );\n}\n\n// node_modules/geojson-equality-ts/dist/esm/index.js\nvar __defProp2 = Object.defineProperty;\nvar __name = (target, value) => __defProp2(target, \"name\", { value, configurable: true });\nvar _GeojsonEquality = class _GeojsonEquality2 {\n constructor(opts) {\n this.direction = false;\n this.compareProperties = true;\n var _a2, _b2, _c;\n this.precision = 10 ** -((_a2 = opts == null ? void 0 : opts.precision) != null ? _a2 : 17);\n this.direction = (_b2 = opts == null ? void 0 : opts.direction) != null ? _b2 : false;\n this.compareProperties = (_c = opts == null ? void 0 : opts.compareProperties) != null ? _c : true;\n }\n compare(g1, g2) {\n if (g1.type !== g2.type) {\n return false;\n }\n if (!sameLength(g1, g2)) {\n return false;\n }\n switch (g1.type) {\n case \"Point\":\n return this.compareCoord(g1.coordinates, g2.coordinates);\n case \"LineString\":\n return this.compareLine(g1.coordinates, g2.coordinates);\n case \"Polygon\":\n return this.comparePolygon(g1, g2);\n case \"GeometryCollection\":\n return this.compareGeometryCollection(g1, g2);\n case \"Feature\":\n return this.compareFeature(g1, g2);\n case \"FeatureCollection\":\n return this.compareFeatureCollection(g1, g2);\n default:\n if (g1.type.startsWith(\"Multi\")) {\n const g1s = explode(g1);\n const g2s = explode(\n g2\n );\n return g1s.every(\n (g1part) => g2s.some((g2part) => this.compare(g1part, g2part))\n );\n }\n }\n return false;\n }\n compareCoord(c1, c2) {\n return c1.length === c2.length && c1.every((c, i) => Math.abs(c - c2[i]) < this.precision);\n }\n compareLine(path1, path2, ind = 0, isPoly = false) {\n if (!sameLength(path1, path2)) {\n return false;\n }\n const p1 = path1;\n let p2 = path2;\n if (isPoly && !this.compareCoord(p1[0], p2[0])) {\n const startIndex = this.fixStartIndex(p2, p1);\n if (!startIndex) {\n return false;\n } else {\n p2 = startIndex;\n }\n }\n const sameDirection = this.compareCoord(p1[ind], p2[ind]);\n if (this.direction || sameDirection) {\n return this.comparePath(p1, p2);\n } else {\n if (this.compareCoord(p1[ind], p2[p2.length - (1 + ind)])) {\n return this.comparePath(p1.slice().reverse(), p2);\n }\n return false;\n }\n }\n fixStartIndex(sourcePath, targetPath) {\n let correctPath, ind = -1;\n for (let i = 0; i < sourcePath.length; i++) {\n if (this.compareCoord(sourcePath[i], targetPath[0])) {\n ind = i;\n break;\n }\n }\n if (ind >= 0) {\n correctPath = [].concat(\n sourcePath.slice(ind, sourcePath.length),\n sourcePath.slice(1, ind + 1)\n );\n }\n return correctPath;\n }\n comparePath(p1, p2) {\n return p1.every((c, i) => this.compareCoord(c, p2[i]));\n }\n comparePolygon(g1, g2) {\n if (this.compareLine(g1.coordinates[0], g2.coordinates[0], 1, true)) {\n const holes1 = g1.coordinates.slice(1, g1.coordinates.length);\n const holes2 = g2.coordinates.slice(1, g2.coordinates.length);\n return holes1.every(\n (h1) => holes2.some((h2) => this.compareLine(h1, h2, 1, true))\n );\n }\n return false;\n }\n compareGeometryCollection(g1, g2) {\n return sameLength(g1.geometries, g2.geometries) && this.compareBBox(g1, g2) && g1.geometries.every((g, i) => this.compare(g, g2.geometries[i]));\n }\n compareFeature(g1, g2) {\n return g1.id === g2.id && (this.compareProperties ? equal(g1.properties, g2.properties) : true) && this.compareBBox(g1, g2) && this.compare(g1.geometry, g2.geometry);\n }\n compareFeatureCollection(g1, g2) {\n return sameLength(g1.features, g2.features) && this.compareBBox(g1, g2) && g1.features.every((f, i) => this.compare(f, g2.features[i]));\n }\n compareBBox(g1, g2) {\n return Boolean(!g1.bbox && !g2.bbox) || (g1.bbox && g2.bbox ? this.compareCoord(g1.bbox, g2.bbox) : false);\n }\n};\n__name(_GeojsonEquality, \"GeojsonEquality\");\nvar GeojsonEquality = _GeojsonEquality;\nfunction sameLength(g1, g2) {\n return g1.coordinates ? g1.coordinates.length === g2.coordinates.length : g1.length === g2.length;\n}\n__name(sameLength, \"sameLength\");\nfunction explode(g) {\n return g.coordinates.map((part) => ({\n type: g.type.replace(\"Multi\", \"\"),\n coordinates: part\n }));\n}\n__name(explode, \"explode\");\nfunction geojsonEquality(g1, g2, opts) {\n const eq = new GeojsonEquality(opts);\n return eq.compare(g1, g2);\n}\n__name(geojsonEquality, \"geojsonEquality\");\nfunction equal(object1, object2) {\n if (object1 === null && object2 === null) {\n return true;\n }\n if (object1 === null || object2 === null) {\n return false;\n }\n const objKeys1 = Object.keys(object1);\n const objKeys2 = Object.keys(object2);\n if (objKeys1.length !== objKeys2.length) return false;\n for (var key of objKeys1) {\n const value1 = object1[key];\n const value2 = object2[key];\n const isObjects = isObject3(value1) && isObject3(value2);\n if (isObjects && !equal(value1, value2) || !isObjects && value1 !== value2) {\n return false;\n }\n }\n return true;\n}\n__name(equal, \"equal\");\nvar isObject3 = /* @__PURE__ */ __name((object) => {\n return object != null && typeof object === \"object\";\n}, \"isObject\");\n\n// node_modules/@turf/clean-coords/dist/esm/index.js\nfunction cleanCoords(geojson, options = {}) {\n var mutate = typeof options === \"object\" ? options.mutate : options;\n if (!geojson) throw new Error(\"geojson is required\");\n var type = getType(geojson);\n var newCoords = [];\n switch (type) {\n case \"LineString\":\n newCoords = cleanLine(geojson, type);\n break;\n case \"MultiLineString\":\n case \"Polygon\":\n getCoords(geojson).forEach(function(line) {\n newCoords.push(cleanLine(line, type));\n });\n break;\n case \"MultiPolygon\":\n getCoords(geojson).forEach(function(polygons) {\n var polyPoints = [];\n polygons.forEach(function(ring) {\n polyPoints.push(cleanLine(ring, type));\n });\n newCoords.push(polyPoints);\n });\n break;\n case \"Point\":\n return geojson;\n case \"MultiPoint\":\n var existing = {};\n getCoords(geojson).forEach(function(coord) {\n var key = coord.join(\"-\");\n if (!Object.prototype.hasOwnProperty.call(existing, key)) {\n newCoords.push(coord);\n existing[key] = true;\n }\n });\n break;\n default:\n throw new Error(type + \" geometry not supported\");\n }\n if (geojson.coordinates) {\n if (mutate === true) {\n geojson.coordinates = newCoords;\n return geojson;\n }\n return { type, coordinates: newCoords };\n } else {\n if (mutate === true) {\n geojson.geometry.coordinates = newCoords;\n return geojson;\n }\n return feature({ type, coordinates: newCoords }, geojson.properties, {\n bbox: geojson.bbox,\n id: geojson.id\n });\n }\n}\nfunction cleanLine(line, type) {\n var points = getCoords(line);\n if (points.length === 2 && !equals2(points[0], points[1])) return points;\n var newPoints = [];\n var secondToLast = points.length - 1;\n var newPointsLength = newPoints.length;\n newPoints.push(points[0]);\n for (var i = 1; i < secondToLast; i++) {\n var prevAddedPoint = newPoints[newPoints.length - 1];\n if (points[i][0] === prevAddedPoint[0] && points[i][1] === prevAddedPoint[1])\n continue;\n else {\n newPoints.push(points[i]);\n newPointsLength = newPoints.length;\n if (newPointsLength > 2) {\n if (isPointOnLineSegment3(\n newPoints[newPointsLength - 3],\n newPoints[newPointsLength - 1],\n newPoints[newPointsLength - 2]\n ))\n newPoints.splice(newPoints.length - 2, 1);\n }\n }\n }\n newPoints.push(points[points.length - 1]);\n newPointsLength = newPoints.length;\n if ((type === \"Polygon\" || type === \"MultiPolygon\") && equals2(points[0], points[points.length - 1]) && newPointsLength < 4) {\n throw new Error(\"invalid polygon\");\n }\n if (type === \"LineString\" && newPointsLength < 3) {\n return newPoints;\n }\n if (isPointOnLineSegment3(\n newPoints[newPointsLength - 3],\n newPoints[newPointsLength - 1],\n newPoints[newPointsLength - 2]\n ))\n newPoints.splice(newPoints.length - 2, 1);\n return newPoints;\n}\nfunction equals2(pt1, pt2) {\n return pt1[0] === pt2[0] && pt1[1] === pt2[1];\n}\nfunction isPointOnLineSegment3(start, end, point2) {\n var x = point2[0], y = point2[1];\n var startX = start[0], startY = start[1];\n var endX = end[0], endY = end[1];\n var dxc = x - startX;\n var dyc = y - startY;\n var dxl = endX - startX;\n var dyl = endY - startY;\n var cross = dxc * dyl - dyc * dxl;\n if (cross !== 0) return false;\n else if (Math.abs(dxl) >= Math.abs(dyl))\n return dxl > 0 ? startX <= x && x <= endX : endX <= x && x <= startX;\n else return dyl > 0 ? startY <= y && y <= endY : endY <= y && y <= startY;\n}\n\n// node_modules/@turf/boolean-equal/dist/esm/index.js\nfunction booleanEqual(feature1, feature2, options = {}) {\n let precision2 = options.precision;\n precision2 = precision2 === void 0 || precision2 === null || isNaN(precision2) ? 6 : precision2;\n if (typeof precision2 !== \"number\" || !(precision2 >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const type1 = getGeom(feature1).type;\n const type2 = getGeom(feature2).type;\n if (type1 !== type2) return false;\n return geojsonEquality(cleanCoords(feature1), cleanCoords(feature2), {\n precision: precision2\n });\n}\n\n// src/widget-sources/widget-tileset-source-impl.ts\nvar WidgetTilesetSourceImpl = class extends WidgetSource {\n constructor() {\n super(...arguments);\n __publicField(this, \"_tiles\", []);\n __publicField(this, \"_features\", []);\n __publicField(this, \"_tileFeatureExtractOptions\", {});\n __publicField(this, \"_tileFeatureExtractPreviousInputs\", {});\n }\n /**\n * Loads features as a list of tiles (typically provided by deck.gl).\n * After tiles are loaded, {@link extractTileFeatures} must be called\n * before computing statistics on the tiles.\n */\n loadTiles(tiles) {\n this._tiles = tiles;\n this._features.length = 0;\n }\n /** Configures options used to extract features from tiles. */\n setTileFeatureExtractOptions(options) {\n this._tileFeatureExtractOptions = options;\n this._features.length = 0;\n }\n _extractTileFeatures(spatialFilter) {\n const prevInputs = this._tileFeatureExtractPreviousInputs;\n if (this._features.length && spatialFilterEquals(prevInputs.spatialFilter, spatialFilter)) {\n return;\n }\n this._features = tileFeatures({\n ...assignOptional({}, this.props, this._tileFeatureExtractOptions),\n tiles: this._tiles,\n spatialFilter\n });\n prevInputs.spatialFilter = spatialFilter;\n }\n /**\n * Loads features as GeoJSON (used for testing).\n * @experimental\n * @internal Not for public use. Spatial filters in other method calls will be ignored.\n */\n loadGeoJSON({\n geojson,\n spatialFilter\n }) {\n this._features = geojsonFeatures({\n geojson,\n spatialFilter,\n ...this._tileFeatureExtractOptions\n });\n this._tileFeatureExtractPreviousInputs.spatialFilter = spatialFilter;\n }\n async getFeatures() {\n throw new Error(\"getFeatures not supported for tilesets\");\n }\n async getFormula({\n column = \"*\",\n operation: operation2 = AggregationTypes.Count,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter\n }) {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n if (filteredFeatures.length === 0 && operation2 !== AggregationTypes.Count) {\n return { value: null };\n }\n if (operation2 === AggregationTypes.Custom) {\n throw new Error(\"Custom aggregation not supported for tilesets\");\n }\n if (column && column !== \"*\" || operation2 !== AggregationTypes.Count) {\n assertColumn(this._features, column);\n }\n const targetOperation = aggregationFunctions[operation2];\n assert2(targetOperation, `Unsupported aggregation operation: ${operation2}`);\n return {\n value: targetOperation(filteredFeatures, column, joinOperation)\n };\n }\n async getHistogram({\n operation: operation2 = AggregationTypes.Count,\n ticks,\n column,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter\n }) {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n if (!this._features.length) {\n return [];\n }\n assertColumn(this._features, column);\n return histogram({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(column),\n joinOperation,\n ticks,\n operation: operation2\n });\n }\n async getCategories({\n column,\n operation: operation2 = AggregationTypes.Count,\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n othersThreshold,\n orderBy = \"frequency_desc\",\n rawResult\n }) {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n if (!filteredFeatures.length) {\n return [];\n }\n assertColumn(this._features, column, operationColumn);\n const result = groupValuesByColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n joinOperation,\n keysColumn: column,\n operation: operation2,\n othersThreshold,\n orderBy\n });\n if (rawResult) {\n return result;\n }\n if (!othersThreshold) {\n return result?.rows || [];\n }\n return [\n ...result?.rows || [],\n { name: OTHERS_CATEGORY_NAME, value: result?.metadata?.others }\n ];\n }\n async getScatter({\n xAxisColumn,\n yAxisColumn,\n xAxisJoinOperation,\n yAxisJoinOperation,\n filters,\n filterOwner,\n spatialFilter\n }) {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n if (!filteredFeatures.length) {\n return [];\n }\n assertColumn(this._features, xAxisColumn, yAxisColumn);\n return scatterPlot({\n data: filteredFeatures,\n xAxisColumns: normalizeColumns(xAxisColumn),\n xAxisJoinOperation,\n yAxisColumns: normalizeColumns(yAxisColumn),\n yAxisJoinOperation\n });\n }\n async getTable({\n columns,\n searchFilterColumn,\n searchFilterText,\n sortBy,\n sortDirection,\n sortByColumnType,\n offset = 0,\n limit = 10,\n filters,\n filterOwner,\n spatialFilter\n }) {\n let filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n if (!filteredFeatures.length) {\n return { rows: [], totalCount: 0 };\n }\n if (searchFilterColumn && searchFilterText) {\n console.warn(\n 'WidgetTilesetSource: \"searchFilterText\" is deprecated, use \"filters\" and FilterType.STRING_SEARCH instead.'\n );\n filteredFeatures = filteredFeatures.filter(\n (row) => row[searchFilterColumn] && String(row[searchFilterColumn]).toLowerCase().includes(String(searchFilterText).toLowerCase())\n );\n }\n let rows = applySorting(filteredFeatures, {\n sortBy,\n sortByDirection: sortDirection,\n sortByColumnType\n });\n const totalCount = rows.length;\n rows = rows.slice(\n Math.min(offset, totalCount),\n Math.min(offset + limit, totalCount)\n );\n rows = rows.map((srcRow) => {\n const dstRow = {};\n for (const column of columns) {\n dstRow[column] = srcRow[column];\n }\n return dstRow;\n });\n return { rows, totalCount };\n }\n async getTimeSeries({\n column,\n stepSize,\n operation: operation2,\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter\n }) {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n if (!filteredFeatures.length) {\n return { rows: [] };\n }\n assertColumn(this._features, column, operationColumn);\n assert2(\n operation2 !== \"custom\",\n \"Custom operation not supported for tilesets\"\n );\n const rows = groupValuesByDateColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n keysColumn: column,\n groupType: stepSize,\n operation: operation2,\n joinOperation\n }) || [];\n return { rows };\n }\n async getRange({\n column,\n filters,\n filterOwner,\n spatialFilter\n }) {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n if (!this._features.length) {\n return null;\n }\n assertColumn(this._features, column);\n return {\n min: aggregationFunctions.min(filteredFeatures, column),\n max: aggregationFunctions.max(filteredFeatures, column)\n };\n }\n async getAggregations({\n aggregations,\n filters,\n filterOwner,\n spatialFilter\n }) {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n if (!this._features.length) {\n return { rows: [] };\n }\n assert2(\n typeof aggregations !== \"string\",\n \"Unsupported tileset SQL aggregation\"\n );\n const result = {};\n const usedAliases = /* @__PURE__ */ new Set();\n for (const { column, operation: operation2, alias } of aggregations) {\n if (column && column !== \"*\" || operation2 !== AggregationTypes.Count) {\n assertColumn(this._features, column);\n }\n const aliasKey = alias.toLowerCase();\n assert2(!usedAliases.has(aliasKey), `Duplicate alias: ${aliasKey}`);\n usedAliases.add(aliasKey);\n const targetOperation = aggregationFunctions[operation2];\n assert2(targetOperation, `Unsupported operation: ${operation2}`);\n result[alias] = targetOperation(filteredFeatures, column);\n }\n return { rows: [result] };\n }\n /** @experimental */\n async getExtent() {\n return Promise.reject(new Error(\"not implemented\"));\n }\n /****************************************************************************\n * INTERNAL\n */\n _getFilteredFeatures(spatialFilter, filters, filterOwner) {\n this._extractTileFeatures(spatialFilter);\n return applyFilters(\n this._features,\n getApplicableFilters(filterOwner, filters || this.props.filters),\n this.props.filtersLogicalOperator || \"and\"\n );\n }\n};\nfunction assertColumn(features, ...columnArgs) {\n const columns = Array.from(new Set(columnArgs.map(normalizeColumns).flat()));\n const featureKeys = Object.keys(features[0]);\n const invalidColumns = columns.filter(\n (column) => column && !featureKeys.includes(column)\n );\n if (invalidColumns.length) {\n throw new InvalidColumnError(\n `Missing column(s): ${invalidColumns.join(\", \")}`\n );\n }\n}\nfunction normalizeColumns(columns) {\n return Array.isArray(columns) ? columns : typeof columns === \"string\" ? [columns] : [];\n}\nfunction spatialFilterEquals(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n return booleanEqual(a, b);\n}\n\n// src/widget-sources/widget-tileset-source.ts\nvar WidgetTilesetSource = class extends WidgetSource {\n constructor(props) {\n super(props);\n __publicField(this, \"_localImpl\", null);\n __publicField(this, \"_workerImpl\", null);\n __publicField(this, \"_workerEnabled\");\n __publicField(this, \"_workerNextRequestId\", 1);\n this._workerEnabled = (props.widgetWorker ?? true) && true && typeof Worker !== \"undefined\";\n if (!this._workerEnabled) {\n this._localImpl = new WidgetTilesetSourceImpl(this.props);\n }\n }\n destroy() {\n this._localImpl?.destroy();\n this._localImpl = null;\n this._workerImpl?.terminate();\n this._workerImpl = null;\n super.destroy();\n }\n /////////////////////////////////////////////////////////////////////////////\n // WEB WORKER MANAGEMENT\n /**\n * Returns an initialized Worker, to be reused for the lifecycle of this\n * source instance.\n */\n _getWorker() {\n if (this._workerImpl) {\n return this._workerImpl;\n }\n if (this.props.widgetWorkerUrl) {\n this._workerImpl = new Worker(this.props.widgetWorkerUrl, {\n name: \"cartowidgettileset\"\n });\n } else {\n this._workerImpl = new Worker(\n new URL(\"@carto/api-client/worker\", import.meta.url),\n {\n type: \"module\",\n name: \"cartowidgettileset\"\n }\n );\n }\n this._workerImpl.addEventListener(\"error\", (e) => {\n console.error(\"widget-tileset-source worker error\", e);\n });\n this._workerImpl.postMessage({\n method: \"init\" /* INIT */,\n params: [this.props]\n });\n return this._workerImpl;\n }\n /** Executes a given method on the worker. */\n _executeWorkerMethod(method, params, signal) {\n if (!this._workerEnabled) {\n return this._localImpl[method](...params);\n }\n const worker = this._getWorker();\n const requestId = this._workerNextRequestId++;\n let resolve = null;\n let reject = null;\n function onMessage(e) {\n const response = e.data;\n if (response.requestId !== requestId) return;\n if (signal?.aborted) return;\n if (response.ok) {\n resolve(response.result);\n } else {\n reject(new Error(response.error));\n }\n }\n function onAbort() {\n reject(new Error(signal.reason));\n }\n worker.addEventListener(\"message\", onMessage);\n signal?.addEventListener(\"abort\", onAbort);\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n worker.postMessage({\n requestId,\n method,\n params\n });\n });\n void promise.finally(() => {\n worker.removeEventListener(\"message\", onMessage);\n signal?.removeEventListener(\"abort\", onAbort);\n });\n return promise;\n }\n /////////////////////////////////////////////////////////////////////////////\n // DATA LOADING\n /**\n * Loads features as a list of tiles (typically provided by deck.gl).\n * After tiles are loaded, {@link extractTileFeatures} must be called\n * before computing statistics on the tiles.\n */\n loadTiles(tiles) {\n if (!this._workerEnabled) {\n return this._localImpl.loadTiles(tiles);\n }\n const worker = this._getWorker();\n tiles = tiles.map(\n ({ id, index, bbox: bbox2, isVisible, data }) => {\n const tile = {\n id,\n index,\n isVisible,\n data,\n bbox: bbox2\n };\n return tile;\n }\n );\n worker.postMessage({\n method: \"loadTiles\" /* LOAD_TILES */,\n params: [tiles]\n });\n }\n /** Configures options used to extract features from tiles. */\n setTileFeatureExtractOptions(options) {\n if (!this._workerEnabled) {\n return this._localImpl?.setTileFeatureExtractOptions(options);\n }\n const worker = this._getWorker();\n worker.postMessage({\n method: \"setTileFeatureExtractOptions\" /* SET_TILE_FEATURE_EXTRACT_OPTIONS */,\n params: [options]\n });\n }\n /**\n * Loads features as GeoJSON (used for testing).\n * @experimental\n * @internal Not for public use. Spatial filters in other method calls will be ignored.\n */\n loadGeoJSON({\n geojson,\n spatialFilter\n }) {\n if (!this._workerEnabled) {\n return this._localImpl.loadGeoJSON({ geojson, spatialFilter });\n }\n const worker = this._getWorker();\n worker.postMessage({\n method: \"loadGeoJSON\" /* LOAD_GEOJSON */,\n params: [{ geojson, spatialFilter }]\n });\n }\n /////////////////////////////////////////////////////////////////////////////\n // WIDGETS API\n // eslint-disable-next-line @typescript-eslint/require-await\n async getFeatures() {\n throw new Error(\"getFeatures not supported for tilesets\");\n }\n async getFormula({\n signal,\n ...options\n }) {\n return this._executeWorkerMethod(\"getFormula\" /* GET_FORMULA */, [options], signal);\n }\n async getHistogram({\n signal,\n ...options\n }) {\n return this._executeWorkerMethod(\"getHistogram\" /* GET_HISTOGRAM */, [options], signal);\n }\n async getCategories({\n signal,\n ...options\n }) {\n return this._executeWorkerMethod(\"getCategories\" /* GET_CATEGORIES */, [options], signal);\n }\n async getScatter({\n signal,\n ...options\n }) {\n return this._executeWorkerMethod(\"getScatter\" /* GET_SCATTER */, [options], signal);\n }\n async getTable({\n signal,\n ...options\n }) {\n return this._executeWorkerMethod(\"getTable\" /* GET_TABLE */, [options], signal);\n }\n async getTimeSeries({\n signal,\n ...options\n }) {\n return this._executeWorkerMethod(\"getTimeSeries\" /* GET_TIME_SERIES */, [options], signal);\n }\n async getRange({\n signal,\n ...options\n }) {\n return this._executeWorkerMethod(\"getRange\" /* GET_RANGE */, [options], signal);\n }\n async getAggregations({\n signal,\n ...options\n }) {\n return this._executeWorkerMethod(\n \"getAggregations\" /* GET_AGGREGATIONS */,\n [options],\n signal\n );\n }\n /** @experimental */\n async getExtent() {\n return Promise.resolve({\n bbox: this.props.spatialDataBounds\n });\n }\n};\n\n// src/widget-sources/widget-raster-source.ts\nvar WidgetRasterSource = class extends WidgetTilesetSource {\n};\n\n// src/widget-sources/widget-table-source.ts\nvar WidgetTableSource = class extends WidgetRemoteSource {\n getModelSource(filters, filterOwner) {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: \"table\",\n data: this.props.tableName\n };\n }\n};\n\n// src/sources/h3-query-source.ts\nvar h3QuerySource = async function(options) {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n sqlQuery,\n spatialDataColumn = \"h3\",\n queryParameters,\n filters\n } = options;\n const spatialDataType = \"h3\";\n const urlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType,\n q: sqlQuery\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource(\"query\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType: getWidgetSpatialDataType(\n spatialDataType,\n spatialDataColumn,\n result.schema\n )\n })\n })\n );\n};\n\n// src/sources/h3-table-source.ts\nvar h3TableSource = async function(options) {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n spatialDataColumn = \"h3\",\n tableName,\n filters\n } = options;\n const spatialDataType = \"h3\";\n const urlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource(\"table\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType: getWidgetSpatialDataType(\n spatialDataType,\n spatialDataColumn,\n result.schema\n )\n })\n })\n );\n};\n\n// src/utils/getTileFormat.ts\nfunction getTileFormat(tilejson) {\n const tileParams = new URL(tilejson.tiles[0]).searchParams;\n return tileParams.get(\"formatTiles\") === \"mvt\" ? \"mvt\" /* MVT */ : \"binary\" /* BINARY */;\n}\n\n// src/sources/h3-tileset-source.ts\nvar h3TilesetSource = async function(options) {\n const { tableName, spatialDataColumn = \"h3\" } = options;\n const urlParameters = { name: tableName };\n return baseSource(\"tileset\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result),\n spatialDataColumn,\n spatialDataType: \"h3\",\n spatialDataBounds: result.bounds\n })\n })\n );\n};\n\n// src/sources/raster-source.ts\nvar rasterSource = async function(options) {\n const { tableName, filters } = options;\n const urlParameters = { name: tableName };\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource(\"raster\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetRasterSource({\n ...options,\n tileFormat: getTileFormat(result),\n spatialDataColumn: \"quadbin\",\n spatialDataType: \"quadbin\",\n spatialDataBounds: result.bounds,\n rasterMetadata: result.raster_metadata\n })\n })\n );\n};\n\n// src/sources/quadbin-query-source.ts\nvar quadbinQuerySource = async function(options) {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n sqlQuery,\n spatialDataColumn = \"quadbin\",\n queryParameters,\n filters\n } = options;\n const spatialDataType = \"quadbin\";\n const urlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource(\"query\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType: getWidgetSpatialDataType(\n spatialDataType,\n spatialDataColumn,\n result.schema\n )\n })\n })\n );\n};\n\n// src/sources/quadbin-table-source.ts\nvar quadbinTableSource = async function(options) {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n spatialDataColumn = \"quadbin\",\n tableName,\n filters\n } = options;\n const spatialDataType = \"quadbin\";\n const urlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource(\"table\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType: getWidgetSpatialDataType(\n spatialDataType,\n spatialDataColumn,\n result.schema\n )\n })\n })\n );\n};\n\n// src/sources/quadbin-tileset-source.ts\nvar quadbinTilesetSource = async function(options) {\n const { tableName, spatialDataColumn = \"quadbin\" } = options;\n const urlParameters = { name: tableName };\n return baseSource(\"tileset\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result),\n spatialDataColumn,\n spatialDataType: \"quadbin\",\n spatialDataBounds: result.bounds\n })\n })\n );\n};\n\n// src/sources/vector-query-source.ts\nvar vectorQuerySource = async function(options) {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n sqlQuery,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n queryParameters,\n aggregationExp\n } = options;\n const spatialDataType = \"geo\";\n const urlParameters = {\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n q: sqlQuery\n };\n if (columns) {\n urlParameters.columns = columns.join(\",\");\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n return baseSource(\"query\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution\n })\n })\n );\n};\n\n// src/sources/vector-table-source.ts\nvar vectorTableSource = async function(options) {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n tableName,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n aggregationExp\n } = options;\n const spatialDataType = \"geo\";\n const urlParameters = {\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString()\n };\n if (columns) {\n urlParameters.columns = columns.join(\",\");\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n return baseSource(\"table\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution\n })\n })\n );\n};\n\n// src/sources/vector-tileset-source.ts\nvar vectorTilesetSource = async function(options) {\n const { tableName, spatialDataColumn = DEFAULT_GEO_COLUMN } = options;\n const urlParameters = { name: tableName };\n return baseSource(\"tileset\", options, urlParameters).then(\n (result) => ({\n ...result,\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result),\n spatialDataColumn,\n spatialDataType: \"geo\",\n spatialDataBounds: result.bounds\n })\n })\n );\n};\n\n// src/sources/trajectory-query-source.ts\nvar trajectoryQuerySource = async function(options) {\n const {\n columns,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n sqlQuery,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n queryParameters,\n aggregationExp,\n trajectoryIdColumn,\n timestampColumn\n } = options;\n const spatialDataType = \"trajectory\";\n const urlParameters = {\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n q: sqlQuery,\n trajectoryIdColumn,\n timestampColumn\n };\n if (columns) {\n urlParameters.columns = columns.join(\",\");\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n const result = await baseSource(\n \"query\",\n options,\n urlParameters\n );\n const widgetSource = new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution\n });\n const timestampRange = await widgetSource.getRange({ column: timestampColumn });\n return {\n ...result,\n widgetSource,\n timestampRange\n };\n};\n\n// src/sources/trajectory-table-source.ts\nvar trajectoryTableSource = async function(options) {\n const {\n columns,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n tableName,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n aggregationExp,\n trajectoryIdColumn,\n timestampColumn\n } = options;\n const spatialDataType = \"trajectory\";\n const urlParameters = {\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n trajectoryIdColumn,\n timestampColumn\n };\n if (columns) {\n urlParameters.columns = columns.join(\",\");\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n const result = await baseSource(\n \"table\",\n options,\n urlParameters\n );\n const widgetSource = new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution\n });\n const timestampRange = await widgetSource.getRange({ column: timestampColumn });\n return {\n ...result,\n widgetSource,\n timestampRange\n };\n};\n\n// src/api/query.ts\nvar query = async function(options) {\n const {\n apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl,\n maxLengthURL = SOURCE_DEFAULTS.maxLengthURL,\n clientId = getClient(),\n localCache,\n connectionName,\n sqlQuery,\n queryParameters,\n internalParameters\n } = options;\n const urlParameters = { q: sqlQuery };\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n const baseUrl = buildQueryUrl({ apiBaseUrl, connectionName });\n const headers = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers\n };\n const parameters = {\n client: clientId,\n ...options.tags,\n ...internalParameters,\n ...urlParameters\n };\n const errorContext = {\n requestType: \"SQL\",\n connection: options.connectionName,\n type: \"query\",\n source: JSON.stringify(parameters, void 0, 2)\n };\n return await requestWithParameters({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n signal: options.signal\n });\n};\n\n// src/fetch-map/basemap-styles.ts\nvar cartoStyleUrlTemplate = \"https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json\";\nvar CARTO_MAP_STYLES = [\"positron\", \"dark-matter\", \"voyager\"];\nvar GOOGLE_BASEMAPS = {\n roadmap: {\n mapTypeId: \"roadmap\",\n mapId: \"3754c817b510f791\"\n },\n \"google-positron\": {\n mapTypeId: \"roadmap\",\n mapId: \"ea84ae4203ef21cd\"\n },\n \"google-dark-matter\": {\n mapTypeId: \"roadmap\",\n mapId: \"2fccc3b36c22a0e2\"\n },\n \"google-voyager\": {\n mapTypeId: \"roadmap\",\n mapId: \"885caf1e15bb9ef2\"\n },\n satellite: {\n mapTypeId: \"satellite\"\n },\n hybrid: {\n mapTypeId: \"hybrid\"\n },\n terrain: {\n mapTypeId: \"terrain\"\n }\n};\nvar STYLE_LAYER_GROUPS = [\n {\n slug: \"label\",\n filter: ({ id }) => Boolean(\n id.match(\n /(?=(label|_label|place-|place_|poi-|poi_|watername_|roadname_|housenumber))/\n )\n ),\n defaultVisibility: true\n },\n {\n slug: \"road\",\n filter: ({ id }) => Boolean(id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/)),\n defaultVisibility: true\n },\n {\n slug: \"border\",\n filter: ({ id }) => Boolean(id.match(/border|boundaries|boundary_/)),\n defaultVisibility: false\n },\n {\n slug: \"building\",\n filter: ({ id }) => Boolean(id.match(/building/)),\n defaultVisibility: true\n },\n {\n slug: \"water\",\n filter: ({ id }) => Boolean(id.match(/(?=(water|stream|ferry))/)),\n defaultVisibility: true\n },\n {\n slug: \"land\",\n filter: ({ id }) => Boolean(\n id.match(/(?=(parks|landcover|industrial|sand|hillshade|park_))/)\n ),\n defaultVisibility: true\n }\n];\nfunction applyLayerGroupFilters(style, visibleLayerGroups) {\n if (!Array.isArray(style?.layers)) {\n return style;\n }\n const removedLayerFilters = STYLE_LAYER_GROUPS.filter(\n (lg) => !visibleLayerGroups[lg.slug]\n ).map((lg) => lg.filter);\n const visibleLayers = style.layers.filter(\n (layer) => removedLayerFilters.every((match) => !match(layer))\n );\n return {\n ...style,\n layers: visibleLayers\n };\n}\nfunction someLayerGroupsDisabled(visibleLayerGroups) {\n return visibleLayerGroups && Object.values(visibleLayerGroups).every(Boolean) === false;\n}\nfunction getStyleUrl(styleType) {\n return cartoStyleUrlTemplate.replace(\"{basemap}\", styleType);\n}\nasync function fetchStyle({\n styleUrl,\n errorContext\n}) {\n let response;\n return await fetch(styleUrl, { mode: \"cors\" }).then((res) => {\n response = res;\n return res.json();\n }).catch((error) => {\n throw new CartoAPIError(\n error,\n { ...errorContext, requestType: \"Basemap style\" },\n response\n );\n });\n}\nvar basemap_styles_default = {\n VOYAGER: getStyleUrl(\"voyager\"),\n POSITRON: getStyleUrl(\"positron\"),\n DARK_MATTER: getStyleUrl(\"dark-matter\"),\n VOYAGER_NOLABELS: getStyleUrl(\"voyager-nolabels\"),\n POSITRON_NOLABELS: getStyleUrl(\"positron-nolabels\"),\n DARK_MATTER_NOLABELS: getStyleUrl(\"dark-matter-nolabels\")\n};\n\n// src/fetch-map/vec-expr-evaluator.ts\nimport jsep from \"jsep\";\nfunction createVecExprEvaluator(expression) {\n try {\n const parsed = compile(expression);\n const evalFun = (context) => evaluate(parsed, context);\n evalFun.symbols = getSymbols(parsed);\n return evalFun;\n } catch {\n return null;\n }\n}\nfunction evaluateVecExpr(expression, context) {\n try {\n return createVecExprEvaluator(expression)?.(context);\n } catch {\n return null;\n }\n}\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n ErrorCode2[ErrorCode2[\"InvalidSyntax\"] = 0] = \"InvalidSyntax\";\n ErrorCode2[ErrorCode2[\"UnknownIdentifier\"] = 1] = \"UnknownIdentifier\";\n return ErrorCode2;\n})(ErrorCode || {});\nfunction validateVecExprSyntax(expression, context) {\n let parsed;\n try {\n parsed = compile(expression);\n } catch (e) {\n return {\n valid: false,\n errorCode: 0 /* InvalidSyntax */,\n errorMessage: e && \"message\" in e ? String(e.message) : String(e)\n };\n }\n return validate(parsed, context);\n}\nfunction createResultArray(typeTemplate, length2 = typeTemplate.length) {\n return new Array(length2);\n}\nfunction isVecLike(a) {\n return Array.isArray(a) || ArrayBuffer.isView(a);\n}\nvar createBinopVec = (scalarBinOp) => (left, right) => {\n const length2 = Math.min(left.length, right.length);\n const r = createResultArray(left, length2);\n for (let i = 0; i < length2; i++) {\n r[i] = scalarBinOp(left[i], right[i]);\n }\n return r;\n};\nvar createBinopVecNum = (scalarBinOp) => (left, right) => {\n const length2 = left.length;\n const r = createResultArray(left, length2);\n for (let i = 0; i < length2; i++) {\n r[i] = scalarBinOp(left[i], right);\n }\n return r;\n};\nvar createBinopNumVec = (scalarBinOp) => (left, right) => {\n const length2 = right.length;\n const r = createResultArray(right, length2);\n for (let i = 0; i < length2; i++) {\n r[i] = scalarBinOp(left, right[i]);\n }\n return r;\n};\nvar createUnopVec = (scalarUnop) => (a) => {\n const length2 = a.length;\n const r = createResultArray(a, length2);\n for (let i = 0; i < length2; i++) {\n r[i] = scalarUnop(a[i]);\n }\n return r;\n};\nfunction mapDictValues(dict, fun) {\n return Object.keys(dict).reduce(\n (acc, key) => {\n acc[key] = fun(dict[key]);\n return acc;\n },\n {}\n );\n}\nvar binopsNum = {\n \"||\": (a, b) => a || b,\n \"&&\": (a, b) => a && b,\n \"|\": (a, b) => a | b,\n \"^\": (a, b) => a ^ b,\n \"&\": (a, b) => a & b,\n \"==\": (a, b) => Number(a == b),\n \"!=\": (a, b) => Number(a != b),\n \"===\": (a, b) => Number(a === b),\n \"!==\": (a, b) => Number(a !== b),\n \"<\": (a, b) => Number(a < b),\n \">\": (a, b) => Number(a > b),\n \"<=\": (a, b) => Number(a <= b),\n \">=\": (a, b) => Number(a >= b),\n \"<<\": (a, b) => a << b,\n \">>\": (a, b) => a >> b,\n \">>>\": (a, b) => a >>> b,\n \"+\": (a, b) => a + b,\n \"-\": (a, b) => a - b,\n \"*\": (a, b) => a * b,\n \"/\": (a, b) => a / b,\n \"%\": (a, b) => a % b\n};\nvar unopsNum = {\n \"-\": (a) => -a,\n \"+\": (a) => +a,\n \"~\": (a) => ~a,\n \"!\": (a) => Number(!a)\n};\nvar binopsVector = mapDictValues(binopsNum, createBinopVec);\nvar binopsNumVec = mapDictValues(binopsNum, createBinopNumVec);\nvar binopsVecNum = mapDictValues(binopsNum, createBinopVecNum);\nvar unopsVector = mapDictValues(unopsNum, createUnopVec);\nfunction getBinop(operator, left, right) {\n const isLeftVec = isVecLike(left);\n const isRightVec = isVecLike(right);\n if (isLeftVec && isRightVec) {\n return binopsVector[operator];\n } else if (isLeftVec) {\n return binopsVecNum[operator];\n } else if (isRightVec) {\n return binopsNumVec[operator];\n } else {\n return binopsNum[operator];\n }\n}\nfunction evaluate(_node, context) {\n const node = _node;\n switch (node.type) {\n case \"BinaryExpression\": {\n const left = evaluate(node.left, context);\n const right = evaluate(node.right, context);\n const binopFun = getBinop(node.operator, left, right);\n return binopFun(left, right);\n }\n case \"ConditionalExpression\": {\n const val = evaluate(node.test, context);\n if (isVecLike(val)) {\n const length2 = val.length;\n const consequentVal = evaluate(node.consequent, context);\n const alternateVal = evaluate(node.alternate, context);\n const r = createResultArray(val);\n for (let i = 0; i < length2; i++) {\n const entryVal = val[i] ? consequentVal : alternateVal;\n r[i] = isVecLike(entryVal) ? entryVal[i] ?? NaN : entryVal;\n }\n return r;\n } else {\n return val ? evaluate(node.consequent, context) : evaluate(node.alternate, context);\n }\n }\n case \"Identifier\":\n return context[node.name];\n case \"Literal\":\n return node.value;\n case \"UnaryExpression\": {\n const val = evaluate(node.argument, context);\n const unopFun = isVecLike(val) ? unopsVector[node.operator] : unopsNum[node.operator];\n return unopFun(val);\n }\n default:\n return void 0;\n }\n}\nvar validResult = { valid: true };\nfunction visit(_node, visitor) {\n const node = _node;\n visitor(node);\n switch (node.type) {\n case \"BinaryExpression\": {\n visit(node.left, visitor);\n visit(node.right, visitor);\n break;\n }\n case \"ConditionalExpression\": {\n visit(node.test, visitor);\n visit(node.consequent, visitor);\n visit(node.alternate, visitor);\n break;\n }\n case \"UnaryExpression\": {\n visit(node.argument, visitor);\n break;\n }\n }\n}\nvar supportedExpressionTypes = [\n \"BinaryExpression\",\n \"UnaryExpression\",\n \"ConditionalExpression\",\n \"LogicalExpression\",\n \"Identifier\",\n \"Literal\"\n];\nfunction validate(_node, context) {\n const node = _node;\n const errors = [];\n visit(node, (node2) => {\n if (!supportedExpressionTypes.includes(node2.type)) {\n errors.push({\n valid: false,\n errorCode: 0 /* InvalidSyntax */,\n errorMessage: `Not allowed`\n });\n return;\n }\n if (node2.type === \"Identifier\") {\n if (!Object.prototype.hasOwnProperty.call(context, node2.name)) {\n return errors.push({\n valid: false,\n errorCode: 1 /* UnknownIdentifier */,\n errorMessage: `\"${node2.name}\" not found`\n });\n }\n }\n if (node2.type === \"Literal\") {\n if (typeof node2.value !== \"number\") {\n return errors.push({\n valid: false,\n errorCode: 0 /* InvalidSyntax */,\n errorMessage: `Only number literals are supported`\n });\n }\n }\n });\n return errors.length ? errors[0] : validResult;\n}\nfunction getSymbols(node) {\n const symbols = /* @__PURE__ */ new Set();\n visit(node, (node2) => {\n if (node2.type === \"Identifier\") {\n symbols.add(node2.name);\n }\n });\n return Array.from(symbols);\n}\nfunction compile(expression) {\n return jsep(expression);\n}\n\n// node_modules/d3-array/src/ascending.js\nfunction ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n// node_modules/d3-array/src/extent.js\nfunction extent(values, valueof) {\n let min2;\n let max2;\n if (valueof === void 0) {\n for (const value of values) {\n if (value != null) {\n if (min2 === void 0) {\n if (value >= value) min2 = max2 = value;\n } else {\n if (min2 > value) min2 = value;\n if (max2 < value) max2 = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min2 === void 0) {\n if (value >= value) min2 = max2 = value;\n } else {\n if (min2 > value) min2 = value;\n if (max2 < value) max2 = value;\n }\n }\n }\n }\n return [min2, max2];\n}\n\n// node_modules/internmap/src/index.js\nvar InternMap = class extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, { _intern: { value: /* @__PURE__ */ new Map() }, _key: { value: key } });\n if (entries != null) for (const [key2, value] of entries) this.set(key2, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n};\nfunction intern_get({ _intern, _key }, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\nfunction intern_set({ _intern, _key }, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\nfunction intern_delete({ _intern, _key }, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n\n// node_modules/d3-array/src/identity.js\nfunction identity(x) {\n return x;\n}\n\n// node_modules/d3-array/src/group.js\nfunction group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\nfunction rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\nfunction nest(values, map, reduce, keys) {\n return function regroup(values2, i) {\n if (i >= keys.length) return reduce(values2);\n const groups = new InternMap();\n const keyof2 = keys[i++];\n let index = -1;\n for (const value of values2) {\n const key = keyof2(value, ++index, values2);\n const group2 = groups.get(key);\n if (group2) group2.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values3] of groups) {\n groups.set(key, regroup(values3, i));\n }\n return map(groups);\n }(values, 0);\n}\n\n// node_modules/d3-array/src/permute.js\nfunction permute(source, keys) {\n return Array.from(keys, (key) => source[key]);\n}\n\n// node_modules/d3-array/src/sort.js\nfunction sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if (f && f.length !== 2 || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map((f2) => values.map(f2));\n index.sort((i, j) => {\n for (const f2 of F) {\n const c = ascendingDefined(f2[i], f2[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\nfunction compareDefined(compare2 = ascending) {\n if (compare2 === ascending) return ascendingDefined;\n if (typeof compare2 !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare2(a, b);\n if (x || x === 0) return x;\n return (compare2(b, b) === 0) - (compare2(a, a) === 0);\n };\n}\nfunction ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n\n// node_modules/d3-array/src/groupSort.js\nfunction groupSort(values, reduce, key) {\n return (reduce.length !== 2 ? sort(rollup(values, reduce, key), ([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)) : sort(group(values, key), ([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))).map(([key2]) => key2);\n}\n\n// node_modules/d3-color/src/define.js\nfunction define_default(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n\n// node_modules/d3-color/src/color.js\nfunction Color() {\n}\nvar darker = 0.7;\nvar brighter = 1 / darker;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\";\nvar reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\";\nvar reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\";\nvar reHex = /^#([0-9a-f]{3,8})$/;\nvar reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`);\nvar reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`);\nvar reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`);\nvar reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`);\nvar reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`);\nvar reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\nvar named = {\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n};\ndefine_default(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) : l === 3 ? new Rgb(m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, (m & 15) << 4 | m & 15, 1) : l === 8 ? rgba(m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, (m & 255) / 255) : l === 4 ? rgba(m >> 12 & 15 | m >> 8 & 240, m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, ((m & 15) << 4 | m & 15) / 255) : null) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) : named.hasOwnProperty(format) ? rgbn(named[format]) : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 255, n >> 8 & 255, n & 255, 1);\n}\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine_default(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return -0.5 <= this.r && this.r < 255.5 && (-0.5 <= this.g && this.g < 255.5) && (-0.5 <= this.b && this.b < 255.5) && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255, g = o.g / 255, b = o.b / 255, min2 = Math.min(r, g, b), max2 = Math.max(r, g, b), h = NaN, s = max2 - min2, l = (max2 + min2) / 2;\n if (s) {\n if (r === max2) h = (g - b) / s + (g < b) * 6;\n else if (g === max2) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max2 + min2 : 2 - max2 - min2;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine_default(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360, s = isNaN(h) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n}\n\n// src/fetch-map/layer-map.ts\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt,\n scaleThreshold\n} from \"d3-scale\";\nimport { format as d3Format } from \"d3-format\";\n\n// src/fetch-map/utils.ts\nfunction createBinaryProxy(data, index) {\n const { properties, numericProps } = data;\n return new Proxy(properties[index] || {}, {\n get(target, property) {\n if (property in numericProps) {\n return numericProps[property].value[index];\n }\n return target[property];\n },\n has(target, property) {\n return property in numericProps || property in target;\n },\n ownKeys(target) {\n return [...Object.keys(numericProps), ...Reflect.ownKeys(target)];\n },\n getOwnPropertyDescriptor() {\n return { enumerable: true, configurable: true };\n }\n });\n}\nfunction scaleIdentity() {\n let unknown;\n function scale2(x) {\n return x === null ? unknown : x;\n }\n scale2.invert = scale2;\n scale2.domain = scale2.range = (d) => d;\n scale2.unknown = (u4) => {\n if (u4) {\n unknown = u4;\n }\n return unknown;\n };\n scale2.copy = () => {\n const scaleCopy = scaleIdentity();\n scaleCopy.unknown(unknown);\n return scaleCopy;\n };\n return scale2;\n}\nfunction isRemoteCalculationSupported(dataset) {\n if (dataset?.type === \"tileset\" || dataset.providerId === \"databricks\") {\n return false;\n }\n return true;\n}\nvar DATE_FORMATTER = new Intl.DateTimeFormat(\"en-US\", {\n year: \"2-digit\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\",\n timeZone: \"UTC\"\n});\nfunction formatDate(value) {\n return DATE_FORMATTER.format(new Date(value));\n}\nfunction formatTimestamp(value) {\n return String(Math.floor(new Date(value).getTime() / 1e3));\n}\nfunction roundedPow10(exp) {\n const raw = Math.pow(10, exp);\n if (exp < 0) {\n const shift = Math.pow(10, -exp);\n return Math.round(raw * shift) / shift;\n }\n return raw;\n}\nfunction getLog10ScaleSteps({\n min: min2,\n max: max2,\n steps\n}) {\n if (min2 === 0) {\n if (max2 === Infinity) {\n return [...Array(steps - 1)].map((_v, i) => roundedPow10(i + 1));\n }\n const maxLog = Math.log10(max2);\n const endExponent = Math.ceil(maxLog);\n const startExponent = endExponent - steps + 1;\n return [...Array(steps - 1)].map(\n (_v, i) => roundedPow10(startExponent + i)\n );\n } else {\n const minLog = Math.log10(min2);\n const startExponent = Math.ceil(minLog) === minLog ? minLog + 1 : Math.ceil(minLog);\n return [...Array(steps - 1)].map(\n (_v, i) => roundedPow10(startExponent + i)\n );\n }\n}\n\n// src/fetch-map/layer-map.ts\nvar SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt,\n custom: scaleThreshold,\n identity: scaleIdentity\n};\nfunction identity2(v2) {\n return v2;\n}\nvar hexToRGB = (c) => {\n const { r, g, b } = rgb(c);\n return [r, g, b];\n};\nvar rgbToHex = (c) => {\n const [r, g, b] = c;\n const rStr = r.toString(16).padStart(2, \"0\");\n const gStr = g.toString(16).padStart(2, \"0\");\n const bStr = b.toString(16).padStart(2, \"0\");\n return `#${rStr}${gStr}${bStr}`.toUpperCase();\n};\nvar UNKNOWN_COLOR = \"#868d91\";\nvar UNKNOWN_COLOR_RGB = hexToRGB(UNKNOWN_COLOR);\nvar OPACITY_MAP = {\n getFillColor: \"opacity\",\n getLineColor: \"strokeOpacity\",\n getTextColor: \"opacity\"\n};\nvar hexToRGBA = (c) => {\n const { r, g, b, opacity } = rgb(c);\n return [r, g, b, 255 * opacity];\n};\nvar sharedPropMap = {\n // Apply the value of Kepler `color` prop to the deck `getFillColor` prop\n color: \"getFillColor\",\n isVisible: \"visible\",\n label: \"cartoLabel\",\n textLabel: {\n alignment: \"getTextAlignmentBaseline\",\n anchor: \"getTextAnchor\",\n // Apply the value of Kepler `textLabel.color` prop to the deck `getTextColor` prop\n color: \"getTextColor\",\n size: \"getTextSize\"\n },\n visConfig: {\n enable3d: \"extruded\",\n elevationScale: \"elevationScale\",\n filled: \"filled\",\n strokeColor: \"getLineColor\",\n stroked: \"stroked\",\n thickness: \"getLineWidth\",\n radius: \"getPointRadius\",\n wireframe: \"wireframe\"\n }\n};\nvar rasterPropsMap = {\n isVisible: \"visible\",\n visConfig: {\n opacity: \"opacity\"\n }\n};\nvar customMarkersPropsMap = {\n color: \"getIconColor\",\n visConfig: {\n radius: \"getIconSize\"\n }\n};\nvar heatmapTilePropsMap = {\n visConfig: {\n colorRange: (x) => ({ colorRange: x.colors.map(hexToRGBA) }),\n radius: (radius) => ({ radiusPixels: 20 + radius }),\n opacity: \"opacity\"\n }\n};\nvar defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: \"pixels\",\n pointRadiusUnits: \"pixels\",\n rounded: true,\n wrapLongitude: false\n};\nfunction mergePropMaps(a = {}, b = {}) {\n return { ...a, ...b, visConfig: { ...a.visConfig, ...b.visConfig } };\n}\nvar deprecatedLayerTypes = [\n \"geojson\",\n \"grid\",\n \"heatmap\",\n \"hexagon\",\n \"hexagonId\",\n \"point\"\n];\nvar TEXT_LABEL_INDEX = 0;\nvar TEXT_OUTLINE_OPACITY = 64;\nvar TEXT_NUMBER_FORMATTER = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: 2,\n notation: \"compact\"\n});\nfunction getLayerProps(type, config2, dataset) {\n if (deprecatedLayerTypes.includes(type)) {\n throw new Error(\n `Outdated layer type: ${type}. Please open map in CARTO Builder to automatically migrate.`\n );\n }\n if (type === \"raster\") {\n return {\n propMap: rasterPropsMap,\n defaultProps: {}\n };\n }\n let basePropMap = sharedPropMap;\n if (config2.visConfig?.customMarkers) {\n basePropMap = mergePropMaps(basePropMap, customMarkersPropsMap);\n }\n if (type === \"heatmapTile\") {\n basePropMap = mergePropMaps(basePropMap, heatmapTilePropsMap);\n }\n const { aggregationExp, aggregationResLevel } = dataset;\n return {\n propMap: basePropMap,\n defaultProps: {\n ...defaultProps,\n ...aggregationExp && { aggregationExp },\n ...aggregationResLevel && { aggregationResLevel },\n uniqueIdProperty: \"geoid\"\n }\n };\n}\nfunction domainFromAttribute(attribute, scaleType, scaleLength) {\n if (scaleType === \"ordinal\" || scaleType === \"point\") {\n if (!attribute.categories) {\n return [0, 1];\n }\n return attribute.categories.map((c) => c.category).filter((c) => c !== void 0 && c !== null);\n }\n if (scaleType === \"quantile\" && attribute.quantiles) {\n return \"global\" in attribute.quantiles ? attribute.quantiles.global[scaleLength] : attribute.quantiles[scaleLength];\n }\n let { min: min2 } = attribute;\n if (scaleType === \"log\" && min2 === 0) {\n min2 = 1e-5;\n }\n return [min2 ?? 0, attribute.max ?? 1];\n}\nfunction domainFromValues(values, scaleType) {\n if (scaleType === \"ordinal\" || scaleType === \"point\") {\n return groupSort(\n values,\n (g) => -g.length,\n (d) => d\n );\n } else if (scaleType === \"quantile\") {\n return values.sort((a, b) => a - b);\n } else if (scaleType === \"log\") {\n const [d0, d1] = extent(values);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\nfunction calculateDomain(data, name, scaleType, scaleLength) {\n if (data.tilestats) {\n const { attributes } = data.tilestats.layers[0];\n const attribute = attributes.find((a) => a.attribute === name);\n if (attribute) {\n return domainFromAttribute(attribute, scaleType, scaleLength);\n }\n }\n return [0, 1];\n}\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats || data.raster_metadata) {\n return (object, info) => {\n if (object) {\n return accessor(object.properties || object.__source.object.properties);\n }\n const { data: data2, index } = info;\n const proxy = createBinaryProxy(data2, index);\n return accessor(proxy);\n };\n }\n return accessor;\n}\nfunction opacityToAlpha(opacity) {\n return opacity !== void 0 ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\nfunction getAccessorKeys(name, aggregation) {\n let keys = [name];\n if (aggregation) {\n keys = keys.concat(\n [aggregation, aggregation.toUpperCase()].map((a) => `${name}_${a}`)\n );\n }\n return keys;\n}\nfunction findAccessorKey(keys, properties) {\n for (const key of keys) {\n if (key in properties) {\n return [key];\n }\n }\n return keys;\n}\nfunction getColorAccessor({ name, colorColumn }, scaleType, { aggregation, range }, opacity, data) {\n const { scale: scale2, domain } = calculateLayerScale(\n colorColumn || name,\n colorColumn ? \"identity\" : scaleType,\n range,\n data\n );\n const alpha = opacityToAlpha(opacity);\n let accessorKeys = getAccessorKeys(colorColumn || name, aggregation);\n const accessor = (properties) => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n const scaled = scale2(propertyValue);\n const rgb2 = typeof scaled === \"string\" ? hexToRGB(scaled) : scaled;\n return [...rgb2, propertyValue === null ? 0 : alpha];\n };\n return {\n accessor: normalizeAccessor(accessor, data),\n scaleDomain: scale2.domain(),\n domain,\n range: (scale2.range() || []).map(rgbToHex)\n };\n}\nfunction calculateLayerScale(name, scaleType, range, data) {\n let domain = [];\n let scaleDomain;\n let scaleColor = [];\n const { colors } = range;\n if (scaleType === \"custom\") {\n domain = calculateDomain(data, name, scaleType, colors.length);\n const [min2, max2] = domain;\n if (range.uiCustomScaleType === \"logarithmic\") {\n scaleDomain = getLog10ScaleSteps({\n min: min2,\n max: max2,\n steps: colors.length\n });\n scaleColor = colors;\n } else if (range.colorMap) {\n const { colorMap } = range;\n scaleDomain = [];\n colorMap.forEach(([value, color2]) => {\n scaleDomain.push(Number(value));\n scaleColor.push(color2);\n });\n }\n } else if (scaleType !== \"identity\") {\n domain = calculateDomain(data, name, scaleType, colors.length);\n scaleColor = colors;\n if (scaleType === \"ordinal\") {\n domain = domain.slice(0, scaleColor.length);\n }\n }\n return {\n scale: createColorScale(\n scaleType,\n scaleDomain || domain,\n scaleColor.map(hexToRGB),\n UNKNOWN_COLOR_RGB\n ),\n domain\n };\n}\nfunction createColorScale(scaleType, domain, range, unknown) {\n const scale2 = SCALE_FUNCS[scaleType]();\n scale2.domain(domain);\n scale2.range(range);\n scale2.unknown(unknown);\n return scale2;\n}\nvar FALLBACK_ICON = \"data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==\";\nfunction getIconUrlAccessor(field, range, {\n fallbackUrl,\n maxIconSize,\n useMaskedIcons\n}, data) {\n const urlToUnpackedIcon = (url) => ({\n id: `${url}@@${maxIconSize}`,\n url,\n width: maxIconSize,\n height: maxIconSize,\n mask: useMaskedIcons\n });\n let unknownValue = fallbackUrl || FALLBACK_ICON;\n if (range?.othersMarker) {\n unknownValue = range.othersMarker;\n }\n const unknownIcon = urlToUnpackedIcon(unknownValue);\n if (!range || !field) {\n return () => unknownIcon;\n }\n const mapping = {};\n for (const { value, markerUrl } of range.markerMap) {\n if (markerUrl) {\n mapping[value] = urlToUnpackedIcon(markerUrl);\n }\n }\n const accessor = (properties) => {\n const propertyValue = properties[field.name];\n return mapping[propertyValue] || unknownIcon;\n };\n return normalizeAccessor(accessor, data);\n}\nfunction getMaxMarkerSize(visConfig, visualChannels) {\n const { radiusRange, radius } = visConfig;\n const { radiusField, sizeField } = visualChannels;\n const field = radiusField || sizeField;\n return Math.ceil(radiusRange && field ? radiusRange[1] : radius);\n}\nfunction negateAccessor(accessor) {\n if (typeof accessor === \"function\") {\n return (d, i) => -accessor(d, i);\n }\n return -accessor;\n}\nfunction getSizeAccessor({ name }, scaleType, aggregation, range, data) {\n const scale2 = scaleType ? SCALE_FUNCS[scaleType]() : identity2;\n let domain = [];\n if (scaleType && range) {\n if (aggregation !== AggregationTypes.Count) {\n domain = calculateDomain(data, name, scaleType);\n scale2.domain(domain);\n } else {\n domain = scale2.domain();\n }\n scale2.range(range);\n }\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = (properties) => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n return scale2(propertyValue);\n };\n return {\n accessor: normalizeAccessor(accessor, data),\n domain,\n scaleDomain: domain,\n range\n };\n}\nvar FORMATS = {\n date: formatDate,\n integer: d3Format(\"i\"),\n float: d3Format(\".5f\"),\n timestamp: formatTimestamp,\n default: String\n};\nfunction getTextAccessor({ name, type }, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = (properties) => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\nfunction calculateClusterRadius(properties, stats, radiusRange, column) {\n const { min: min2, max: max2 } = stats[column];\n const value = properties[column];\n if (min2 === max2) return radiusRange[1];\n const normalizedValue = (value - min2) / (max2 - min2);\n return radiusRange[0] + normalizedValue * (radiusRange[1] - radiusRange[0]);\n}\nfunction getDefaultAggregationExpColumnAliasForLayerType(layerType, provider, schema) {\n if (schema && layerType === \"clusterTile\") {\n return getColumnAliasForAggregationExp(\n getDefaultColumnFromSchemaForAggregationExp(schema),\n \"count\",\n provider\n );\n } else {\n return DEFAULT_AGGREGATION_EXP_ALIAS;\n }\n}\nfunction getColumnAliasForAggregationExp(name, aggregation, provider) {\n const columnAlias = `${name}_${aggregation}`;\n return provider === \"snowflake\" ? columnAlias.toUpperCase() : columnAlias;\n}\nfunction getDefaultColumnFromSchemaForAggregationExp(schema) {\n return schema ? schema[0].name : \"\";\n}\nfunction calculateClusterTextFontSize(radius) {\n if (radius >= 80) return 24;\n if (radius >= 72) return 24;\n if (radius >= 56) return 20;\n if (radius >= 40) return 16;\n if (radius >= 24) return 13;\n if (radius >= 8) return 11;\n return 11;\n}\n\n// src/fetch-map/raster-layer.ts\nvar UNKNOWN_COLOR2 = [134, 141, 145];\nvar RASTER_COLOR_BANDS = [\"red\", \"green\", \"blue\"];\nfunction getHasDataPredicate(noData) {\n if (noData === \"nan\") {\n return (v2) => !isNaN(v2);\n }\n if (typeof noData === \"string\") {\n noData = parseFloat(noData);\n }\n if (typeof noData === \"number\") {\n return (v2) => v2 !== noData && !isNaN(v2);\n }\n return () => true;\n}\nfunction createRasterColumnLayerDataTransform(transform) {\n return (data) => {\n if (!data || !(\"data\" in data) || !data?.data?.cells?.numericProps) {\n return data;\n }\n return transform(data);\n };\n}\nfunction createEvaluationContext(numericProps, noData) {\n const hasData = getHasDataPredicate(noData);\n const bands = Object.entries(numericProps).map(([bandName, { value }]) => ({\n bandName,\n values: value,\n copied: false\n }));\n const length2 = bands[0].values.length;\n for (let i = 0; i < length2; i++) {\n let hasSomeData = false;\n for (let j = 0; j < bands.length; j++) {\n hasSomeData = hasSomeData || hasData(bands[j].values[i]);\n }\n if (!hasSomeData) {\n for (let j = 0; j < bands.length; j++) {\n if (!bands[j].copied) {\n bands[j].copied = true;\n bands[j].values = Array.from(bands[j].values);\n }\n bands[j].values[i] = NaN;\n }\n }\n }\n const context = bands.reduce(\n (agg, { bandName, values }) => {\n agg[bandName] = values;\n return agg;\n },\n {}\n );\n return context;\n}\nfunction createExprDataTransform({\n colorBand,\n rasterMetadata,\n usedSymbols\n}) {\n if (!colorBand || !colorBand.type || colorBand.type === \"none\") {\n return void 0;\n }\n const expr = colorBand?.type === \"expression\" ? colorBand.value : void 0;\n const vecExprEvaluator = expr ? createVecExprEvaluator(expr) : void 0;\n const dataTransform = createRasterColumnLayerDataTransform(\n (dataWrapped) => {\n const data = dataWrapped.data;\n if (expr) {\n const cachedResult = dataWrapped.customExpressionResults?.[expr];\n if (cachedResult) {\n return dataWrapped;\n }\n }\n let context = dataWrapped.expressionEvalContext;\n if (!context) {\n const usedNumericProps = usedSymbols.reduce(\n (acc, symbol) => {\n acc[symbol] = data.cells.numericProps[symbol];\n return acc;\n },\n {}\n );\n context = createEvaluationContext(\n usedNumericProps,\n rasterMetadata.nodata\n );\n dataWrapped = {\n ...dataWrapped,\n expressionEvalContext: context\n };\n }\n if (!vecExprEvaluator || !expr) return dataWrapped;\n const evalResult = vecExprEvaluator(context);\n return {\n ...dataWrapped,\n customExpressionResults: {\n ...dataWrapped.customExpressionResults,\n [expr]: evalResult\n }\n };\n }\n );\n return dataTransform;\n}\nfunction combineDataTransforms(dataTransforms) {\n const actualTransforms = dataTransforms.filter((v2) => v2);\n if (actualTransforms.length === 0) return void 0;\n if (actualTransforms.length === 1) return actualTransforms[0];\n return (data) => actualTransforms.reduce(\n (aggData, transformFun) => transformFun(aggData),\n data\n );\n}\nfunction createRgbToColorBufferDataTransform({\n bandDefs,\n attribute\n}) {\n return createRasterColumnLayerDataTransform(\n (dataWrapped) => {\n const length2 = dataWrapped.length;\n const getBandBufferOrValue = (colorBand) => {\n if (colorBand?.type === \"expression\") {\n return dataWrapped.customExpressionResults?.[colorBand.value];\n }\n if (colorBand?.type === \"band\") {\n return dataWrapped.expressionEvalContext?.[colorBand.value];\n }\n return 0;\n };\n const red = getBandBufferOrValue(bandDefs.red);\n const green = getBandBufferOrValue(bandDefs.green);\n const blue = getBandBufferOrValue(bandDefs.blue);\n const colorBuffer = new Uint8Array(length2 * 4);\n for (let inputIndex = 0, outputIndex = 0; inputIndex < length2; inputIndex++, outputIndex += 4) {\n const redRaw = typeof red === \"number\" ? red : red ? red[inputIndex] : NaN;\n const greenRaw = typeof green === \"number\" ? green : green ? green[inputIndex] : NaN;\n const blueRaw = typeof blue === \"number\" ? blue : blue ? blue[inputIndex] : NaN;\n if (isNaN(redRaw) && isNaN(greenRaw) && isNaN(blueRaw)) {\n bufferSetRgba(colorBuffer, outputIndex, 0, 0, 0, 0);\n } else {\n bufferSetRgba(\n colorBuffer,\n outputIndex,\n redRaw,\n greenRaw,\n blueRaw,\n 255\n );\n }\n }\n dataWrapped.customExpressionResults = void 0;\n dataWrapped.expressionEvalContext = void 0;\n return {\n ...dataWrapped,\n attributes: {\n [attribute]: colorBuffer\n }\n };\n }\n );\n}\nfunction getUsedSymbols(colorBands) {\n return Array.from(\n colorBands.reduce((symbols, band) => {\n if (band.type === \"expression\") {\n const expressionSymbols = createVecExprEvaluator(band.value)?.symbols || [];\n expressionSymbols.forEach((symbol) => symbols.add(symbol));\n }\n if (band.type === \"band\") {\n symbols.add(band.value);\n }\n return symbols;\n }, /* @__PURE__ */ new Set())\n );\n}\nfunction getRasterTileLayerStylePropsRgb({\n layerConfig,\n rasterMetadata,\n visualChannels\n}) {\n const { visConfig } = layerConfig;\n const { colorBands } = visConfig;\n const bandDefs = {\n red: colorBands?.find((band) => band.band === \"red\"),\n green: colorBands?.find((band) => band.band === \"green\"),\n blue: colorBands?.find((band) => band.band === \"blue\")\n };\n const rgbToInstanceFillColorsDataTransform = createRgbToColorBufferDataTransform({\n bandDefs,\n attribute: \"instanceFillColors\"\n });\n const usedSymbols = colorBands ? getUsedSymbols(colorBands) : [];\n const bandTransforms = RASTER_COLOR_BANDS.map(\n (band) => createExprDataTransform({\n colorBand: bandDefs[band],\n rasterMetadata,\n usedSymbols\n })\n );\n const combinedDataTransform = combineDataTransforms([\n ...bandTransforms,\n rgbToInstanceFillColorsDataTransform\n ]);\n return {\n dataTransform: combinedDataTransform,\n updateTriggers: getRasterTileLayerUpdateTriggers({\n layerConfig,\n visualChannels\n })\n };\n}\nfunction createBandColorScaleDataTransform({\n bandName,\n scaleFun,\n nodata,\n attribute\n}) {\n const hasData = getHasDataPredicate(nodata);\n return createRasterColumnLayerDataTransform(\n (dataWrapped) => {\n const length2 = dataWrapped.length;\n const bandBuffer = dataWrapped.data.cells.numericProps[bandName].value;\n const colorBuffer = new Uint8Array(length2 * 4);\n for (let i = 0; i < length2; i++) {\n const rawValue = bandBuffer[i];\n if (!hasData(rawValue)) {\n bufferSetRgba(colorBuffer, i * 4, 0, 0, 0, 0);\n } else {\n const colorRgb = scaleFun(rawValue);\n bufferSetRgba(\n colorBuffer,\n i * 4,\n colorRgb[0],\n colorRgb[1],\n colorRgb[2],\n 255\n );\n }\n }\n return {\n ...dataWrapped,\n attributes: {\n [attribute]: colorBuffer\n }\n };\n }\n );\n}\nfunction domainFromRasterMetadataBand(band, scaleType, colorRange) {\n if (scaleType === \"ordinal\") {\n return colorRange.colorMap?.map(([value]) => value) || [];\n }\n if (scaleType === \"custom\") {\n if (colorRange.uiCustomScaleType === \"logarithmic\") {\n return getLog10ScaleSteps({\n min: band.stats.min,\n max: band.stats.max,\n steps: colorRange.colors.length\n });\n } else {\n return colorRange.colorMap?.map(([value]) => value) || [];\n }\n }\n const scaleLength = colorRange.colors.length;\n if (scaleType === \"quantile\") {\n const quantiles = band.stats.quantiles?.[scaleLength];\n if (!quantiles) {\n return [0, 1];\n }\n return [band.stats.min, ...quantiles, band.stats.max];\n }\n return [band.stats.min, band.stats.max];\n}\nfunction getRasterTileLayerStylePropsScaledBand({\n layerConfig,\n rasterMetadata,\n visualChannels\n}) {\n const { visConfig } = layerConfig;\n const { colorField } = visualChannels;\n const { rasterStyleType } = visConfig;\n const colorRange = rasterStyleType === \"ColorRange\" ? visConfig.colorRange : visConfig.uniqueValuesColorRange;\n const scaleType = rasterStyleType === \"ColorRange\" ? visualChannels.colorScale : \"ordinal\";\n const bandInfo = rasterMetadata.bands.find(\n (band) => band.name === colorField?.name\n );\n if (!colorField?.name || !scaleType || !colorRange || !bandInfo) {\n return {};\n }\n const domain = domainFromRasterMetadataBand(bandInfo, scaleType, colorRange);\n const scaleFun = createColorScale(\n scaleType,\n domain,\n colorRange.colors.map(hexToRGB2),\n UNKNOWN_COLOR2\n );\n const bandColorScaleDataTransform = createBandColorScaleDataTransform({\n bandName: bandInfo.name,\n scaleFun,\n nodata: bandInfo?.nodata ?? rasterMetadata.nodata,\n attribute: \"instanceFillColors\"\n });\n return {\n dataTransform: bandColorScaleDataTransform,\n updateTriggers: getRasterTileLayerUpdateTriggers({\n layerConfig,\n visualChannels\n })\n };\n}\nfunction getRasterTileLayerStyleProps({\n layerConfig,\n visualChannels,\n rasterMetadata\n}) {\n const { visConfig } = layerConfig;\n const { rasterStyleType } = visConfig;\n if (rasterStyleType === \"Rgb\") {\n return getRasterTileLayerStylePropsRgb({\n layerConfig,\n rasterMetadata,\n visualChannels\n });\n } else {\n return getRasterTileLayerStylePropsScaledBand({\n layerConfig,\n rasterMetadata,\n visualChannels\n });\n }\n}\nfunction getRasterTileLayerUpdateTriggers({\n layerConfig,\n visualChannels\n}) {\n const { visConfig } = layerConfig;\n const { rasterStyleType } = visConfig;\n const getFillColorUpdateTriggers = {\n rasterStyleType\n };\n if (rasterStyleType === \"ColorRange\") {\n getFillColorUpdateTriggers.colorRange = visConfig.colorRange?.colors;\n getFillColorUpdateTriggers.colorMap = visConfig.colorRange?.colorMap;\n getFillColorUpdateTriggers.colorScale = visualChannels.colorScale;\n getFillColorUpdateTriggers.colorFieldId = visualChannels.colorField?.name;\n } else if (rasterStyleType === \"UniqueValues\") {\n getFillColorUpdateTriggers.colorMap = visConfig.uniqueValuesColorRange?.colorMap;\n getFillColorUpdateTriggers.colorFieldId = visualChannels.colorField?.name;\n } else if (rasterStyleType === \"Rgb\") {\n getFillColorUpdateTriggers.colorBands = visConfig.colorBands;\n }\n return {\n getFillColor: getFillColorUpdateTriggers\n };\n}\nfunction bufferSetRgba(target, index, r, g, b, a) {\n target[index + 0] = r;\n target[index + 1] = g;\n target[index + 2] = b;\n target[index + 3] = a;\n}\nfunction hexToRGB2(hexColor) {\n const r = parseInt(hexColor.slice(1, 3), 16);\n const g = parseInt(hexColor.slice(3, 5), 16);\n const b = parseInt(hexColor.slice(5, 7), 16);\n return [r, g, b];\n}\n\n// src/fetch-map/parse-map.ts\nfunction getLayerDescriptor({\n mapConfig,\n layer,\n dataset\n}) {\n const { filters, visState } = mapConfig;\n const { layerBlending, interactionConfig } = visState;\n const { id, type, config: config2, visualChannels } = layer;\n const { data, id: datasetId } = dataset;\n const { propMap, defaultProps: defaultProps2 } = getLayerProps(type, config2, dataset);\n const styleProps = createStyleProps(config2, propMap);\n const { channelProps, scales } = createChannelProps(\n id,\n type,\n config2,\n visualChannels,\n data,\n dataset\n );\n const layerDescriptor = {\n type,\n filters: isEmptyObject(filters) || isRemoteCalculationSupported(dataset) ? void 0 : filters[datasetId],\n props: {\n id,\n data,\n ...defaultProps2,\n ...createInteractionProps(interactionConfig),\n ...styleProps,\n ...channelProps,\n ...createParametersProp(layerBlending, styleProps.parameters || {}),\n // Must come after style\n ...createLoadOptions(data.accessToken)\n },\n scales\n };\n return layerDescriptor;\n}\nfunction parseMap(json) {\n const { keplerMapConfig, datasets, token } = json;\n assert2(keplerMapConfig.version === \"v1\", \"Only support Kepler v1\");\n const mapConfig = keplerMapConfig.config;\n const { mapState, mapStyle, popupSettings, legendSettings, visState } = mapConfig;\n const { layers } = visState;\n const layersReverse = [...layers].reverse();\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n /** @deprecated Use `basemap`. */\n mapStyle,\n popupSettings,\n legendSettings,\n token,\n layers: layersReverse.map((layer) => {\n try {\n const { dataId } = layer.config;\n const dataset = datasets.find(\n (d) => d.id === dataId\n );\n assert2(dataset, `No dataset matching dataId: ${dataId}`);\n const layerDescriptor = getLayerDescriptor({\n mapConfig,\n layer,\n dataset\n });\n return layerDescriptor;\n } catch (e) {\n console.error(e.message);\n return void 0;\n }\n })\n };\n}\nfunction createParametersProp(layerBlending, parameters) {\n if (layerBlending === \"additive\") {\n parameters.blendColorSrcFactor = parameters.blendAlphaSrcFactor = \"src-alpha\";\n parameters.blendColorDstFactor = parameters.blendAlphaDstFactor = \"dst-alpha\";\n parameters.blendColorOperation = parameters.blendAlphaOperation = \"add\";\n } else if (layerBlending === \"subtractive\") {\n parameters.blendColorSrcFactor = \"one\";\n parameters.blendColorDstFactor = \"one-minus-dst-color\";\n parameters.blendAlphaSrcFactor = \"src-alpha\";\n parameters.blendAlphaDstFactor = \"dst-alpha\";\n parameters.blendColorOperation = \"subtract\";\n parameters.blendAlphaOperation = \"add\";\n }\n return Object.keys(parameters).length ? { parameters } : {};\n}\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === void 0) {\n continue;\n }\n if (typeof targetKey === \"string\") {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === \"function\") {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n } else if (typeof targetKey === \"object\") {\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\nfunction createStyleProps(config2, mapping) {\n const result = {};\n mapProps(config2, result, mapping);\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color2 = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config2.visConfig[opacityKey];\n color2[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color2;\n }\n }\n result.highlightColor = config2.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\nfunction createChannelProps(id, layerType, config2, visualChannels, data, dataset) {\n if (layerType === \"raster\") {\n const rasterMetadata = data.raster_metadata;\n if (!rasterMetadata) {\n return {\n channelProps: {},\n scales: {}\n };\n }\n const rasterStyleType = config2.visConfig.rasterStyleType;\n if (rasterStyleType === \"Rgb\") {\n return {\n channelProps: getRasterTileLayerStylePropsRgb({\n layerConfig: config2,\n rasterMetadata,\n visualChannels\n }),\n scales: {}\n // TODO\n };\n } else {\n return {\n channelProps: getRasterTileLayerStylePropsScaledBand({\n layerConfig: config2,\n visualChannels,\n rasterMetadata\n }),\n scales: {\n // TODO\n }\n };\n }\n }\n const { textLabel, visConfig } = config2;\n const result = {};\n const updateTriggers = {};\n const scales = {};\n {\n const { colorField, colorScale } = visualChannels;\n const { colorRange, colorAggregation } = visConfig;\n if (colorField && colorScale && colorRange) {\n const { accessor, ...scaleProps } = getColorAccessor(\n colorField,\n colorScale,\n { aggregation: colorAggregation, range: colorRange },\n visConfig.opacity,\n data\n );\n result.getFillColor = accessor;\n scales.fillColor = updateTriggers.getFillColor = {\n field: colorField,\n type: colorScale,\n ...scaleProps\n };\n } else {\n scales.fillColor = {};\n }\n }\n if (layerType === \"clusterTile\") {\n const aggregationExpAlias = getDefaultAggregationExpColumnAliasForLayerType(\n layerType,\n dataset.providerId,\n data.schema\n );\n result.pointType = visConfig.isTextVisible ? \"circle+text\" : \"circle\";\n result.clusterLevel = visConfig.clusterLevel;\n result.getWeight = (d) => {\n return d.properties[aggregationExpAlias];\n };\n updateTriggers.getWeight = aggregationExpAlias;\n result.getPointRadius = (d, info) => {\n return calculateClusterRadius(\n d.properties,\n info.data.attributes.stats,\n visConfig.radiusRange,\n aggregationExpAlias\n );\n };\n updateTriggers.getPointRadius = {\n aggregationExpAlias,\n radiusRange: visConfig.radiusRange\n };\n result.textCharacterSet = \"auto\";\n result.textFontFamily = \"Inter, sans\";\n result.textFontSettings = { sdf: true };\n result.textFontWeight = 600;\n result.getText = (d) => TEXT_NUMBER_FORMATTER.format(d.properties[aggregationExpAlias]);\n updateTriggers.getText = aggregationExpAlias;\n result.getTextColor = config2.textLabel[TEXT_LABEL_INDEX].color;\n result.textOutlineColor = [\n ...config2.textLabel[TEXT_LABEL_INDEX].outlineColor,\n TEXT_OUTLINE_OPACITY\n ];\n result.textOutlineWidth = 5;\n result.textSizeUnits = \"pixels\";\n result.getTextSize = (d, info) => {\n const radius = calculateClusterRadius(\n d.properties,\n info.data.attributes.stats,\n visConfig.radiusRange,\n aggregationExpAlias\n );\n return calculateClusterTextFontSize(radius);\n };\n updateTriggers.getTextSize = {\n aggregationExpAlias,\n radiusRange: visConfig.radiusRange\n };\n }\n {\n const radiusRange = visConfig.radiusRange;\n const { radiusField, radiusScale } = visualChannels;\n if (radiusField && radiusRange && radiusScale) {\n const { accessor, ...scaleProps } = getSizeAccessor(\n radiusField,\n radiusScale,\n visConfig.sizeAggregation,\n radiusRange,\n data\n );\n result.getPointRadius = accessor;\n scales.pointRadius = updateTriggers.getPointRadius = {\n field: radiusField,\n type: radiusScale,\n ...scaleProps\n };\n }\n }\n {\n const strokeColorRange = visConfig.strokeColorRange;\n const { strokeColorScale, strokeColorField } = visualChannels;\n if (strokeColorField && strokeColorRange && strokeColorScale) {\n const { strokeColorAggregation: aggregation } = visConfig;\n const opacity = visConfig.strokeOpacity !== void 0 ? visConfig.strokeOpacity : 1;\n const { accessor, ...scaleProps } = getColorAccessor(\n strokeColorField,\n strokeColorScale,\n { aggregation, range: strokeColorRange },\n opacity,\n data\n );\n result.getLineColor = accessor;\n scales.lineColor = updateTriggers.getLineColor = {\n field: strokeColorField,\n type: strokeColorScale,\n ...scaleProps\n };\n }\n }\n {\n const { sizeField: strokeWidthField, sizeScale: strokeWidthScale } = visualChannels;\n const { sizeRange, sizeAggregation } = visConfig;\n if (strokeWidthField && sizeRange) {\n const { accessor, ...scaleProps } = getSizeAccessor(\n strokeWidthField,\n strokeWidthScale,\n sizeAggregation,\n sizeRange,\n data\n );\n result.getLineWidth = accessor;\n scales.lineWidth = updateTriggers.getLineWidth = {\n field: strokeWidthField,\n type: strokeWidthScale || \"identity\",\n ...scaleProps\n };\n }\n }\n {\n const { enable3d, heightRange } = visConfig;\n const { heightField, heightScale } = visualChannels;\n if (heightField && heightRange && enable3d) {\n const { accessor, ...scaleProps } = getSizeAccessor(\n heightField,\n heightScale,\n visConfig.heightAggregation,\n heightRange,\n data\n );\n result.getElevation = accessor;\n scales.elevation = updateTriggers.getElevation = {\n field: heightField,\n type: heightScale || \"identity\",\n ...scaleProps\n };\n }\n }\n {\n const { weightField } = visualChannels;\n const { weightAggregation } = visConfig;\n if (weightField && weightAggregation) {\n const { accessor, ...scaleProps } = getSizeAccessor(\n weightField,\n void 0,\n weightAggregation,\n void 0,\n data\n );\n result.getWeight = accessor;\n scales.weight = updateTriggers.getWeight = {\n field: weightField,\n type: \"identity\",\n ...scaleProps\n };\n }\n }\n if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const { getPointRadius, getFillColor } = result;\n const {\n customMarkersUrl,\n customMarkersRange,\n filled: useMaskedIcons\n } = visConfig;\n result.pointType = \"icon\";\n result.getIcon = getIconUrlAccessor(\n visualChannels.customMarkersField,\n customMarkersRange,\n { fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons },\n data\n );\n updateTriggers.getIcon = {\n customMarkersUrl,\n customMarkersRange,\n maxIconSize,\n useMaskedIcons\n };\n result._subLayerProps = {\n \"points-icon\": {\n loadOptions: {\n image: {\n type: \"imagebitmap\"\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: \"high\"\n }\n }\n }\n };\n if (getFillColor && useMaskedIcons) {\n result.getIconColor = getFillColor;\n updateTriggers.getIconColor = updateTriggers.getFillColor;\n }\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n updateTriggers.getIconSize = updateTriggers.getPointRadius;\n }\n if (visualChannels.rotationField) {\n const { accessor } = getSizeAccessor(\n visualChannels.rotationField,\n void 0,\n null,\n void 0,\n data\n );\n result.getIconAngle = negateAccessor(accessor);\n updateTriggers.getIconAngle = updateTriggers.getRotationField;\n }\n } else if (layerType === \"tileset\") {\n result.pointType = \"circle\";\n }\n if (textLabel && textLabel.length && textLabel[0].field) {\n const [mainLabel, secondaryLabel] = textLabel;\n const collisionGroup = id;\n ({\n alignment: result.getTextAlignmentBaseline,\n anchor: result.getTextAnchor,\n color: result.getTextColor,\n outlineColor: result.textOutlineColor,\n size: result.textSizeScale\n } = mainLabel);\n const {\n color: getSecondaryColor,\n field: secondaryField,\n outlineColor: secondaryOutlineColor,\n size: secondarySizeScale\n } = secondaryLabel || {};\n result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);\n const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);\n result.pointType = `${result.pointType}+text`;\n result.textCharacterSet = \"auto\";\n result.textFontFamily = \"Inter, sans\";\n result.textFontSettings = { sdf: true };\n result.textFontWeight = 600;\n result.textOutlineWidth = 3;\n result._subLayerProps = {\n ...result._subLayerProps,\n \"points-text\": {\n collisionEnabled: true,\n collisionGroup,\n // getPointRadius already has radiusScale baked in, so only pass one or the other\n ...result.getPointRadius ? { getRadius: result.getPointRadius } : { radiusScale: visConfig.radius },\n ...secondaryField && {\n getSecondaryText,\n getSecondaryColor,\n secondarySizeScale,\n secondaryOutlineColor\n }\n }\n };\n }\n return {\n channelProps: {\n ...result,\n updateTriggers\n },\n scales\n };\n}\nfunction createLoadOptions(accessToken) {\n return {\n loadOptions: { fetch: { headers: { Authorization: `Bearer ${accessToken}` } } }\n };\n}\n\n// src/fetch-map/basemap.ts\nvar CUSTOM_STYLE_ID_PREFIX = \"custom:\";\nvar DEFAULT_CARTO_STYLE = \"positron\";\nfunction mapLibreViewpros(config2) {\n const { longitude, latitude, ...rest } = config2.mapState;\n return {\n center: [longitude, latitude],\n ...rest\n };\n}\nasync function fetchBasemapProps({\n config: config2,\n errorContext,\n applyLayerFilters = true\n}) {\n const { mapStyle } = config2;\n const styleType = mapStyle.styleType || DEFAULT_CARTO_STYLE;\n if (styleType.startsWith(CUSTOM_STYLE_ID_PREFIX)) {\n const currentCustomStyle = config2.customBaseMaps?.customStyle;\n if (currentCustomStyle) {\n return {\n type: \"maplibre\",\n props: {\n style: currentCustomStyle.style || currentCustomStyle.url,\n ...mapLibreViewpros(config2)\n },\n attribution: currentCustomStyle.customAttribution\n };\n }\n }\n if (CARTO_MAP_STYLES.includes(styleType)) {\n const { visibleLayerGroups } = mapStyle;\n const styleUrl = getStyleUrl(styleType);\n let style = styleUrl;\n let rawStyle = styleUrl;\n if (applyLayerFilters && visibleLayerGroups && someLayerGroupsDisabled(visibleLayerGroups)) {\n rawStyle = await fetchStyle({ styleUrl, errorContext });\n style = applyLayerGroupFilters(rawStyle, visibleLayerGroups);\n }\n return {\n type: \"maplibre\",\n props: {\n style,\n ...mapLibreViewpros(config2)\n },\n visibleLayerGroups,\n rawStyle\n };\n }\n const googleBasemapDef = GOOGLE_BASEMAPS[styleType];\n if (googleBasemapDef) {\n const { mapState } = config2;\n return {\n type: \"google-maps\",\n props: {\n ...googleBasemapDef,\n center: { lat: mapState.latitude, lng: mapState.longitude },\n zoom: mapState.zoom + 1,\n tilt: mapState.pitch,\n heading: mapState.bearing\n }\n };\n }\n return {\n type: \"maplibre\",\n props: {\n style: getStyleUrl(DEFAULT_CARTO_STYLE),\n ...mapLibreViewpros(config2)\n }\n };\n}\n\n// src/fetch-map/source.ts\nfunction configureSource({\n dataset,\n filters,\n options\n}) {\n const {\n geoColumn,\n columns,\n type,\n source,\n queryParameters,\n aggregationExp,\n aggregationResLevel: originalAggregationResLevel\n } = dataset;\n const sourceOptions = getSourceOptions(options);\n const spatialDataColumn = getColumnNameFromGeoColumn(geoColumn) || void 0;\n const spatialIndex = geoColumn ? getSpatialIndexFromGeoColumn(geoColumn) : void 0;\n const tileResolution = getDynamicTileResolution(spatialIndex);\n const isH3 = spatialIndex === \"h3\" /* H3 */;\n const isQuadbin = spatialIndex === \"quadbin\" /* QUADBIN */;\n let aggregationResLevel = originalAggregationResLevel;\n if (typeof originalAggregationResLevel !== \"number\" && isH3) {\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3;\n } else if (typeof originalAggregationResLevel !== \"number\" && isQuadbin) {\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN;\n }\n const spatialIndexOptions = {\n aggregationExp: !aggregationExp ? DEFAULT_AGGREGATION_EXP : aggregationExp,\n aggregationResLevel: scaleAggregationResLevel(\n aggregationResLevel,\n tileResolution\n ),\n spatialDataColumn,\n ...filters && { filters }\n };\n const tilesetOptions = {\n ...sourceOptions,\n tableName: source\n };\n const tableOptions = {\n ...sourceOptions,\n tableName: source,\n tileResolution\n };\n const queryOptions = {\n ...sourceOptions,\n sqlQuery: source,\n tileResolution,\n ...queryParameters && { queryParameters }\n };\n const vectorOptions = {\n spatialDataColumn,\n ...columns && { columns },\n ...filters && { filters },\n ...aggregationExp && { aggregationExp }\n };\n if (type === \"raster\") {\n return rasterSource({\n ...sourceOptions,\n tableName: source,\n ...filters && { filters }\n });\n }\n if (type === \"tileset\") {\n return vectorTilesetSource({ ...tilesetOptions });\n }\n if (type === \"table\") {\n if (isH3) {\n return h3TableSource({\n ...tableOptions,\n ...spatialIndexOptions\n });\n } else if (isQuadbin) {\n return quadbinTableSource({\n ...tableOptions,\n ...spatialIndexOptions\n });\n } else {\n return vectorTableSource({\n ...tableOptions,\n ...vectorOptions\n });\n }\n }\n if (type === \"query\") {\n if (isH3) {\n return h3QuerySource({\n ...queryOptions,\n ...spatialIndexOptions\n });\n } else if (isQuadbin) {\n return quadbinQuerySource({\n ...queryOptions,\n ...spatialIndexOptions\n });\n } else {\n return vectorQuerySource({\n ...queryOptions,\n ...vectorOptions\n });\n }\n }\n throw new Error(`Invalid source type: ${type}`);\n}\nfunction getSourceOptions({\n accessToken,\n apiBaseUrl,\n connection,\n headers,\n maxLengthURL\n}) {\n return {\n accessToken,\n connectionName: connection,\n apiBaseUrl,\n headers,\n maxLengthURL,\n ...headers?.[\"Cache-Control\"]?.includes(\"no-cache\") && {\n localCache: {\n cacheControl: [\"no-cache\"]\n }\n }\n };\n}\nfunction getDynamicTileResolution(spatialIndex) {\n if (spatialIndex !== \"h3\" /* H3 */) {\n return REDUCED_QUERIES_TILE_RESOLUTION;\n }\n return DEFAULT_TILE_RESOLUTION;\n}\nfunction scaleAggregationResLevel(aggregationResLevel, tileResolution) {\n if (typeof aggregationResLevel !== \"number\") return;\n return aggregationResLevel - Math.log2(0.5 / tileResolution);\n}\nfunction getColumnNameFromGeoColumn(geoColumn) {\n if (!geoColumn) {\n return geoColumn;\n }\n const parts = geoColumn.split(\":\");\n return parts.length === 1 ? parts[0] : parts.length === 2 ? parts[1] : null;\n}\nfunction getSpatialIndexFromGeoColumn(geoColumn) {\n const spatialIndexToSearch = geoColumn.split(\":\")[0];\n for (const index of Object.values(SpatialIndex)) {\n if (SpatialIndexColumn[index].includes(spatialIndexToSearch)) {\n return index;\n }\n }\n return null;\n}\n\n// src/fetch-map/fetch-map.ts\nasync function _fetchMapDataset(dataset, filters, context) {\n const { connectionName } = dataset;\n const cache = {};\n const configuredSource = configureSource({\n dataset,\n filters: isRemoteCalculationSupported(dataset) ? filters : void 0,\n options: {\n ...context,\n connection: connectionName,\n headers: context.headers,\n accessToken: context.accessToken,\n apiBaseUrl: context.apiBaseUrl,\n maxLengthURL: context.maxLengthURL\n }\n });\n dataset.data = await configuredSource;\n let cacheChanged = true;\n if (cache.value) {\n cacheChanged = dataset.cache !== cache.value;\n dataset.cache = cache.value;\n }\n return cacheChanged;\n}\nasync function _fetchTilestats(attribute, dataset, context) {\n const { connectionName, data, id, source, type, queryParameters } = dataset;\n const { apiBaseUrl } = context;\n const errorContext = {\n requestType: \"Tile stats\",\n connection: connectionName,\n type,\n source\n };\n if (!(\"tilestats\" in data)) {\n throw new CartoAPIError(\n new Error(`Invalid dataset for tilestats: ${id}`),\n errorContext\n );\n }\n const baseUrl = buildStatsUrl({ attribute, apiBaseUrl, ...dataset });\n const client2 = new URLSearchParams(data.tiles[0]).get(\"client\");\n const headers = { Authorization: `Bearer ${context.accessToken}` };\n const parameters = {};\n if (client2) {\n parameters.client = client2;\n }\n if (type === \"query\") {\n parameters.q = source;\n if (queryParameters) {\n parameters.queryParameters = JSON.stringify(queryParameters);\n }\n }\n const stats = await requestWithParameters({\n baseUrl,\n headers,\n parameters,\n errorContext,\n maxLengthURL: context.maxLengthURL\n });\n const { attributes } = data.tilestats.layers[0];\n const index = attributes.findIndex((d) => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\nasync function fillInMapDatasets({ datasets, keplerMapConfig }, context) {\n const { filters } = keplerMapConfig.config;\n const promises = datasets.map(\n (dataset) => _fetchMapDataset(dataset, filters[dataset.id], context)\n );\n return await Promise.all(promises);\n}\nasync function fillInTileStats({ datasets, keplerMapConfig }, context) {\n const attributes = [];\n const { layers } = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find((d) => d.id === layer.config.dataId);\n if (dataset && dataset.type !== \"tileset\" && dataset.data.tilestats) {\n attributes.push({ attribute, dataset });\n }\n }\n }\n }\n const filteredAttributes = [];\n for (const a of attributes) {\n if (!filteredAttributes.find(\n ({ attribute, dataset }) => attribute === a.attribute && dataset === a.dataset\n )) {\n filteredAttributes.push(a);\n }\n }\n const promises = filteredAttributes.map(\n ({ attribute, dataset }) => _fetchTilestats(attribute, dataset, context)\n );\n return await Promise.all(promises);\n}\nasync function fetchMap({\n accessToken,\n apiBaseUrl = DEFAULT_API_BASE_URL,\n cartoMapId,\n clientId,\n headers,\n autoRefresh,\n onNewData,\n maxLengthURL\n}) {\n assert2(\n cartoMapId,\n 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})'\n );\n if (accessToken) {\n headers = { Authorization: `Bearer ${accessToken}`, ...headers };\n }\n if (autoRefresh || onNewData) {\n assert2(onNewData, \"Must define `onNewData` when using autoRefresh\");\n assert2(typeof onNewData === \"function\", \"`onNewData` must be a function\");\n assert2(\n typeof autoRefresh === \"number\" && autoRefresh > 0,\n \"`autoRefresh` must be a positive number\"\n );\n }\n const baseUrl = buildPublicMapUrl({ apiBaseUrl, cartoMapId });\n const errorContext = {\n requestType: \"Public map\",\n mapId: cartoMapId\n };\n const map = await requestWithParameters({\n baseUrl,\n headers,\n errorContext,\n maxLengthURL\n });\n const context = {\n accessToken: map.token || accessToken,\n apiBaseUrl,\n clientId,\n headers,\n maxLengthURL\n };\n let stopAutoRefresh;\n if (autoRefresh) {\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, {\n ...context,\n headers: {\n ...headers,\n \"If-Modified-Since\": (/* @__PURE__ */ new Date()).toUTCString()\n }\n });\n if (onNewData && changed.some((v2) => v2 === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1e3);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({ type }) => type === \"geojson\" || type === \"point\"\n );\n const geojsonDatasetIds = geojsonLayers.map(\n ({ config: config2 }) => config2.dataId\n );\n map.datasets.forEach((dataset) => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const { config: config2 } = geojsonLayers.find(\n ({ config: config3 }) => config3.dataId === dataset.id\n );\n dataset.format = \"geojson\";\n if (!dataset.geoColumn && config2.columns.geojson) {\n dataset.geoColumn = config2.columns.geojson;\n }\n }\n });\n const [basemap] = await Promise.all([\n fetchBasemapProps({ config: map.keplerMapConfig.config, errorContext }),\n // Mutates map.datasets so that dataset.data contains data\n fillInMapDatasets(map, context)\n ]);\n await fillInTileStats(map, context);\n const out = { ...parseMap(map), basemap, ...{ stopAutoRefresh } };\n const textLayers = out.layers.filter((layer) => {\n const pointType = layer.props?.pointType || \"\";\n return pointType.includes(\"text\");\n });\n if (textLayers.length && window.FontFace && !document.fonts.check(\"12px Inter\")) {\n const font = new FontFace(\n \"Inter\",\n \"url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)\"\n );\n await font.load().then((f) => document.fonts.add(f));\n }\n return out;\n}\n\n// node_modules/@turf/union/dist/esm/index.js\nfunction union2(features, options = {}) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least 2 geometries\");\n }\n const unioned = union(geoms[0], ...geoms.slice(1));\n if (unioned.length === 0) return null;\n if (unioned.length === 1) return polygon(unioned[0], options.properties);\n else return multiPolygon(unioned, options.properties);\n}\nvar turf_union_default = union2;\n\n// src/geo.ts\nfunction createViewportSpatialFilter(viewport) {\n if (_isGlobalViewport(viewport)) {\n return;\n }\n return createPolygonSpatialFilter(turf_bbox_polygon_default(viewport).geometry);\n}\nfunction createPolygonSpatialFilter(spatialFilter) {\n return spatialFilter && _normalizeGeometry(spatialFilter) || void 0;\n}\nfunction _isGlobalViewport(viewport) {\n const [minx, miny, maxx, maxy] = viewport;\n return maxx - minx > 179.5 * 2 && maxy - miny > 85.05 * 2;\n}\nfunction _normalizeGeometry(geometry) {\n const WORLD = [-180, -90, 180, 90];\n const worldClip = _clean(\n turf_bbox_clip_default(geometry, WORLD).geometry\n );\n const geometryTxWest = _tx(geometry, 360);\n const geometryTxEast = _tx(geometry, -360);\n let result = worldClip;\n if (result && geometryTxWest) {\n const worldWestClip = _clean(\n turf_bbox_clip_default(geometryTxWest, WORLD).geometry\n );\n if (worldWestClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldWestClip)\n ]);\n const merged = turf_union_default(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n if (result && geometryTxEast) {\n const worldEastClip = _clean(\n turf_bbox_clip_default(geometryTxEast, WORLD).geometry\n );\n if (worldEastClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldEastClip)\n ]);\n const merged = turf_union_default(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n return result;\n}\nfunction _cleanPolygonCoords(cc2) {\n const coords = cc2.filter((c) => c.length > 0);\n return coords.length > 0 ? coords : null;\n}\nfunction _cleanMultiPolygonCoords(ccc) {\n const coords = ccc.map(_cleanPolygonCoords).filter((cc2) => cc2);\n return coords.length > 0 ? coords : null;\n}\nfunction _clean(geometry) {\n if (!geometry) {\n return null;\n }\n if (_isPolygon(geometry)) {\n const coords = _cleanPolygonCoords(geometry.coordinates);\n return coords ? polygon(coords).geometry : null;\n }\n if (_isMultiPolygon(geometry)) {\n const coords = _cleanMultiPolygonCoords(geometry.coordinates);\n return coords ? multiPolygon(coords).geometry : null;\n }\n return null;\n}\nfunction _txContourCoords(cc2, distance) {\n return cc2.map((c) => [c[0] + distance, c[1]]);\n}\nfunction _txPolygonCoords(ccc, distance) {\n return ccc.map((cc2) => _txContourCoords(cc2, distance));\n}\nfunction _txMultiPolygonCoords(cccc, distance) {\n return cccc.map((ccc) => _txPolygonCoords(ccc, distance));\n}\nfunction _tx(geometry, distance) {\n if (geometry && getType(geometry) === \"Polygon\") {\n const coords = _txPolygonCoords(\n geometry.coordinates,\n distance\n );\n return polygon(coords).geometry;\n } else if (geometry && getType(geometry) === \"MultiPolygon\") {\n const coords = _txMultiPolygonCoords(\n geometry.coordinates,\n distance\n );\n return multiPolygon(coords).geometry;\n } else {\n return null;\n }\n}\nfunction _isPolygon(geometry) {\n return getType(geometry) === \"Polygon\";\n}\nfunction _isMultiPolygon(geometry) {\n return getType(geometry) === \"MultiPolygon\";\n}\n\n// src/spatial-index.ts\nvar DEFAULT_TILE_SIZE = 512;\nvar BIAS = 2;\nfunction _getHexagonResolution(viewport, tileSize) {\n const zoomOffset = Math.log2(tileSize / DEFAULT_TILE_SIZE);\n const hexagonScaleFactor = 2 / 3 * (viewport.zoom - zoomOffset);\n const latitudeScaleFactor = Math.log(\n 1 / Math.cos(Math.PI * viewport.latitude / 180)\n );\n return Math.max(\n 0,\n Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS)\n );\n}\n\n// src/utils/CellSet.ts\nvar EMPTY_U32 = 2 ** 32 - 1;\nvar CellSet = class {\n constructor(cells) {\n /** List of cells stored by the set. Stored by reference, without copying. */\n __publicField(this, \"cells\");\n /** DataView representing a single cell ID. Pre-allocated to reduce memory during queries. */\n __publicField(this, \"cellView\", new DataView(new ArrayBuffer(8)));\n /** Hash table, mapping a hash index (computed) to an index in the 'cells' array. */\n __publicField(this, \"hashTable\");\n this.cells = cells;\n this.hashTable = new Uint32Array(hashBuckets(cells.length)).fill(EMPTY_U32);\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n this.hashTable[this.hashLookup(cells[cellIndex])] = cellIndex;\n }\n }\n has(cell) {\n const hashIndex = this.hashLookup(cell);\n return this.hashTable[hashIndex] !== EMPTY_U32;\n }\n hashLookup(cell) {\n this.cellView.setBigUint64(0, cell);\n const hashval = hash(this.cellView);\n const hashmod = this.hashTable.length - 1;\n let bucket = hashval & hashmod;\n for (let probe = 0; probe <= hashmod; probe++) {\n const cellIndex = this.hashTable[bucket];\n if (cellIndex === EMPTY_U32 || cell === this.cells[cellIndex]) {\n return bucket;\n }\n bucket = bucket + probe + 1 & hashmod;\n }\n throw new Error(\"Hash table full.\");\n }\n};\nfunction hash(view, h = 0) {\n const m = 1540483477;\n const r = 24;\n for (let i = 0, il = view.byteLength / 4; i < il; i++) {\n let k = view.getUint32(i * 4);\n k = Math.imul(k, m) >>> 0;\n k = (k ^ k >> r) >>> 0;\n k = Math.imul(k, m) >>> 0;\n h = Math.imul(h, m) >>> 0;\n h = (h ^ k) >>> 0;\n }\n return h;\n}\nfunction hashBuckets(initialCount) {\n let buckets = 1;\n while (buckets < initialCount + initialCount / 4) {\n buckets *= 2;\n }\n return buckets;\n}\nexport {\n AggregationTypes,\n ApiVersion,\n basemap_styles_default as BASEMAP,\n CartoAPIError,\n CellSet,\n DEFAULT_API_BASE_URL,\n FEATURE_GEOM_PROPERTY,\n FilterType,\n OPACITY_MAP,\n OTHERS_CATEGORY_NAME,\n Provider,\n RasterBandColorinterp,\n SOURCE_DEFAULTS,\n SchemaFieldType,\n SpatialIndex,\n SpatialIndexColumn,\n TEXT_LABEL_INDEX,\n TEXT_NUMBER_FORMATTER,\n TEXT_OUTLINE_OPACITY,\n TileFormat,\n WidgetQuerySource,\n WidgetRasterSource,\n WidgetRemoteSource,\n WidgetSource,\n WidgetTableSource,\n WidgetTilesetSource,\n ErrorCode as _ErrorCode,\n applyLayerGroupFilters as _applyLayerGroupFilters,\n _buildFeatureFilter,\n createVecExprEvaluator as _createVecExprEvaluator,\n domainFromValues as _domainFromValues,\n evaluateVecExpr as _evaluateVecExpr,\n _getHexagonResolution,\n getLog10ScaleSteps as _getLog10ScaleSteps,\n getRasterTileLayerStyleProps as _getRasterTileLayerStyleProps,\n validateVecExprSyntax as _validateVecExprSyntax,\n addFilter,\n aggregate,\n aggregationFunctions,\n applyFilters,\n applySorting,\n boundaryQuerySource,\n boundaryTableSource,\n buildBinaryFeatureFilter,\n buildPublicMapUrl,\n buildStatsUrl,\n calculateClusterRadius,\n calculateClusterTextFontSize,\n calculateLayerScale,\n clearDefaultRequestCache,\n clearFilters,\n configureSource,\n createColorScale,\n createPolygonSpatialFilter,\n createViewportSpatialFilter,\n fetchBasemapProps,\n fetchMap,\n filterFunctions,\n geojsonFeatures,\n getApplicableFilters,\n getClient,\n getColorAccessor,\n getColumnNameFromGeoColumn,\n getDataFilterExtensionProps,\n getDefaultAggregationExpColumnAliasForLayerType,\n getFilter,\n getIconUrlAccessor,\n getLayerDescriptor,\n getLayerProps,\n getMaxMarkerSize,\n getSizeAccessor,\n getSorter,\n getSpatialIndexFromGeoColumn,\n getTextAccessor,\n groupValuesByColumn,\n groupValuesByDateColumn,\n h3QuerySource,\n h3TableSource,\n h3TilesetSource,\n hasFilter,\n histogram,\n makeIntervalComplete,\n negateAccessor,\n opacityToAlpha,\n parseMap,\n quadbinQuerySource,\n quadbinTableSource,\n quadbinTilesetSource,\n query,\n rasterSource,\n removeFilter,\n requestWithParameters,\n scaleAggregationResLevel,\n scatterPlot,\n setClient,\n tileFeatures,\n tileFeaturesGeometries,\n tileFeaturesSpatialIndex,\n trajectoryQuerySource,\n trajectoryTableSource,\n transformToTileCoords,\n vectorQuerySource,\n vectorTableSource,\n vectorTilesetSource\n};\n//# sourceMappingURL=api-client.js.map","import type { FeatureData } from './types'\n\nexport function geojsonFeatures({\n geojson,\n uniqueIdProperty,\n}: {\n geojson: FeatureData[]\n uniqueIdProperty?: string\n}): FeatureData[] {\n return geojson.map((f) => {\n const properties = f.properties ?? {}\n const updatedProperties =\n uniqueIdProperty && properties[uniqueIdProperty] != null\n ? properties\n : {\n ...properties,\n id: uniqueIdProperty ? String(properties[uniqueIdProperty]) : '',\n }\n\n return {\n ...f,\n properties: updatedProperties,\n }\n })\n}\n","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 180) {\n return angle - 360;\n } else if (angle < -180) {\n return angle + 360;\n }\n return angle;\n}\nfunction radiansToDegrees(radians) {\n const normalisedRadians = radians % (2 * Math.PI);\n return normalisedRadians * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const normalisedDegrees = degrees % 360;\n return normalisedDegrees * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { isNumber } from \"@turf/helpers\";\nfunction getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\n return [...coord.geometry.coordinates];\n }\n if (coord.type === \"Point\") {\n return [...coord.coordinates];\n }\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\n return [...coord];\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n } else {\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\n \"coords must be GeoJSON Feature, Geometry Object or an Array\"\n );\n}\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\nfunction geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type\n );\n }\n}\nfunction featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n}\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\n \"Invalid input to \" + name + \", FeatureCollection required\"\n );\n }\n for (const feature of featureCollection.features) {\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n }\n}\nfunction getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\nfunction getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\nexport {\n collectionOf,\n containsNumber,\n featureOf,\n geojsonType,\n getCoord,\n getCoords,\n getGeom,\n getType\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry) return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson) throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null) return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nvar turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import { orient2d } from 'robust-predicates';\n\nfunction pointInPolygon(p, polygon) {\n var i;\n var ii;\n var k = 0;\n var f;\n var u1;\n var v1;\n var u2;\n var v2;\n var currentP;\n var nextP;\n\n var x = p[0];\n var y = p[1];\n\n var numContours = polygon.length;\n for (i = 0; i < numContours; i++) {\n ii = 0;\n var contour = polygon[i];\n var contourLen = contour.length - 1;\n\n currentP = contour[0];\n if (currentP[0] !== contour[contourLen][0] &&\n currentP[1] !== contour[contourLen][1]) {\n throw new Error('First and last coordinates in a ring must be the same')\n }\n\n u1 = currentP[0] - x;\n v1 = currentP[1] - y;\n\n for (ii; ii < contourLen; ii++) {\n nextP = contour[ii + 1];\n\n u2 = nextP[0] - x;\n v2 = nextP[1] - y;\n\n if (v1 === 0 && v2 === 0) {\n if ((u2 <= 0 && u1 >= 0) || (u1 <= 0 && u2 >= 0)) { return 0 }\n } else if ((v2 >= 0 && v1 <= 0) || (v2 <= 0 && v1 >= 0)) {\n f = orient2d(u1, u2, v1, v2, 0, 0);\n if (f === 0) { return 0 }\n if ((f > 0 && v2 > 0 && v1 <= 0) || (f < 0 && v2 <= 0 && v1 > 0)) { k++; }\n }\n currentP = nextP;\n v1 = v2;\n u1 = u2;\n }\n }\n\n if (k % 2 === 0) { return false }\n return true\n}\n\nexport { pointInPolygon as default };\n","// index.ts\nimport pip from \"point-in-polygon-hao\";\nimport { getCoord, getGeom } from \"@turf/invariant\";\nfunction booleanPointInPolygon(point, polygon, options = {}) {\n if (!point) {\n throw new Error(\"point is required\");\n }\n if (!polygon) {\n throw new Error(\"polygon is required\");\n }\n const pt = getCoord(point);\n const geom = getGeom(polygon);\n const type = geom.type;\n const bbox = polygon.bbox;\n let polys = geom.coordinates;\n if (bbox && inBBox(pt, bbox) === false) {\n return false;\n }\n if (type === \"Polygon\") {\n polys = [polys];\n }\n let result = false;\n for (var i = 0; i < polys.length; ++i) {\n const polyResult = pip(pt, polys[i]);\n if (polyResult === 0) return options.ignoreBoundary ? false : true;\n else if (polyResult) result = true;\n }\n return result;\n}\nfunction inBBox(pt, bbox) {\n return bbox[0] <= pt[0] && bbox[1] <= pt[1] && bbox[2] >= pt[0] && bbox[3] >= pt[1];\n}\nvar turf_boolean_point_in_polygon_default = booleanPointInPolygon;\nexport {\n booleanPointInPolygon,\n turf_boolean_point_in_polygon_default as default\n};\n//# sourceMappingURL=index.js.map","class TinyQueue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction checkWhichEventIsLeft (e1, e2) {\n if (e1.p.x > e2.p.x) return 1\n if (e1.p.x < e2.p.x) return -1\n\n if (e1.p.y !== e2.p.y) return e1.p.y > e2.p.y ? 1 : -1\n return 1\n}\n\nfunction checkWhichSegmentHasRightEndpointFirst (seg1, seg2) {\n if (seg1.rightSweepEvent.p.x > seg2.rightSweepEvent.p.x) return 1\n if (seg1.rightSweepEvent.p.x < seg2.rightSweepEvent.p.x) return -1\n\n if (seg1.rightSweepEvent.p.y !== seg2.rightSweepEvent.p.y) return seg1.rightSweepEvent.p.y < seg2.rightSweepEvent.p.y ? 1 : -1\n return 1\n}\n\nclass Event {\n\n constructor (p, featureId, ringId, eventId) {\n this.p = {\n x: p[0],\n y: p[1]\n };\n this.featureId = featureId;\n this.ringId = ringId;\n this.eventId = eventId;\n\n this.otherEvent = null;\n this.isLeftEndpoint = null;\n }\n\n isSamePoint (eventToCheck) {\n return this.p.x === eventToCheck.p.x && this.p.y === eventToCheck.p.y\n }\n}\n\nfunction fillEventQueue (geojson, eventQueue) {\n if (geojson.type === 'FeatureCollection') {\n const features = geojson.features;\n for (let i = 0; i < features.length; i++) {\n processFeature(features[i], eventQueue);\n }\n } else {\n processFeature(geojson, eventQueue);\n }\n}\n\nlet featureId = 0;\nlet ringId = 0;\nlet eventId = 0;\nfunction processFeature (featureOrGeometry, eventQueue) {\n const geom = featureOrGeometry.type === 'Feature' ? featureOrGeometry.geometry : featureOrGeometry;\n let coords = geom.coordinates;\n // standardise the input\n if (geom.type === 'Polygon' || geom.type === 'MultiLineString') coords = [coords];\n if (geom.type === 'LineString') coords = [[coords]];\n\n for (let i = 0; i < coords.length; i++) {\n for (let ii = 0; ii < coords[i].length; ii++) {\n let currentP = coords[i][ii][0];\n let nextP = null;\n ringId = ringId + 1;\n for (let iii = 0; iii < coords[i][ii].length - 1; iii++) {\n nextP = coords[i][ii][iii + 1];\n\n const e1 = new Event(currentP, featureId, ringId, eventId);\n const e2 = new Event(nextP, featureId, ringId, eventId + 1);\n\n e1.otherEvent = e2;\n e2.otherEvent = e1;\n\n if (checkWhichEventIsLeft(e1, e2) > 0) {\n e2.isLeftEndpoint = true;\n e1.isLeftEndpoint = false;\n } else {\n e1.isLeftEndpoint = true;\n e2.isLeftEndpoint = false;\n }\n eventQueue.push(e1);\n eventQueue.push(e2);\n\n currentP = nextP;\n eventId = eventId + 1;\n }\n }\n }\n featureId = featureId + 1;\n}\n\nclass Segment {\n\n constructor (event) {\n this.leftSweepEvent = event;\n this.rightSweepEvent = event.otherEvent;\n }\n}\n\nfunction testSegmentIntersect (seg1, seg2) {\n if (seg1 === null || seg2 === null) return false\n\n if (seg1.leftSweepEvent.ringId === seg2.leftSweepEvent.ringId &&\n (seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.rightSweepEvent.isSamePoint(seg2.rightSweepEvent) ||\n seg1.leftSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.leftSweepEvent.isSamePoint(seg2.rightSweepEvent))) return false\n\n const x1 = seg1.leftSweepEvent.p.x;\n const y1 = seg1.leftSweepEvent.p.y;\n const x2 = seg1.rightSweepEvent.p.x;\n const y2 = seg1.rightSweepEvent.p.y;\n const x3 = seg2.leftSweepEvent.p.x;\n const y3 = seg2.leftSweepEvent.p.y;\n const x4 = seg2.rightSweepEvent.p.x;\n const y4 = seg2.rightSweepEvent.p.y;\n\n const denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1));\n const numeA = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3));\n const numeB = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3));\n\n if (denom === 0) {\n if (numeA === 0 && numeB === 0) return false\n return false\n }\n\n const uA = numeA / denom;\n const uB = numeB / denom;\n\n if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n const x = x1 + (uA * (x2 - x1));\n const y = y1 + (uA * (y2 - y1));\n return [x, y]\n }\n return false\n}\n\n// import {debugEventAndSegments, debugRemovingSegment} from './debug'\n\nfunction runCheck (eventQueue, ignoreSelfIntersections) {\n ignoreSelfIntersections = ignoreSelfIntersections ? ignoreSelfIntersections : false;\n\n const intersectionPoints = [];\n const outQueue = new TinyQueue([], checkWhichSegmentHasRightEndpointFirst);\n\n while (eventQueue.length) {\n const event = eventQueue.pop();\n if (event.isLeftEndpoint) {\n // debugEventAndSegments(event.p, outQueue.data)\n const segment = new Segment(event);\n for (let i = 0; i < outQueue.data.length; i++) {\n const otherSeg = outQueue.data[i];\n if (ignoreSelfIntersections) {\n if (otherSeg.leftSweepEvent.featureId === event.featureId) continue\n }\n const intersection = testSegmentIntersect(segment, otherSeg);\n if (intersection !== false) intersectionPoints.push(intersection);\n }\n outQueue.push(segment);\n } else if (event.isLeftEndpoint === false) {\n outQueue.pop();\n // const seg = outQueue.pop()\n // debugRemovingSegment(event.p, seg)\n }\n }\n return intersectionPoints\n}\n\nfunction sweeplineIntersections (geojson, ignoreSelfIntersections) {\n const eventQueue = new TinyQueue([], checkWhichEventIsLeft);\n fillEventQueue(geojson, eventQueue);\n return runCheck(eventQueue, ignoreSelfIntersections)\n}\n\nexport default sweeplineIntersections;\n","// index.ts\nimport { feature, featureCollection, point } from \"@turf/helpers\";\n\n// lib/sweepline-intersections-export.ts\nimport lib from \"sweepline-intersections\";\nvar sweeplineIntersections = lib;\n\n// index.ts\nfunction lineIntersect(line1, line2, options = {}) {\n const { removeDuplicates = true, ignoreSelfIntersections = true } = options;\n let features = [];\n if (line1.type === \"FeatureCollection\")\n features = features.concat(line1.features);\n else if (line1.type === \"Feature\") features.push(line1);\n else if (line1.type === \"LineString\" || line1.type === \"Polygon\" || line1.type === \"MultiLineString\" || line1.type === \"MultiPolygon\") {\n features.push(feature(line1));\n }\n if (line2.type === \"FeatureCollection\")\n features = features.concat(line2.features);\n else if (line2.type === \"Feature\") features.push(line2);\n else if (line2.type === \"LineString\" || line2.type === \"Polygon\" || line2.type === \"MultiLineString\" || line2.type === \"MultiPolygon\") {\n features.push(feature(line2));\n }\n const intersections = sweeplineIntersections(\n featureCollection(features),\n ignoreSelfIntersections\n );\n let results = [];\n if (removeDuplicates) {\n const unique = {};\n intersections.forEach((intersection) => {\n const key = intersection.join(\",\");\n if (!unique[key]) {\n unique[key] = true;\n results.push(intersection);\n }\n });\n } else {\n results = intersections;\n }\n return featureCollection(results.map((r) => point(r)));\n}\nvar turf_line_intersect_default = lineIntersect;\nexport {\n turf_line_intersect_default as default,\n lineIntersect\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { featureCollection, lineString, multiLineString } from \"@turf/helpers\";\nimport { getGeom } from \"@turf/invariant\";\nfunction polygonToLine(poly, options = {}) {\n const geom = getGeom(poly);\n if (!options.properties && poly.type === \"Feature\") {\n options.properties = poly.properties;\n }\n switch (geom.type) {\n case \"Polygon\":\n return singlePolygonToLine(geom, options);\n case \"MultiPolygon\":\n return multiPolygonToLine(geom, options);\n default:\n throw new Error(\"invalid poly\");\n }\n}\nfunction singlePolygonToLine(poly, options = {}) {\n const geom = getGeom(poly);\n const coords = geom.coordinates;\n const properties = options.properties ? options.properties : poly.type === \"Feature\" ? poly.properties : {};\n return coordsToLine(coords, properties);\n}\nfunction multiPolygonToLine(multiPoly, options = {}) {\n const geom = getGeom(multiPoly);\n const coords = geom.coordinates;\n const properties = options.properties ? options.properties : multiPoly.type === \"Feature\" ? multiPoly.properties : {};\n const lines = [];\n coords.forEach((coord) => {\n lines.push(coordsToLine(coord, properties));\n });\n return featureCollection(lines);\n}\nfunction coordsToLine(coords, properties) {\n if (coords.length > 1) {\n return multiLineString(coords, properties);\n }\n return lineString(coords[0], properties);\n}\nvar turf_polygon_to_line_default = polygonToLine;\nexport {\n coordsToLine,\n turf_polygon_to_line_default as default,\n multiPolygonToLine,\n polygonToLine,\n singlePolygonToLine\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { flattenEach } from \"@turf/meta\";\nimport { polygonToLine } from \"@turf/polygon-to-line\";\nfunction booleanDisjoint(feature1, feature2, {\n ignoreSelfIntersections = true\n} = { ignoreSelfIntersections: true }) {\n let bool = true;\n flattenEach(feature1, (flatten1) => {\n flattenEach(feature2, (flatten2) => {\n if (bool === false) {\n return false;\n }\n bool = disjoint(\n flatten1.geometry,\n flatten2.geometry,\n ignoreSelfIntersections\n );\n });\n });\n return bool;\n}\nfunction disjoint(geom1, geom2, ignoreSelfIntersections) {\n switch (geom1.type) {\n case \"Point\":\n switch (geom2.type) {\n case \"Point\":\n return !compareCoords(geom1.coordinates, geom2.coordinates);\n case \"LineString\":\n return !isPointOnLine(geom2, geom1);\n case \"Polygon\":\n return !booleanPointInPolygon(geom1, geom2);\n }\n break;\n case \"LineString\":\n switch (geom2.type) {\n case \"Point\":\n return !isPointOnLine(geom1, geom2);\n case \"LineString\":\n return !isLineOnLine(geom1, geom2, ignoreSelfIntersections);\n case \"Polygon\":\n return !isLineInPoly(geom2, geom1, ignoreSelfIntersections);\n }\n break;\n case \"Polygon\":\n switch (geom2.type) {\n case \"Point\":\n return !booleanPointInPolygon(geom2, geom1);\n case \"LineString\":\n return !isLineInPoly(geom1, geom2, ignoreSelfIntersections);\n case \"Polygon\":\n return !isPolyInPoly(geom2, geom1, ignoreSelfIntersections);\n }\n }\n return false;\n}\nfunction isPointOnLine(lineString, pt) {\n for (let i = 0; i < lineString.coordinates.length - 1; i++) {\n if (isPointOnLineSegment(\n lineString.coordinates[i],\n lineString.coordinates[i + 1],\n pt.coordinates\n )) {\n return true;\n }\n }\n return false;\n}\nfunction isLineOnLine(lineString1, lineString2, ignoreSelfIntersections) {\n const doLinesIntersect = lineIntersect(lineString1, lineString2, {\n ignoreSelfIntersections\n });\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\nfunction isLineInPoly(polygon, lineString, ignoreSelfIntersections) {\n for (const coord of lineString.coordinates) {\n if (booleanPointInPolygon(coord, polygon)) {\n return true;\n }\n }\n const doLinesIntersect = lineIntersect(lineString, polygonToLine(polygon), {\n ignoreSelfIntersections\n });\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\nfunction isPolyInPoly(feature1, feature2, ignoreSelfIntersections) {\n for (const coord1 of feature1.coordinates[0]) {\n if (booleanPointInPolygon(coord1, feature2)) {\n return true;\n }\n }\n for (const coord2 of feature2.coordinates[0]) {\n if (booleanPointInPolygon(coord2, feature1)) {\n return true;\n }\n }\n const doLinesIntersect = lineIntersect(\n polygonToLine(feature1),\n polygonToLine(feature2),\n { ignoreSelfIntersections }\n );\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt) {\n const dxc = pt[0] - lineSegmentStart[0];\n const dyc = pt[1] - lineSegmentStart[1];\n const dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n const dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n const cross = dxc * dyl - dyc * dxl;\n if (cross !== 0) {\n return false;\n }\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n if (dxl > 0) {\n return lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0];\n } else {\n return lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n }\n } else if (dyl > 0) {\n return lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1];\n } else {\n return lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n }\n}\nfunction compareCoords(pair1, pair2) {\n return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\nvar turf_boolean_disjoint_default = booleanDisjoint;\nexport {\n booleanDisjoint,\n turf_boolean_disjoint_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { booleanDisjoint } from \"@turf/boolean-disjoint\";\nimport { flattenEach } from \"@turf/meta\";\nfunction booleanIntersects(feature1, feature2, {\n ignoreSelfIntersections = true\n} = {}) {\n let bool = false;\n flattenEach(feature1, (flatten1) => {\n flattenEach(feature2, (flatten2) => {\n if (bool === true) {\n return true;\n }\n bool = !booleanDisjoint(flatten1.geometry, flatten2.geometry, {\n ignoreSelfIntersections\n });\n });\n });\n return bool;\n}\nvar turf_boolean_intersects_default = booleanIntersects;\nexport {\n booleanIntersects,\n turf_boolean_intersects_default as default\n};\n//# sourceMappingURL=index.js.map","import {\n aggregationFunctions,\n AggregationTypes,\n applyFilters,\n applySorting,\n getApplicableFilters,\n groupValuesByColumn,\n groupValuesByDateColumn,\n histogram,\n OTHERS_CATEGORY_NAME,\n scatterPlot,\n WidgetSource,\n type AggregationsRequestOptions,\n type AggregationsResponse,\n type CategoryRequestOptions,\n type CategoryResponse,\n type ExtentResponse,\n type FeaturesResponse,\n type Filter,\n type FormulaRequestOptions,\n type FormulaResponse,\n type HistogramRequestOptions,\n type HistogramResponse,\n type RangeRequestOptions,\n type RangeResponse,\n type ScatterRequestOptions,\n type ScatterResponse,\n type SpatialFilter,\n type TableRequestOptions,\n type TableResponse,\n type TimeSeriesRequestOptions,\n type TimeSeriesResponse,\n} from '@carto/api-client'\nimport { geojsonFeatures } from './geojson-features'\nimport type { WidgetGeoJsonSourceProps } from './widget-geojson-source'\nimport type { FeatureData } from './types'\nimport { bbox, booleanIntersects, feature, featureCollection } from '@turf/turf'\n\n// TODO(cleanup): Parameter defaults in source functions and widget API calls are\n// currently duplicated and possibly inconsistent. Consider consolidating and\n// operating on Required<T> objects. See:\n// https://github.com/CartoDB/carto-api-client/issues/39\n\n/**\n * Local (in-memory) implementation of geojson widget calculations. This class\n * may be instantiated by {@link WidgetGeoJsonSource} in a Web Worker when\n * supported, or on the main thread.\n */\nexport class WidgetGeoJsonSourceImpl extends WidgetSource<WidgetGeoJsonSourceProps> {\n private features: FeatureData[] = []\n\n protected _filterFeaturesBySpatial(spatialFilter?: SpatialFilter) {\n if (!spatialFilter) {\n return this.features\n }\n\n return this.features.filter((f) => {\n return booleanIntersects(f, feature(spatialFilter))\n })\n }\n\n /**\n * Loads features as GeoJSON.\n */\n loadGeoJSON({ geojson }: { geojson: FeatureData[] }) {\n this.features = geojsonFeatures({\n geojson,\n })\n }\n\n override getFeatures(): Promise<FeaturesResponse> {\n return Promise.reject(new Error('getFeatures not supported for geojson'))\n }\n\n getFormula({\n column = '*',\n operation = AggregationTypes.Count,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: FormulaRequestOptions): Promise<FormulaResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner,\n )\n\n if (filteredFeatures.length === 0) {\n return Promise.resolve({ value: null })\n }\n\n if (operation === AggregationTypes.Custom) {\n throw new Error('Custom aggregation not supported for geojson')\n }\n\n // Column is required except when operation is 'count'.\n if ((column && column !== '*') || operation !== AggregationTypes.Count) {\n assertColumn(filteredFeatures, column)\n }\n\n const targetOperation = aggregationFunctions[operation]\n assert(targetOperation, `Unsupported aggregation operation: ${operation}`)\n\n return Promise.resolve({\n value: targetOperation(\n filteredFeatures.map((f) => f?.properties as unknown),\n column,\n joinOperation,\n ),\n })\n }\n\n override getHistogram({\n operation = AggregationTypes.Count,\n ticks,\n column,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: HistogramRequestOptions): Promise<HistogramResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner,\n )\n\n if (!filteredFeatures.length) {\n return Promise.resolve([])\n }\n\n assertColumn(filteredFeatures, column)\n\n return Promise.resolve(\n histogram({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(column),\n joinOperation,\n ticks,\n operation,\n }),\n )\n }\n\n override getCategories({\n column,\n operation = AggregationTypes.Count,\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n othersThreshold,\n orderBy = 'frequency_desc',\n rawResult,\n }: CategoryRequestOptions): Promise<CategoryResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner,\n )\n\n if (!filteredFeatures.length) {\n return Promise.resolve([])\n }\n\n assertColumn(filteredFeatures, column, operationColumn!)\n\n const result = groupValuesByColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn ?? column),\n joinOperation,\n keysColumn: column,\n operation,\n othersThreshold,\n orderBy,\n })\n\n if (rawResult) {\n return Promise.resolve(result as unknown as CategoryResponse)\n }\n\n if (!othersThreshold) {\n return Promise.resolve(result?.rows ?? [])\n }\n\n return Promise.resolve([\n ...(result?.rows ?? []),\n { name: OTHERS_CATEGORY_NAME, value: result?.metadata?.others ?? 0 },\n ])\n }\n\n override getScatter({\n xAxisColumn,\n yAxisColumn,\n xAxisJoinOperation,\n yAxisJoinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: ScatterRequestOptions): Promise<ScatterResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner,\n )\n\n if (!filteredFeatures.length) {\n return Promise.resolve([])\n }\n\n assertColumn(filteredFeatures, xAxisColumn, yAxisColumn)\n\n return Promise.resolve(\n scatterPlot({\n data: filteredFeatures,\n xAxisColumns: normalizeColumns(xAxisColumn),\n xAxisJoinOperation,\n yAxisColumns: normalizeColumns(yAxisColumn),\n yAxisJoinOperation,\n }),\n )\n }\n\n override getTable({\n columns,\n searchFilterColumn,\n searchFilterText,\n sortBy,\n sortDirection,\n sortByColumnType,\n offset = 0,\n limit = 10,\n filters,\n filterOwner,\n spatialFilter,\n }: TableRequestOptions): Promise<TableResponse> {\n // Filter.\n let filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner,\n )\n\n if (!filteredFeatures.length) {\n return Promise.resolve({ rows: [], totalCount: 0 })\n }\n\n // Search.\n // TODO(v0.6): Remove \"searchFilterText\" and \"searchFilterColumn\".\n if (searchFilterColumn && searchFilterText) {\n // eslint-disable-next-line no-console\n console.warn(\n 'WidgetGeoJsonSource: \"searchFilterText\" is deprecated, use \"filters\" and FilterType.STRING_SEARCH instead.',\n )\n filteredFeatures = filteredFeatures.filter(\n (row) =>\n row[searchFilterColumn] &&\n String(row[searchFilterColumn] as unknown)\n .toLowerCase()\n .includes(String(searchFilterText).toLowerCase()),\n )\n }\n\n // Sort.\n let rows = applySorting(filteredFeatures, {\n sortBy,\n sortByDirection: sortDirection,\n sortByColumnType,\n })\n const totalCount = rows.length\n\n // Offset and limit.\n rows = rows.slice(\n Math.min(offset, totalCount),\n Math.min(offset + limit, totalCount),\n )\n\n // Select columns.\n rows = rows.map((srcRow: FeatureData['properties']) => {\n const dstRow: FeatureData['properties'] = {}\n if (srcRow) {\n for (const column of columns) {\n dstRow[column] = srcRow[column] as unknown\n }\n }\n return dstRow\n })\n\n return Promise.resolve({ rows, totalCount } as TableResponse)\n }\n\n override getTimeSeries({\n column,\n stepSize,\n operation,\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: TimeSeriesRequestOptions): Promise<TimeSeriesResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner,\n )\n\n if (!filteredFeatures.length) {\n return Promise.resolve({ rows: [] })\n }\n\n assertColumn(filteredFeatures, column, operationColumn!)\n assert(operation !== 'custom', 'Custom operation not supported for geojson')\n\n const rows =\n groupValuesByDateColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn ?? column),\n keysColumn: column,\n groupType: stepSize,\n operation,\n joinOperation,\n }) ?? []\n\n return Promise.resolve({ rows })\n }\n\n override getRange({\n column,\n filters,\n filterOwner,\n spatialFilter,\n }: RangeRequestOptions): Promise<RangeResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner,\n )\n\n if (!filteredFeatures.length) {\n // TODO: Is this the only nullable response in the Widgets API? If so,\n // can we do something more consistent?\n return Promise.resolve(null)\n }\n\n assertColumn(filteredFeatures, column)\n\n return Promise.resolve({\n min: aggregationFunctions.min(filteredFeatures, column),\n max: aggregationFunctions.max(filteredFeatures, column),\n })\n }\n\n getAggregations({\n aggregations,\n filters,\n filterOwner,\n spatialFilter,\n }: AggregationsRequestOptions): Promise<AggregationsResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner,\n )\n\n if (!filteredFeatures.length) {\n return Promise.resolve({ rows: [] })\n }\n\n // SQL aggregations require remote execution, and are not supported for geojson.\n assert(\n typeof aggregations !== 'string',\n 'Unsupported geojson SQL aggregation',\n )\n\n // Handle array-based aggregations\n const result: Record<string, number> = {}\n const usedAliases = new Set<string>()\n\n for (const { column, operation, alias } of aggregations) {\n // Column is required except when operation is 'count'.\n if ((column && column !== '*') || operation !== AggregationTypes.Count) {\n assertColumn(filteredFeatures, column)\n }\n\n const aliasKey = alias.toLowerCase()\n assert(!usedAliases.has(aliasKey), `Duplicate alias: ${aliasKey}`)\n usedAliases.add(aliasKey)\n\n const targetOperation = aggregationFunctions[operation]\n assert(targetOperation, `Unsupported operation: ${operation}`)\n\n result[alias] = targetOperation(filteredFeatures, column)\n }\n\n return Promise.resolve({ rows: [result] })\n }\n\n /** @experimental */\n getExtent(): Promise<ExtentResponse> {\n const _bbox = bbox(featureCollection(this.features))\n return Promise.resolve({ bbox: _bbox })\n }\n\n /****************************************************************************\n * INTERNAL\n */\n\n private _getFilteredFeatures(\n spatialFilter?: SpatialFilter,\n filters?: Record<string, Filter>,\n filterOwner?: string,\n ): NonNullable<FeatureData['properties']>[] {\n const _features = this._filterFeaturesBySpatial(spatialFilter)\n return applyFilters(\n _features.map((f) => f.properties ?? {}),\n getApplicableFilters(filterOwner, filters ?? this.props.filters),\n this.props.filtersLogicalOperator ?? 'and',\n )\n }\n}\n\nfunction assert(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(message)\n }\n}\n\nfunction assertColumn(\n features: FeatureData['properties'][],\n ...columnArgs: string[] | string[][]\n) {\n // Due to the multiple column shape, we normalise it as an array with normalizeColumns\n const columns = Array.from(new Set(columnArgs.map(normalizeColumns).flat()))\n\n const featureKeys = Object.keys(features[0] ?? {})\n\n // For backward compatibility, '' should pass column validation. For example,\n // operation='count',operationColumn='' is accepted.\n const invalidColumns = columns.filter(\n (column) => column && !featureKeys.includes(column),\n )\n\n if (invalidColumns.length) {\n throw new Error(`Missing column(s): ${invalidColumns.join(', ')}`)\n }\n}\n\nfunction normalizeColumns(columns: string | string[]): string[] {\n return Array.isArray(columns)\n ? columns\n : typeof columns === 'string'\n ? [columns]\n : []\n}\n","import { Method } from './const'\nimport { WidgetGeoJsonSourceImpl } from './widget-geojson-source-impl'\nimport type { WorkerRequest, WorkerResponse } from './types'\nimport type { WidgetGeoJsonSourceProps } from './widget-geojson-source'\n\n/*\n * Web Worker.\n *\n * Workers are scoped to the lifecycle of a single WidgetGeoJsonSource instance,\n * representing and executing calculations on a single datasource.\n */\n\nlet source: WidgetGeoJsonSourceImpl\n\naddEventListener('message', (e) => {\n const { method, params, requestId } = e.data as WorkerRequest\n\n if (method === Method.INIT) {\n source = new WidgetGeoJsonSourceImpl({\n ...(params[0] as WidgetGeoJsonSourceProps),\n widgetWorker: false,\n })\n return\n }\n\n if (!source) {\n const error = `Cannot execute \"${method}\" on uninitialized source.`\n postMessage({ ok: false, error, requestId } as WorkerResponse)\n return\n }\n\n // @ts-expect-error No type-checking dynamic method name.\n Promise.resolve(source[method](...params))\n .then((result) => {\n postMessage({ ok: true, result, requestId } as WorkerResponse)\n })\n .catch((error) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n postMessage({ ok: false, error, requestId } as WorkerResponse)\n })\n})\n"],"names":["Method","libh3","Module","moduleOverrides","key","scriptDirectory","locateFile","path","readAsync","url","onload","onerror","xhr","data","tryParseAsDataURI","out","err","tempRet0","setTempRet0","value","getTempRet0","GLOBAL_BASE","setValue","ptr","type","noSafe","HEAP8","HEAP16","HEAP32","tempI64","tempDouble","Math_abs","Math_min","Math_floor","Math_ceil","HEAPF32","HEAPF64","abort","getValue","ABORT","assert","condition","text","getCFunc","ident","func","ccall","returnType","argTypes","args","opts","toC","str","ret","len","stackAlloc","stringToUTF8","arr","writeArrayToMemory","convertReturnValue","UTF8ToString","cArgs","stack","i","converter","stackSave","stackRestore","cwrap","numericArgs","numericRet","UTF8Decoder","UTF8ArrayToString","u8Array","idx","maxBytesToRead","endIdx","endPtr","u0","u1","u2","ch","HEAPU8","stringToUTF8Array","outU8Array","outIdx","maxBytesToWrite","startIdx","u","outPtr","array","buffer","alignUp","x","multiple","updateGlobalBufferAndViews","buf","DYNAMIC_BASE","DYNAMICTOP_PTR","INITIAL_TOTAL_MEMORY","callRuntimeCallbacks","callbacks","callback","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATPOSTRUN__","preRun","addOnPreRun","initRuntime","preMain","postRun","addOnPostRun","cb","runDependencies","dependenciesFulfilled","addRunDependency","id","removeRunDependency","memoryInitializer","dataURIPrefix","isDataURI","filename","tempDoublePtr","___assert_fail","line","_emscripten_get_heap_size","_emscripten_memcpy_big","dest","src","num","___setErrNo","abortOnCannotGrowMemory","requestedSize","emscripten_realloc_buffer","size","newBuffer","_emscripten_replace_memory","_emscripten_resize_heap","oldSize","PAGE_MULTIPLE","LIMIT","MIN_TOTAL_MEMORY","newSize","replacement","decodeBase64","input","keyStr","output","chr1","chr2","chr3","enc1","enc2","enc3","enc4","intArrayFromBase64","s","decoded","bytes","asmGlobalArg","asmLibraryArg","asm","global","env","a","b","e","f","g","p","q","r","t","v","w","y","z","A","B","C","D","E","G","H","I","J","K","L","M","N","T","W","X","Y","Z","_","$","c","d","uc","Md","Gd","aa","ba","h","j","k","ca","Xd","da","Fd","Ed","l","m","n","o","Hb","ea","Od","Nd","$a","Qd","Pb","Vb","Rd","Rb","oa","ua","Tb","Qb","pa","fa","ga","ha","ia","ja","Xc","Wc","Ha","ka","F","Ia","Hd","Wb","la","Dd","Yc","Zb","Zc","ma","ud","_b","zd","xd","yd","vd","na","wd","Cc","Dc","Ad","Fc","Ec","qa","ra","sa","ta","va","wa","xa","ya","za","Aa","Ba","Ca","Da","kc","Ea","Fa","Ga","Wd","cc","mc","Td","Ud","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Cd","Ta","Ua","Va","Wa","Xa","Ya","Za","_a","ab","bb","db","eb","fb","gb","hb","ib","Fb","jb","kb","lb","mb","Db","nb","ob","pb","od","Yb","vb","zb","qb","rb","sb","ic","oc","nd","md","tb","jd","pc","ub","wb","xb","kd","yb","Ab","ld","Bb","Cb","Sd","Eb","Gb","Oc","Kd","Ib","fc","hc","Jb","Kb","Lb","Mb","Nb","Ob","Sb","Ub","Xb","$b","ac","bc","dc","ec","gc","jc","lc","nc","qc","rc","sc","tc","vc","wc","xc","yc","zc","Ac","Bc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Vd","Pd","Pc","Qc","Rc","Sc","_c","ad","Tc","Uc","Vc","$c","bd","cd","dd","ed","fd","gd","hd","pd","qd","rd","sd","td","Bd","Yd","Zd","Id","Jd","Ld","applyMemoryInitializer","doBrowserLoad","memoryInitializerBytes","useRequest","request","response","calledRun","runCaller","run","doRun","what","NUMBER","H3_ERROR","BOOLEAN","H3_LOWER","H3_UPPER","RESOLUTION","POINTER","BINDINGS","H3","def","Hooks","name","first","Plugins","jsep","plugins","plugin","Jsep","op_name","precedence","isRightAssociative","char","literal_name","literal_value","expr","obj","op_val","message","error","node","nodes","untilICode","ch_i","to_check","tc_len","biop","prec","biop_info","left","right","cur_biop","comparePrev","prev","argument","optional","number","chCode","startIndex","quote","closed","start","termination","separator_count","arg","hooks","stdClassProps","prop","CONDITIONAL_EXP","ternary","test","consequent","alternate","newTest","formatDecimal","formatDecimalParts","coefficient","exponent","formatGroup","grouping","thousands","width","length","formatNumerals","numerals","re","formatSpecifier","specifier","match","FormatSpecifier","formatTrim","i0","i1","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity","map","prefixes","formatLocale","locale","group","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","align","sign","symbol","zero","comma","precision","trim","prefix","suffix","formatType","maybeSuffix","format","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","defaultLocale","definition","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__defNormalProp","__commonJS","mod2","__copyProps","to","from","except","desc","__toESM","isNodeMode","target","__publicField","require_thenBy_module","exports","module","identity3","v2","ignoreCase","makeCompareFunction","opt","v1","uf","preprocess","cmp","descTokens","client","getClient","FilterType","FilterType2","ApiVersion","ApiVersion2","DEFAULT_API_BASE_URL","AggregationTypes","makeIntervalComplete","intervals","val","filterFunctions","filterIn","filterBetween","filterTime","filterClosedOpen","filterStringSearch","filterValues","featureValue","checkRange","range","lowerBound","upperBound","featureValueAsTimestamp","params","normalizedFeatureValue","normalize","stringRegExp","filterValue","stringRegExp2","escapeRegExp","regex","specialCharRegExp","normalizeRegExp","normalizedData","LOGICAL_OPERATOR_METHODS","passesFilter","columns","filters","feature2","filtersLogicalOperator","method","column","columnFilters","columnFilterTypes","filter","filterFunction","_buildFeatureFilter","featurePassesFilter","applyFilters","features","DEFAULT_CONFIG","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","clone2","configObject","div","convertBase","parseNumeric","P","BigNumber2","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","intCheck","round","maxOrMin","pow2_53","random53bitInt","dp","rand","sum3","toBaseOut","baseIn","baseOut","arrL","callerIsToString","rm","toFixedPoint","coeffToString","multiply","base","temp","xlo","xhi","carry","klo","khi","compare2","aL","bL","subtract","more","prod","prodL","rem","remL","rem0","xi","xL","yc0","yL","yz","bitFloor","c0","ne","toExponential","compare","normalise","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","p1","p2","ni","pows10","valueOf","half","isModExp","nIsBig","nIsNeg","nIsOdd","isOdd","xLTy","xe","ye","xcL","ycL","ylo","yhi","sqrtBase","rep","format2","g1","g2","groupSeparator","intPart","fractionPart","isNeg","intDigits","d0","d1","d2","exp","n0","n1","min2","max2","zs","BigNumber","bignumber_default","SplayTreeNode","SplayTreeSetNode","SplayTree","root","newTreeRight","newTreeLeft","current","comp","currentLeft","currentRight","nextLeft","nextRight","result","count","SplayTreeSet","_SplayTreeSet","isValidKey","element","elements","nodeRight","nodeLeft","retainSet","modificationCount","object","other","u4","set2","copyChildren","node2","newLeft","newRight","SplayTreeSetEntryIterableIterator","SplayTreeKeyIterableIterator","SplayTreeIterableIterator","tree","next","constant_default","compare_default","eps","almostEqual","orient_default","almostCollinear","area2","ax","ay","cx","cy","identity_default","snap_default","xTree","yTree","snapCoord","coord","snap","set","eps2","isInBbox","bbox2","point2","getBboxOverlap","b1","b2","lowerX","upperX","lowerY","upperY","crossProduct","dotProduct","sineOfAngle","pShared","pBase","pAngle","vBase","vAngle","cosineOfAngle","horizontalIntersection","pt","verticalIntersection","intersection","pt1","pt2","kross","ve","x1","x2","y1","y2","SweepEvent","_SweepEvent","isLeft","ptCmp","Segment2","aPt","bPt","otherEvents","iMax","evt","numEvents","evt1","evt2","events","baseEvent","cache","fillCache","linkedEvent","nextEvent","asine","acosine","bsine","bcosine","RingOut","_RingOut","allSegments","ringsOut","segment","prevEvent","event","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","jMax","intersectionLE","ringEvents","comparator","prevPt","points","nextPt2","nextPt","step","iStart","iEnd","orderedPoints","enclosing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","exteriorRing","ring","geom0","geom","ringGeom","MultiPolyOut","rings","polyGeom","polys","enclosingRing","SweepLine","queue","newEvents","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","nextMySplitter","nextInter","mySplitter","inter","seg","rightSE","Operation","moreGeoms","operation","multipolys","MultiPolyIn","subject","mpA","sweepEvents","sweepLine","operation_default","segmentId","_Segment","leftSE","windings","alx","blx","arx","brx","aly","bly","ary","bry","aCmpBLeft","bCmpARight","bCmpALeft","aCmpBRight","by","bx","leftPt","rightPt","winding","cmpPts","newRightSE","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","alreadyLinked","newLeftSE","oldRightSE","newSeg","tmpEvt","consumer","consumee","tmp","index","beforeState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","poly","mp","mpsBefore","noBefores","noAfters","least","most","diff","isJustSubject","mps","RingIn","geomRing","isExterior","firstPoint","prevPoint","PolyIn","geomPoly","multiPoly","ringSweepEvents","isSubject","polySweepEvents","_InvalidColumnError","_WidgetSource","props","WidgetSource","V3","FILTER_TYPES2","isFilterType","getApplicableFilters","owner","applicableFilters","isApplicable","OTHERS_CATEGORY_NAME","aggregationFunctions","values","applyAggregationFunction","min","max","sum2","avg","aggregate","keys","operation2","isPotentiallyValidNumber","aggregationFn","aggFn","normalizedKeys","normalizeKeys","filterFalsyElements","filterFn","joinOperation","import_thenby","applySorting","sortBy","sortByDirection","sortByColumnType","sortFn","createSortFn","firstSortOption","othersSortOptions","normalizeSortByOptions","sortOptions","numberFormat","sortByEl","groupValuesByColumn","valuesColumns","keysColumn","othersThreshold","orderBy","groups","accumulator","item","group2","aggregatedValue","targetOperation","allCategories","getSorter","otherValue","nameCompare","getUTCMonday","date","dateCp","day","GROUP_KEY_FN_MAPPING","groupValuesByDateColumn","groupType","groupKeyFn","acc","formattedValue","groupKey","groupedValues","histogram","ticks","binsContainer","tick","binContainer","bin","scatterPlot","xAxisColumns","xAxisJoinOperation","yAxisColumns","yAxisJoinOperation","xValue","xIsValid","yValue","yIsValid","__defProp2","__name","_GeojsonEquality","_a2","_b2","sameLength","g1s","explode","g2s","g1part","g2part","c1","c2","path1","path2","ind","isPoly","sameDirection","sourcePath","targetPath","correctPath","holes1","holes2","h1","h2","equal","GeojsonEquality","part","geojsonEquality","object1","object2","objKeys1","objKeys2","value1","value2","isObjects","isObject3","cartoStyleUrlTemplate","getStyleUrl","styleType","createResultArray","typeTemplate","length2","createBinopVec","scalarBinOp","createBinopVecNum","createBinopNumVec","createUnopVec","scalarUnop","mapDictValues","dict","fun","binopsNum","unopsNum","define_default","constructor","factory","prototype","extend","parent","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","rgbn","Rgb","rgba","hsla","rgbConvert","rgb","opacity","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","Hsl","hsl","m2","m1","hsl2rgb","clamph","clampt","hexToRGB","UNKNOWN_COLOR","d3Format","geojsonFeatures","geojson","uniqueIdProperty","properties","updatedProperties","feature","options","feat","point","coordinates","isNumber","lineString","featureCollection","multiLineString","getCoord","getGeom","coordEach","excludeWrapCoord","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","geomEach","featureProperties","featureBBox","featureId","flattenEach","bbox","coordinate","epsilon","splitter","resulterrbound","sum","elen","flen","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","C1","C2","orient2dadapt","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_i","_j","_0","s1","s0","t1","t0","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","pointInPolygon","polygon","ii","currentP","nextP","numContours","contour","contourLen","booleanPointInPolygon","inBBox","polyResult","pip","TinyQueue","defaultCompare","top","bottom","pos","halfLength","best","checkWhichEventIsLeft","e1","e2","checkWhichSegmentHasRightEndpointFirst","seg1","seg2","Event","ringId","eventId","eventToCheck","fillEventQueue","eventQueue","processFeature","featureOrGeometry","iii","Segment","testSegmentIntersect","x3","y3","x4","y4","denom","numeA","numeB","uA","uB","runCheck","ignoreSelfIntersections","intersectionPoints","outQueue","otherSeg","sweeplineIntersections","lib","lineIntersect","line1","line2","removeDuplicates","intersections","results","unique","polygonToLine","singlePolygonToLine","multiPolygonToLine","coordsToLine","lines","booleanDisjoint","feature1","bool","flatten1","flatten2","disjoint","geom1","geom2","compareCoords","isPointOnLine","isLineOnLine","isLineInPoly","isPolyInPoly","isPointOnLineSegment","lineString1","lineString2","coord1","coord2","lineSegmentStart","lineSegmentEnd","dxc","dyc","dxl","dyl","pair1","pair2","booleanIntersects","WidgetGeoJsonSourceImpl","spatialFilter","filterOwner","filteredFeatures","assertColumn","normalizeColumns","operationColumn","rawResult","xAxisColumn","yAxisColumn","searchFilterColumn","searchFilterText","sortDirection","offset","limit","row","rows","totalCount","srcRow","dstRow","stepSize","aggregations","usedAliases","alias","aliasKey","_bbox","_features","columnArgs","featureKeys","invalidColumns","source","requestId"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,29]}