diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 4a60207f..eea114ee 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -52,7 +52,7 @@ jobs: prefix = "rtichoke/_vendor/rtichoke_viz/" required = { f"{prefix}VENDORED_FROM", - f"{prefix}rtichoke-viz-0.20.1.tar.gz", + f"{prefix}rtichoke-viz-0.20.2.tar.gz", f"{prefix}rtichoke-viz.js", f"{prefix}rtichoke-viz.css", f"{prefix}rtichoke-viz.schema.json", @@ -60,6 +60,7 @@ jobs: f"{prefix}rtichoke-viz-report.schema.json", } assert required <= names + assert f"{prefix}rtichoke-viz-0.20.1.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.20.0.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.19.0.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.14.0.tar.gz" not in names diff --git a/src/rtichoke/_report_browser.py b/src/rtichoke/_report_browser.py index a4441022..2f7a05cd 100644 --- a/src/rtichoke/_report_browser.py +++ b/src/rtichoke/_report_browser.py @@ -3,11 +3,37 @@ from __future__ import annotations import json +import re from importlib.resources import files from pathlib import Path from typing import Any +def _resolve_render_report_symbol(viz_js: str) -> str: + """Resolve the local callable identifier exported as 'renderReport' from an ESM bundle.""" + export_pattern = re.compile(r"export\s*\{([^}]+)\}", re.DOTALL) + for match in export_pattern.finditer(viz_js): + clause = match.group(1) + for item in clause.split(","): + parts = item.strip().split() + if not parts: + continue + if len(parts) == 3 and parts[1] == "as" and parts[2] == "renderReport": + return parts[0] + if len(parts) == 1 and parts[0] == "renderReport": + return "renderReport" + + if re.search( + r"export\s+(?:async\s+)?function\s+renderReport\b|export\s+(?:const|let|var)\s+renderReport\b", + viz_js, + ): + return "renderReport" + + raise ValueError( + "Could not resolve 'renderReport' export in provided JavaScript bundle." + ) + + def _sanitize_nan_values(obj: Any) -> Any: """Recursively replace NaN and Inf float values with None for valid JSON serialization.""" if isinstance(obj, dict): @@ -40,6 +66,7 @@ def write_html(self, path: str | Path) -> Path: ) viz_js = vendor.joinpath("rtichoke-viz.js").read_text(encoding="utf-8") viz_css = vendor.joinpath("rtichoke-viz.css").read_text(encoding="utf-8") + render_fn = _resolve_render_report_symbol(viz_js) html = f""" @@ -58,10 +85,10 @@ def write_html(self, path: str | Path) -> Path: const spec = JSON.parse( document.querySelector("#rtichoke-report-spec").textContent ); - document.querySelector("#rtichoke-report").append(renderReport(spec, {{ + document.querySelector("#rtichoke-report").append({render_fn}(spec, {{ sectionGroupPresentation: "tabs", groupPresentation: "stacked" - }})); + }})); diff --git a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM index 22383d7d..075f5b99 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM +++ b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM @@ -1,5 +1,5 @@ repository=https://github.com/uriahf/rtichoke_viz -release=v0.20.1 -source_commit=56e097ab394f3499ef5cfe791e686248df8b39f2 -archive=rtichoke-viz-0.20.1.tar.gz -sha256=17aebfb05a479c3ea28855f6ca3f43cadde7b8b134a2080e309c630c63617629 +release=v0.20.2 +source_commit=40748bdeff7d535f516744886b64056f3aaa518d +archive=rtichoke-viz-0.20.2.tar.gz +sha256=2e4851159ceea0e3b2420c7e0aa22a566b94ec7057c27b13b7db7da88de34d11 diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.1.tar.gz b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.1.tar.gz deleted file mode 100644 index 87e56088..00000000 Binary files a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.1.tar.gz and /dev/null differ diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.2.tar.gz b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.2.tar.gz new file mode 100644 index 00000000..9abc58c8 Binary files /dev/null and b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.2.tar.gz differ diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js index e52b0167..aa17b8dc 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js @@ -1,24798 +1,61 @@ -var __defProp = Object.defineProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; - -// node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs -var value_exports = {}; -__export(value_exports, { - HasPropertyKey: () => HasPropertyKey, - IsArray: () => IsArray, - IsAsyncIterator: () => IsAsyncIterator, - IsBigInt: () => IsBigInt, - IsBoolean: () => IsBoolean, - IsDate: () => IsDate, - IsFunction: () => IsFunction, - IsIterator: () => IsIterator, - IsNull: () => IsNull, - IsNumber: () => IsNumber, - IsObject: () => IsObject, - IsRegExp: () => IsRegExp, - IsString: () => IsString, - IsSymbol: () => IsSymbol, - IsUint8Array: () => IsUint8Array, - IsUndefined: () => IsUndefined -}); -function HasPropertyKey(value, key) { - return key in value; -} -function IsAsyncIterator(value) { - return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value; -} -function IsArray(value) { - return Array.isArray(value); -} -function IsBigInt(value) { - return typeof value === "bigint"; -} -function IsBoolean(value) { - return typeof value === "boolean"; -} -function IsDate(value) { - return value instanceof globalThis.Date; -} -function IsFunction(value) { - return typeof value === "function"; -} -function IsIterator(value) { - return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value; -} -function IsNull(value) { - return value === null; -} -function IsNumber(value) { - return typeof value === "number"; -} -function IsObject(value) { - return typeof value === "object" && value !== null; -} -function IsRegExp(value) { - return value instanceof globalThis.RegExp; -} -function IsString(value) { - return typeof value === "string"; -} -function IsSymbol(value) { - return typeof value === "symbol"; -} -function IsUint8Array(value) { - return value instanceof globalThis.Uint8Array; -} -function IsUndefined(value) { - return value === void 0; -} - -// node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs -function ArrayType(value) { - return value.map((value2) => Visit(value2)); -} -function DateType(value) { - return new Date(value.getTime()); -} -function Uint8ArrayType(value) { - return new Uint8Array(value); -} -function RegExpType(value) { - return new RegExp(value.source, value.flags); -} -function ObjectType(value) { - const result = {}; - for (const key of Object.getOwnPropertyNames(value)) { - result[key] = Visit(value[key]); - } - for (const key of Object.getOwnPropertySymbols(value)) { - result[key] = Visit(value[key]); - } - return result; -} -function Visit(value) { - return IsArray(value) ? ArrayType(value) : IsDate(value) ? DateType(value) : IsUint8Array(value) ? Uint8ArrayType(value) : IsRegExp(value) ? RegExpType(value) : IsObject(value) ? ObjectType(value) : value; -} -function Clone(value) { - return Visit(value); -} - -// node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs -function CloneType(schema, options) { - return options === void 0 ? Clone(schema) : Clone({ ...options, ...schema }); -} - -// node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs -function IsAsyncIterator2(value) { - return IsObject2(value) && globalThis.Symbol.asyncIterator in value; -} -function IsIterator2(value) { - return IsObject2(value) && globalThis.Symbol.iterator in value; -} -function IsStandardObject(value) { - return IsObject2(value) && (globalThis.Object.getPrototypeOf(value) === Object.prototype || globalThis.Object.getPrototypeOf(value) === null); -} -function IsPromise(value) { - return value instanceof globalThis.Promise; -} -function IsDate2(value) { - return value instanceof Date && globalThis.Number.isFinite(value.getTime()); -} -function IsMap(value) { - return value instanceof globalThis.Map; -} -function IsSet(value) { - return value instanceof globalThis.Set; -} -function IsTypedArray(value) { - return globalThis.ArrayBuffer.isView(value); -} -function IsUint8Array2(value) { - return value instanceof globalThis.Uint8Array; -} -function HasPropertyKey2(value, key) { - return key in value; -} -function IsObject2(value) { - return value !== null && typeof value === "object"; -} -function IsArray2(value) { - return globalThis.Array.isArray(value) && !globalThis.ArrayBuffer.isView(value); -} -function IsUndefined2(value) { - return value === void 0; -} -function IsNull2(value) { - return value === null; -} -function IsBoolean2(value) { - return typeof value === "boolean"; -} -function IsNumber2(value) { - return typeof value === "number"; -} -function IsInteger(value) { - return globalThis.Number.isInteger(value); -} -function IsBigInt2(value) { - return typeof value === "bigint"; -} -function IsString2(value) { - return typeof value === "string"; -} -function IsFunction2(value) { - return typeof value === "function"; -} -function IsSymbol2(value) { - return typeof value === "symbol"; -} -function IsValueType(value) { - return IsBigInt2(value) || IsBoolean2(value) || IsNull2(value) || IsNumber2(value) || IsString2(value) || IsSymbol2(value) || IsUndefined2(value); -} - -// node_modules/@sinclair/typebox/build/esm/system/policy.mjs -var TypeSystemPolicy; -(function(TypeSystemPolicy2) { - TypeSystemPolicy2.InstanceMode = "default"; - TypeSystemPolicy2.ExactOptionalPropertyTypes = false; - TypeSystemPolicy2.AllowArrayObject = false; - TypeSystemPolicy2.AllowNaN = false; - TypeSystemPolicy2.AllowNullVoid = false; - function IsExactOptionalProperty(value, key) { - return TypeSystemPolicy2.ExactOptionalPropertyTypes ? key in value : value[key] !== void 0; - } - TypeSystemPolicy2.IsExactOptionalProperty = IsExactOptionalProperty; - function IsObjectLike(value) { - const isObject2 = IsObject2(value); - return TypeSystemPolicy2.AllowArrayObject ? isObject2 : isObject2 && !IsArray2(value); - } - TypeSystemPolicy2.IsObjectLike = IsObjectLike; - function IsRecordLike(value) { - return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array); - } - TypeSystemPolicy2.IsRecordLike = IsRecordLike; - function IsNumberLike(value) { - return TypeSystemPolicy2.AllowNaN ? IsNumber2(value) : Number.isFinite(value); - } - TypeSystemPolicy2.IsNumberLike = IsNumberLike; - function IsVoidLike(value) { - const isUndefined = IsUndefined2(value); - return TypeSystemPolicy2.AllowNullVoid ? isUndefined || value === null : isUndefined; - } - TypeSystemPolicy2.IsVoidLike = IsVoidLike; -})(TypeSystemPolicy || (TypeSystemPolicy = {})); - -// node_modules/@sinclair/typebox/build/esm/type/create/immutable.mjs -function ImmutableArray(value) { - return globalThis.Object.freeze(value).map((value2) => Immutable(value2)); -} -function ImmutableDate(value) { - return value; -} -function ImmutableUint8Array(value) { - return value; -} -function ImmutableRegExp(value) { - return value; -} -function ImmutableObject(value) { - const result = {}; - for (const key of Object.getOwnPropertyNames(value)) { - result[key] = Immutable(value[key]); - } - for (const key of Object.getOwnPropertySymbols(value)) { - result[key] = Immutable(value[key]); - } - return globalThis.Object.freeze(result); -} -function Immutable(value) { - return IsArray(value) ? ImmutableArray(value) : IsDate(value) ? ImmutableDate(value) : IsUint8Array(value) ? ImmutableUint8Array(value) : IsRegExp(value) ? ImmutableRegExp(value) : IsObject(value) ? ImmutableObject(value) : value; -} - -// node_modules/@sinclair/typebox/build/esm/type/create/type.mjs -function CreateType(schema, options) { - const result = options !== void 0 ? { ...options, ...schema } : schema; - switch (TypeSystemPolicy.InstanceMode) { - case "freeze": - return Immutable(result); - case "clone": - return Clone(result); - default: - return result; - } -} - -// node_modules/@sinclair/typebox/build/esm/type/error/error.mjs -var TypeBoxError = class extends Error { - constructor(message) { - super(message); - } -}; - -// node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs -var TransformKind = Symbol.for("TypeBox.Transform"); -var ReadonlyKind = Symbol.for("TypeBox.Readonly"); -var OptionalKind = Symbol.for("TypeBox.Optional"); -var Hint = Symbol.for("TypeBox.Hint"); -var Kind = Symbol.for("TypeBox.Kind"); - -// node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs -function IsReadonly(value) { - return IsObject(value) && value[ReadonlyKind] === "Readonly"; -} -function IsOptional(value) { - return IsObject(value) && value[OptionalKind] === "Optional"; -} -function IsAny(value) { - return IsKindOf(value, "Any"); -} -function IsArgument(value) { - return IsKindOf(value, "Argument"); -} -function IsArray3(value) { - return IsKindOf(value, "Array"); -} -function IsAsyncIterator3(value) { - return IsKindOf(value, "AsyncIterator"); -} -function IsBigInt3(value) { - return IsKindOf(value, "BigInt"); -} -function IsBoolean3(value) { - return IsKindOf(value, "Boolean"); -} -function IsComputed(value) { - return IsKindOf(value, "Computed"); -} -function IsConstructor(value) { - return IsKindOf(value, "Constructor"); -} -function IsDate3(value) { - return IsKindOf(value, "Date"); -} -function IsFunction3(value) { - return IsKindOf(value, "Function"); -} -function IsInteger2(value) { - return IsKindOf(value, "Integer"); -} -function IsIntersect(value) { - return IsKindOf(value, "Intersect"); -} -function IsIterator3(value) { - return IsKindOf(value, "Iterator"); -} -function IsKindOf(value, kind) { - return IsObject(value) && Kind in value && value[Kind] === kind; -} -function IsLiteralValue(value) { - return IsBoolean(value) || IsNumber(value) || IsString(value); -} -function IsLiteral(value) { - return IsKindOf(value, "Literal"); -} -function IsMappedKey(value) { - return IsKindOf(value, "MappedKey"); -} -function IsMappedResult(value) { - return IsKindOf(value, "MappedResult"); -} -function IsNever(value) { - return IsKindOf(value, "Never"); -} -function IsNot(value) { - return IsKindOf(value, "Not"); -} -function IsNull3(value) { - return IsKindOf(value, "Null"); -} -function IsNumber3(value) { - return IsKindOf(value, "Number"); -} -function IsObject3(value) { - return IsKindOf(value, "Object"); -} -function IsPromise2(value) { - return IsKindOf(value, "Promise"); -} -function IsRecord(value) { - return IsKindOf(value, "Record"); -} -function IsRef(value) { - return IsKindOf(value, "Ref"); -} -function IsRegExp2(value) { - return IsKindOf(value, "RegExp"); -} -function IsString3(value) { - return IsKindOf(value, "String"); -} -function IsSymbol3(value) { - return IsKindOf(value, "Symbol"); -} -function IsTemplateLiteral(value) { - return IsKindOf(value, "TemplateLiteral"); -} -function IsThis(value) { - return IsKindOf(value, "This"); -} -function IsTransform(value) { - return IsObject(value) && TransformKind in value; -} -function IsTuple(value) { - return IsKindOf(value, "Tuple"); -} -function IsUndefined3(value) { - return IsKindOf(value, "Undefined"); -} -function IsUnion(value) { - return IsKindOf(value, "Union"); -} -function IsUint8Array3(value) { - return IsKindOf(value, "Uint8Array"); -} -function IsUnknown(value) { - return IsKindOf(value, "Unknown"); -} -function IsUnsafe(value) { - return IsKindOf(value, "Unsafe"); -} -function IsVoid(value) { - return IsKindOf(value, "Void"); -} -function IsKind(value) { - return IsObject(value) && Kind in value && IsString(value[Kind]); -} -function IsSchema(value) { - return IsAny(value) || IsArgument(value) || IsArray3(value) || IsBoolean3(value) || IsBigInt3(value) || IsAsyncIterator3(value) || IsComputed(value) || IsConstructor(value) || IsDate3(value) || IsFunction3(value) || IsInteger2(value) || IsIntersect(value) || IsIterator3(value) || IsLiteral(value) || IsMappedKey(value) || IsMappedResult(value) || IsNever(value) || IsNot(value) || IsNull3(value) || IsNumber3(value) || IsObject3(value) || IsPromise2(value) || IsRecord(value) || IsRef(value) || IsRegExp2(value) || IsString3(value) || IsSymbol3(value) || IsTemplateLiteral(value) || IsThis(value) || IsTuple(value) || IsUndefined3(value) || IsUnion(value) || IsUint8Array3(value) || IsUnknown(value) || IsUnsafe(value) || IsVoid(value) || IsKind(value); -} - -// node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs -var type_exports = {}; -__export(type_exports, { - IsAny: () => IsAny2, - IsArgument: () => IsArgument2, - IsArray: () => IsArray4, - IsAsyncIterator: () => IsAsyncIterator4, - IsBigInt: () => IsBigInt4, - IsBoolean: () => IsBoolean4, - IsComputed: () => IsComputed2, - IsConstructor: () => IsConstructor2, - IsDate: () => IsDate4, - IsFunction: () => IsFunction4, - IsImport: () => IsImport, - IsInteger: () => IsInteger3, - IsIntersect: () => IsIntersect2, - IsIterator: () => IsIterator4, - IsKind: () => IsKind2, - IsKindOf: () => IsKindOf2, - IsLiteral: () => IsLiteral2, - IsLiteralBoolean: () => IsLiteralBoolean, - IsLiteralNumber: () => IsLiteralNumber, - IsLiteralString: () => IsLiteralString, - IsLiteralValue: () => IsLiteralValue2, - IsMappedKey: () => IsMappedKey2, - IsMappedResult: () => IsMappedResult2, - IsNever: () => IsNever2, - IsNot: () => IsNot2, - IsNull: () => IsNull4, - IsNumber: () => IsNumber4, - IsObject: () => IsObject4, - IsOptional: () => IsOptional2, - IsPromise: () => IsPromise3, - IsProperties: () => IsProperties, - IsReadonly: () => IsReadonly2, - IsRecord: () => IsRecord2, - IsRecursive: () => IsRecursive, - IsRef: () => IsRef2, - IsRegExp: () => IsRegExp3, - IsSchema: () => IsSchema2, - IsString: () => IsString4, - IsSymbol: () => IsSymbol4, - IsTemplateLiteral: () => IsTemplateLiteral2, - IsThis: () => IsThis2, - IsTransform: () => IsTransform2, - IsTuple: () => IsTuple2, - IsUint8Array: () => IsUint8Array4, - IsUndefined: () => IsUndefined4, - IsUnion: () => IsUnion2, - IsUnionLiteral: () => IsUnionLiteral, - IsUnknown: () => IsUnknown2, - IsUnsafe: () => IsUnsafe2, - IsVoid: () => IsVoid2, - TypeGuardUnknownTypeError: () => TypeGuardUnknownTypeError -}); -var TypeGuardUnknownTypeError = class extends TypeBoxError { -}; -var KnownTypes = [ - "Argument", - "Any", - "Array", - "AsyncIterator", - "BigInt", - "Boolean", - "Computed", - "Constructor", - "Date", - "Enum", - "Function", - "Integer", - "Intersect", - "Iterator", - "Literal", - "MappedKey", - "MappedResult", - "Not", - "Null", - "Number", - "Object", - "Promise", - "Record", - "Ref", - "RegExp", - "String", - "Symbol", - "TemplateLiteral", - "This", - "Tuple", - "Undefined", - "Union", - "Uint8Array", - "Unknown", - "Void" -]; -function IsPattern(value) { - try { - new RegExp(value); - return true; - } catch { - return false; - } -} -function IsControlCharacterFree(value) { - if (!IsString(value)) - return false; - for (let i = 0; i < value.length; i++) { - const code = value.charCodeAt(i); - if (code >= 7 && code <= 13 || code === 27 || code === 127) { - return false; - } - } - return true; -} -function IsAdditionalProperties(value) { - return IsOptionalBoolean(value) || IsSchema2(value); -} -function IsOptionalBigInt(value) { - return IsUndefined(value) || IsBigInt(value); -} -function IsOptionalNumber(value) { - return IsUndefined(value) || IsNumber(value); -} -function IsOptionalBoolean(value) { - return IsUndefined(value) || IsBoolean(value); -} -function IsOptionalString(value) { - return IsUndefined(value) || IsString(value); -} -function IsOptionalPattern(value) { - return IsUndefined(value) || IsString(value) && IsControlCharacterFree(value) && IsPattern(value); -} -function IsOptionalFormat(value) { - return IsUndefined(value) || IsString(value) && IsControlCharacterFree(value); -} -function IsOptionalSchema(value) { - return IsUndefined(value) || IsSchema2(value); -} -function IsReadonly2(value) { - return IsObject(value) && value[ReadonlyKind] === "Readonly"; -} -function IsOptional2(value) { - return IsObject(value) && value[OptionalKind] === "Optional"; -} -function IsAny2(value) { - return IsKindOf2(value, "Any") && IsOptionalString(value.$id); -} -function IsArgument2(value) { - return IsKindOf2(value, "Argument") && IsNumber(value.index); -} -function IsArray4(value) { - return IsKindOf2(value, "Array") && value.type === "array" && IsOptionalString(value.$id) && IsSchema2(value.items) && IsOptionalNumber(value.minItems) && IsOptionalNumber(value.maxItems) && IsOptionalBoolean(value.uniqueItems) && IsOptionalSchema(value.contains) && IsOptionalNumber(value.minContains) && IsOptionalNumber(value.maxContains); -} -function IsAsyncIterator4(value) { - return IsKindOf2(value, "AsyncIterator") && value.type === "AsyncIterator" && IsOptionalString(value.$id) && IsSchema2(value.items); -} -function IsBigInt4(value) { - return IsKindOf2(value, "BigInt") && value.type === "bigint" && IsOptionalString(value.$id) && IsOptionalBigInt(value.exclusiveMaximum) && IsOptionalBigInt(value.exclusiveMinimum) && IsOptionalBigInt(value.maximum) && IsOptionalBigInt(value.minimum) && IsOptionalBigInt(value.multipleOf); -} -function IsBoolean4(value) { - return IsKindOf2(value, "Boolean") && value.type === "boolean" && IsOptionalString(value.$id); -} -function IsComputed2(value) { - return IsKindOf2(value, "Computed") && IsString(value.target) && IsArray(value.parameters) && value.parameters.every((schema) => IsSchema2(schema)); -} -function IsConstructor2(value) { - return IsKindOf2(value, "Constructor") && value.type === "Constructor" && IsOptionalString(value.$id) && IsArray(value.parameters) && value.parameters.every((schema) => IsSchema2(schema)) && IsSchema2(value.returns); -} -function IsDate4(value) { - return IsKindOf2(value, "Date") && value.type === "Date" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximumTimestamp) && IsOptionalNumber(value.exclusiveMinimumTimestamp) && IsOptionalNumber(value.maximumTimestamp) && IsOptionalNumber(value.minimumTimestamp) && IsOptionalNumber(value.multipleOfTimestamp); -} -function IsFunction4(value) { - return IsKindOf2(value, "Function") && value.type === "Function" && IsOptionalString(value.$id) && IsArray(value.parameters) && value.parameters.every((schema) => IsSchema2(schema)) && IsSchema2(value.returns); -} -function IsImport(value) { - return IsKindOf2(value, "Import") && HasPropertyKey(value, "$defs") && IsObject(value.$defs) && IsProperties(value.$defs) && HasPropertyKey(value, "$ref") && IsString(value.$ref) && value.$ref in value.$defs; -} -function IsInteger3(value) { - return IsKindOf2(value, "Integer") && value.type === "integer" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximum) && IsOptionalNumber(value.exclusiveMinimum) && IsOptionalNumber(value.maximum) && IsOptionalNumber(value.minimum) && IsOptionalNumber(value.multipleOf); -} -function IsProperties(value) { - return IsObject(value) && Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema2(schema)); -} -function IsIntersect2(value) { - return IsKindOf2(value, "Intersect") && (IsString(value.type) && value.type !== "object" ? false : true) && IsArray(value.allOf) && value.allOf.every((schema) => IsSchema2(schema) && !IsTransform2(schema)) && IsOptionalString(value.type) && (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) && IsOptionalString(value.$id); -} -function IsIterator4(value) { - return IsKindOf2(value, "Iterator") && value.type === "Iterator" && IsOptionalString(value.$id) && IsSchema2(value.items); -} -function IsKindOf2(value, kind) { - return IsObject(value) && Kind in value && value[Kind] === kind; -} -function IsLiteralString(value) { - return IsLiteral2(value) && IsString(value.const); -} -function IsLiteralNumber(value) { - return IsLiteral2(value) && IsNumber(value.const); -} -function IsLiteralBoolean(value) { - return IsLiteral2(value) && IsBoolean(value.const); -} -function IsLiteral2(value) { - return IsKindOf2(value, "Literal") && IsOptionalString(value.$id) && IsLiteralValue2(value.const); -} -function IsLiteralValue2(value) { - return IsBoolean(value) || IsNumber(value) || IsString(value); -} -function IsMappedKey2(value) { - return IsKindOf2(value, "MappedKey") && IsArray(value.keys) && value.keys.every((key) => IsNumber(key) || IsString(key)); -} -function IsMappedResult2(value) { - return IsKindOf2(value, "MappedResult") && IsProperties(value.properties); -} -function IsNever2(value) { - return IsKindOf2(value, "Never") && IsObject(value.not) && Object.getOwnPropertyNames(value.not).length === 0; -} -function IsNot2(value) { - return IsKindOf2(value, "Not") && IsSchema2(value.not); -} -function IsNull4(value) { - return IsKindOf2(value, "Null") && value.type === "null" && IsOptionalString(value.$id); -} -function IsNumber4(value) { - return IsKindOf2(value, "Number") && value.type === "number" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximum) && IsOptionalNumber(value.exclusiveMinimum) && IsOptionalNumber(value.maximum) && IsOptionalNumber(value.minimum) && IsOptionalNumber(value.multipleOf); -} -function IsObject4(value) { - return IsKindOf2(value, "Object") && value.type === "object" && IsOptionalString(value.$id) && IsProperties(value.properties) && IsAdditionalProperties(value.additionalProperties) && IsOptionalNumber(value.minProperties) && IsOptionalNumber(value.maxProperties); -} -function IsPromise3(value) { - return IsKindOf2(value, "Promise") && value.type === "Promise" && IsOptionalString(value.$id) && IsSchema2(value.item); -} -function IsRecord2(value) { - return IsKindOf2(value, "Record") && value.type === "object" && IsOptionalString(value.$id) && IsAdditionalProperties(value.additionalProperties) && IsObject(value.patternProperties) && ((schema) => { - const keys = Object.getOwnPropertyNames(schema.patternProperties); - return keys.length === 1 && IsPattern(keys[0]) && IsObject(schema.patternProperties) && IsSchema2(schema.patternProperties[keys[0]]); - })(value); -} -function IsRecursive(value) { - return IsObject(value) && Hint in value && value[Hint] === "Recursive"; -} -function IsRef2(value) { - return IsKindOf2(value, "Ref") && IsOptionalString(value.$id) && IsString(value.$ref); -} -function IsRegExp3(value) { - return IsKindOf2(value, "RegExp") && IsOptionalString(value.$id) && IsString(value.source) && IsString(value.flags) && IsOptionalNumber(value.maxLength) && IsOptionalNumber(value.minLength); -} -function IsString4(value) { - return IsKindOf2(value, "String") && value.type === "string" && IsOptionalString(value.$id) && IsOptionalNumber(value.minLength) && IsOptionalNumber(value.maxLength) && IsOptionalPattern(value.pattern) && IsOptionalFormat(value.format); -} -function IsSymbol4(value) { - return IsKindOf2(value, "Symbol") && value.type === "symbol" && IsOptionalString(value.$id); -} -function IsTemplateLiteral2(value) { - return IsKindOf2(value, "TemplateLiteral") && value.type === "string" && IsString(value.pattern) && value.pattern[0] === "^" && value.pattern[value.pattern.length - 1] === "$"; -} -function IsThis2(value) { - return IsKindOf2(value, "This") && IsOptionalString(value.$id) && IsString(value.$ref); -} -function IsTransform2(value) { - return IsObject(value) && TransformKind in value; -} -function IsTuple2(value) { - return IsKindOf2(value, "Tuple") && value.type === "array" && IsOptionalString(value.$id) && IsNumber(value.minItems) && IsNumber(value.maxItems) && value.minItems === value.maxItems && // empty - (IsUndefined(value.items) && IsUndefined(value.additionalItems) && value.minItems === 0 || IsArray(value.items) && value.items.every((schema) => IsSchema2(schema))); -} -function IsUndefined4(value) { - return IsKindOf2(value, "Undefined") && value.type === "undefined" && IsOptionalString(value.$id); -} -function IsUnionLiteral(value) { - return IsUnion2(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema)); -} -function IsUnion2(value) { - return IsKindOf2(value, "Union") && IsOptionalString(value.$id) && IsObject(value) && IsArray(value.anyOf) && value.anyOf.every((schema) => IsSchema2(schema)); -} -function IsUint8Array4(value) { - return IsKindOf2(value, "Uint8Array") && value.type === "Uint8Array" && IsOptionalString(value.$id) && IsOptionalNumber(value.minByteLength) && IsOptionalNumber(value.maxByteLength); -} -function IsUnknown2(value) { - return IsKindOf2(value, "Unknown") && IsOptionalString(value.$id); -} -function IsUnsafe2(value) { - return IsKindOf2(value, "Unsafe"); -} -function IsVoid2(value) { - return IsKindOf2(value, "Void") && value.type === "void" && IsOptionalString(value.$id); -} -function IsKind2(value) { - return IsObject(value) && Kind in value && IsString(value[Kind]) && !KnownTypes.includes(value[Kind]); -} -function IsSchema2(value) { - return IsObject(value) && (IsAny2(value) || IsArgument2(value) || IsArray4(value) || IsBoolean4(value) || IsBigInt4(value) || IsAsyncIterator4(value) || IsComputed2(value) || IsConstructor2(value) || IsDate4(value) || IsFunction4(value) || IsInteger3(value) || IsIntersect2(value) || IsIterator4(value) || IsLiteral2(value) || IsMappedKey2(value) || IsMappedResult2(value) || IsNever2(value) || IsNot2(value) || IsNull4(value) || IsNumber4(value) || IsObject4(value) || IsPromise3(value) || IsRecord2(value) || IsRef2(value) || IsRegExp3(value) || IsString4(value) || IsSymbol4(value) || IsTemplateLiteral2(value) || IsThis2(value) || IsTuple2(value) || IsUndefined4(value) || IsUnion2(value) || IsUint8Array4(value) || IsUnknown2(value) || IsUnsafe2(value) || IsVoid2(value) || IsKind2(value)); -} - -// node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs -var PatternBoolean = "(true|false)"; -var PatternNumber = "(0|[1-9][0-9]*)"; -var PatternString = "(.*)"; -var PatternNever = "(?!.*)"; -var PatternBooleanExact = `^${PatternBoolean}$`; -var PatternNumberExact = `^${PatternNumber}$`; -var PatternStringExact = `^${PatternString}$`; -var PatternNeverExact = `^${PatternNever}$`; - -// node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs -var format_exports = {}; -__export(format_exports, { - Clear: () => Clear, - Delete: () => Delete, - Entries: () => Entries, - Get: () => Get, - Has: () => Has, - Set: () => Set2 -}); -var map = /* @__PURE__ */ new Map(); -function Entries() { - return new Map(map); -} -function Clear() { - return map.clear(); -} -function Delete(format3) { - return map.delete(format3); -} -function Has(format3) { - return map.has(format3); -} -function Set2(format3, func) { - map.set(format3, func); -} -function Get(format3) { - return map.get(format3); -} - -// node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs -var type_exports2 = {}; -__export(type_exports2, { - Clear: () => Clear2, - Delete: () => Delete2, - Entries: () => Entries2, - Get: () => Get2, - Has: () => Has2, - Set: () => Set3 -}); -var map2 = /* @__PURE__ */ new Map(); -function Entries2() { - return new Map(map2); -} -function Clear2() { - return map2.clear(); -} -function Delete2(kind) { - return map2.delete(kind); -} -function Has2(kind) { - return map2.has(kind); -} -function Set3(kind, func) { - map2.set(kind, func); -} -function Get2(kind) { - return map2.get(kind); -} - -// node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs -function SetIncludes(T, S) { - return T.includes(S); -} -function SetDistinct(T) { - return [...new Set(T)]; -} -function SetIntersect(T, S) { - return T.filter((L) => S.includes(L)); -} -function SetIntersectManyResolve(T, Init) { - return T.reduce((Acc, L) => { - return SetIntersect(Acc, L); - }, Init); -} -function SetIntersectMany(T) { - return T.length === 1 ? T[0] : T.length > 1 ? SetIntersectManyResolve(T.slice(1), T[0]) : []; -} -function SetUnionMany(T) { - const Acc = []; - for (const L of T) - Acc.push(...L); - return Acc; -} - -// node_modules/@sinclair/typebox/build/esm/type/any/any.mjs -function Any(options) { - return CreateType({ [Kind]: "Any" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/array/array.mjs -function Array2(items, options) { - return CreateType({ [Kind]: "Array", type: "array", items }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/argument/argument.mjs -function Argument(index2) { - return CreateType({ [Kind]: "Argument", index: index2 }); -} - -// node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs -function AsyncIterator(items, options) { - return CreateType({ [Kind]: "AsyncIterator", type: "AsyncIterator", items }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/computed/computed.mjs -function Computed(target, parameters, options) { - return CreateType({ [Kind]: "Computed", target, parameters }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs -function DiscardKey(value, key) { - const { [key]: _, ...rest } = value; - return rest; -} -function Discard(value, keys) { - return keys.reduce((acc, key) => DiscardKey(acc, key), value); -} - -// node_modules/@sinclair/typebox/build/esm/type/never/never.mjs -function Never(options) { - return CreateType({ [Kind]: "Never", not: {} }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs -function MappedResult(properties) { - return CreateType({ - [Kind]: "MappedResult", - properties - }); -} - -// node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs -function Constructor(parameters, returns, options) { - return CreateType({ [Kind]: "Constructor", type: "Constructor", parameters, returns }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/function/function.mjs -function Function(parameters, returns, options) { - return CreateType({ [Kind]: "Function", type: "Function", parameters, returns }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs -function UnionCreate(T, options) { - return CreateType({ [Kind]: "Union", anyOf: T }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs -function IsUnionOptional(types) { - return types.some((type2) => IsOptional(type2)); -} -function RemoveOptionalFromRest(types) { - return types.map((left2) => IsOptional(left2) ? RemoveOptionalFromType(left2) : left2); -} -function RemoveOptionalFromType(T) { - return Discard(T, [OptionalKind]); -} -function ResolveUnion(types, options) { - const isOptional = IsUnionOptional(types); - return isOptional ? Optional(UnionCreate(RemoveOptionalFromRest(types), options)) : UnionCreate(RemoveOptionalFromRest(types), options); -} -function UnionEvaluated(T, options) { - return T.length === 1 ? CreateType(T[0], options) : T.length === 0 ? Never(options) : ResolveUnion(T, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/union/union.mjs -function Union(types, options) { - return types.length === 0 ? Never(options) : types.length === 1 ? CreateType(types[0], options) : UnionCreate(types, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs -var TemplateLiteralParserError = class extends TypeBoxError { -}; -function Unescape(pattern) { - return pattern.replace(/\\\$/g, "$").replace(/\\\*/g, "*").replace(/\\\^/g, "^").replace(/\\\|/g, "|").replace(/\\\(/g, "(").replace(/\\\)/g, ")"); -} -function IsNonEscaped(pattern, index2, char) { - return pattern[index2] === char && pattern.charCodeAt(index2 - 1) !== 92; -} -function IsOpenParen(pattern, index2) { - return IsNonEscaped(pattern, index2, "("); -} -function IsCloseParen(pattern, index2) { - return IsNonEscaped(pattern, index2, ")"); -} -function IsSeparator(pattern, index2) { - return IsNonEscaped(pattern, index2, "|"); -} -function IsGroup(pattern) { - if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1))) - return false; - let count = 0; - for (let index2 = 0; index2 < pattern.length; index2++) { - if (IsOpenParen(pattern, index2)) - count += 1; - if (IsCloseParen(pattern, index2)) - count -= 1; - if (count === 0 && index2 !== pattern.length - 1) - return false; - } - return true; -} -function InGroup(pattern) { - return pattern.slice(1, pattern.length - 1); -} -function IsPrecedenceOr(pattern) { - let count = 0; - for (let index2 = 0; index2 < pattern.length; index2++) { - if (IsOpenParen(pattern, index2)) - count += 1; - if (IsCloseParen(pattern, index2)) - count -= 1; - if (IsSeparator(pattern, index2) && count === 0) - return true; - } - return false; -} -function IsPrecedenceAnd(pattern) { - for (let index2 = 0; index2 < pattern.length; index2++) { - if (IsOpenParen(pattern, index2)) - return true; - } - return false; -} -function Or(pattern) { - let [count, start2] = [0, 0]; - const expressions = []; - for (let index2 = 0; index2 < pattern.length; index2++) { - if (IsOpenParen(pattern, index2)) - count += 1; - if (IsCloseParen(pattern, index2)) - count -= 1; - if (IsSeparator(pattern, index2) && count === 0) { - const range4 = pattern.slice(start2, index2); - if (range4.length > 0) - expressions.push(TemplateLiteralParse(range4)); - start2 = index2 + 1; - } - } - const range3 = pattern.slice(start2); - if (range3.length > 0) - expressions.push(TemplateLiteralParse(range3)); - if (expressions.length === 0) - return { type: "const", const: "" }; - if (expressions.length === 1) - return expressions[0]; - return { type: "or", expr: expressions }; -} -function And(pattern) { - function Group(value, index2) { - if (!IsOpenParen(value, index2)) - throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`); - let count = 0; - for (let scan = index2; scan < value.length; scan++) { - if (IsOpenParen(value, scan)) - count += 1; - if (IsCloseParen(value, scan)) - count -= 1; - if (count === 0) - return [index2, scan]; - } - throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`); - } - function Range(pattern2, index2) { - for (let scan = index2; scan < pattern2.length; scan++) { - if (IsOpenParen(pattern2, scan)) - return [index2, scan]; - } - return [index2, pattern2.length]; - } - const expressions = []; - for (let index2 = 0; index2 < pattern.length; index2++) { - if (IsOpenParen(pattern, index2)) { - const [start2, end] = Group(pattern, index2); - const range3 = pattern.slice(start2, end + 1); - expressions.push(TemplateLiteralParse(range3)); - index2 = end; - } else { - const [start2, end] = Range(pattern, index2); - const range3 = pattern.slice(start2, end); - if (range3.length > 0) - expressions.push(TemplateLiteralParse(range3)); - index2 = end - 1; - } - } - return expressions.length === 0 ? { type: "const", const: "" } : expressions.length === 1 ? expressions[0] : { type: "and", expr: expressions }; -} -function TemplateLiteralParse(pattern) { - return IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) : IsPrecedenceOr(pattern) ? Or(pattern) : IsPrecedenceAnd(pattern) ? And(pattern) : { type: "const", const: Unescape(pattern) }; -} -function TemplateLiteralParseExact(pattern) { - return TemplateLiteralParse(pattern.slice(1, pattern.length - 1)); -} - -// node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs -var TemplateLiteralFiniteError = class extends TypeBoxError { -}; -function IsNumberExpression(expression) { - return expression.type === "or" && expression.expr.length === 2 && expression.expr[0].type === "const" && expression.expr[0].const === "0" && expression.expr[1].type === "const" && expression.expr[1].const === "[1-9][0-9]*"; -} -function IsBooleanExpression(expression) { - return expression.type === "or" && expression.expr.length === 2 && expression.expr[0].type === "const" && expression.expr[0].const === "true" && expression.expr[1].type === "const" && expression.expr[1].const === "false"; -} -function IsStringExpression(expression) { - return expression.type === "const" && expression.const === ".*"; -} -function IsTemplateLiteralExpressionFinite(expression) { - return IsNumberExpression(expression) || IsStringExpression(expression) ? false : IsBooleanExpression(expression) ? true : expression.type === "and" ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) : expression.type === "or" ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) : expression.type === "const" ? true : (() => { - throw new TemplateLiteralFiniteError(`Unknown expression type`); - })(); -} -function IsTemplateLiteralFinite(schema) { - const expression = TemplateLiteralParseExact(schema.pattern); - return IsTemplateLiteralExpressionFinite(expression); -} - -// node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs -var TemplateLiteralGenerateError = class extends TypeBoxError { -}; -function* GenerateReduce(buffer) { - if (buffer.length === 1) - return yield* buffer[0]; - for (const left2 of buffer[0]) { - for (const right2 of GenerateReduce(buffer.slice(1))) { - yield `${left2}${right2}`; - } - } -} -function* GenerateAnd(expression) { - return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)])); -} -function* GenerateOr(expression) { - for (const expr of expression.expr) - yield* TemplateLiteralExpressionGenerate(expr); -} -function* GenerateConst(expression) { - return yield expression.const; -} -function* TemplateLiteralExpressionGenerate(expression) { - return expression.type === "and" ? yield* GenerateAnd(expression) : expression.type === "or" ? yield* GenerateOr(expression) : expression.type === "const" ? yield* GenerateConst(expression) : (() => { - throw new TemplateLiteralGenerateError("Unknown expression"); - })(); -} -function TemplateLiteralGenerate(schema) { - const expression = TemplateLiteralParseExact(schema.pattern); - return IsTemplateLiteralExpressionFinite(expression) ? [...TemplateLiteralExpressionGenerate(expression)] : []; -} - -// node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs -function Literal(value, options) { - return CreateType({ - [Kind]: "Literal", - const: value, - type: typeof value - }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs -function Boolean2(options) { - return CreateType({ [Kind]: "Boolean", type: "boolean" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs -function BigInt2(options) { - return CreateType({ [Kind]: "BigInt", type: "bigint" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/number/number.mjs -function Number2(options) { - return CreateType({ [Kind]: "Number", type: "number" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/string/string.mjs -function String2(options) { - return CreateType({ [Kind]: "String", type: "string" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs -function* FromUnion(syntax) { - const trim = syntax.trim().replace(/"|'/g, ""); - return trim === "boolean" ? yield Boolean2() : trim === "number" ? yield Number2() : trim === "bigint" ? yield BigInt2() : trim === "string" ? yield String2() : yield (() => { - const literals = trim.split("|").map((literal) => Literal(literal.trim())); - return literals.length === 0 ? Never() : literals.length === 1 ? literals[0] : UnionEvaluated(literals); - })(); -} -function* FromTerminal(syntax) { - if (syntax[1] !== "{") { - const L = Literal("$"); - const R = FromSyntax(syntax.slice(1)); - return yield* [L, ...R]; - } - for (let i = 2; i < syntax.length; i++) { - if (syntax[i] === "}") { - const L = FromUnion(syntax.slice(2, i)); - const R = FromSyntax(syntax.slice(i + 1)); - return yield* [...L, ...R]; - } - } - yield Literal(syntax); -} -function* FromSyntax(syntax) { - for (let i = 0; i < syntax.length; i++) { - if (syntax[i] === "$") { - const L = Literal(syntax.slice(0, i)); - const R = FromTerminal(syntax.slice(i)); - return yield* [L, ...R]; - } - } - yield Literal(syntax); -} -function TemplateLiteralSyntax(syntax) { - return [...FromSyntax(syntax)]; -} - -// node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs -var TemplateLiteralPatternError = class extends TypeBoxError { -}; -function Escape(value) { - return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); -} -function Visit2(schema, acc) { - return IsTemplateLiteral(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) : IsUnion(schema) ? `(${schema.anyOf.map((schema2) => Visit2(schema2, acc)).join("|")})` : IsNumber3(schema) ? `${acc}${PatternNumber}` : IsInteger2(schema) ? `${acc}${PatternNumber}` : IsBigInt3(schema) ? `${acc}${PatternNumber}` : IsString3(schema) ? `${acc}${PatternString}` : IsLiteral(schema) ? `${acc}${Escape(schema.const.toString())}` : IsBoolean3(schema) ? `${acc}${PatternBoolean}` : (() => { - throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[Kind]}'`); - })(); -} -function TemplateLiteralPattern(kinds) { - return `^${kinds.map((schema) => Visit2(schema, "")).join("")}$`; -} - -// node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs -function TemplateLiteralToUnion(schema) { - const R = TemplateLiteralGenerate(schema); - const L = R.map((S) => Literal(S)); - return UnionEvaluated(L); -} - -// node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs -function TemplateLiteral(unresolved, options) { - const pattern = IsString(unresolved) ? TemplateLiteralPattern(TemplateLiteralSyntax(unresolved)) : TemplateLiteralPattern(unresolved); - return CreateType({ [Kind]: "TemplateLiteral", type: "string", pattern }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs -function FromTemplateLiteral(templateLiteral) { - const keys = TemplateLiteralGenerate(templateLiteral); - return keys.map((key) => key.toString()); -} -function FromUnion2(types) { - const result = []; - for (const type2 of types) - result.push(...IndexPropertyKeys(type2)); - return result; -} -function FromLiteral(literalValue) { - return [literalValue.toString()]; -} -function IndexPropertyKeys(type2) { - return [...new Set(IsTemplateLiteral(type2) ? FromTemplateLiteral(type2) : IsUnion(type2) ? FromUnion2(type2.anyOf) : IsLiteral(type2) ? FromLiteral(type2.const) : IsNumber3(type2) ? ["[number]"] : IsInteger2(type2) ? ["[number]"] : [])]; -} - -// node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs -function FromProperties(type2, properties, options) { - const result = {}; - for (const K2 of Object.getOwnPropertyNames(properties)) { - result[K2] = Index(type2, IndexPropertyKeys(properties[K2]), options); - } - return result; -} -function FromMappedResult(type2, mappedResult, options) { - return FromProperties(type2, mappedResult.properties, options); -} -function IndexFromMappedResult(type2, mappedResult, options) { - const properties = FromMappedResult(type2, mappedResult, options); - return MappedResult(properties); -} - -// node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs -function FromRest(types, key) { - return types.map((type2) => IndexFromPropertyKey(type2, key)); -} -function FromIntersectRest(types) { - return types.filter((type2) => !IsNever(type2)); -} -function FromIntersect(types, key) { - return IntersectEvaluated(FromIntersectRest(FromRest(types, key))); -} -function FromUnionRest(types) { - return types.some((L) => IsNever(L)) ? [] : types; -} -function FromUnion3(types, key) { - return UnionEvaluated(FromUnionRest(FromRest(types, key))); -} -function FromTuple(types, key) { - return key in types ? types[key] : key === "[number]" ? UnionEvaluated(types) : Never(); -} -function FromArray(type2, key) { - return key === "[number]" ? type2 : Never(); -} -function FromProperty(properties, propertyKey) { - return propertyKey in properties ? properties[propertyKey] : Never(); -} -function IndexFromPropertyKey(type2, propertyKey) { - return IsIntersect(type2) ? FromIntersect(type2.allOf, propertyKey) : IsUnion(type2) ? FromUnion3(type2.anyOf, propertyKey) : IsTuple(type2) ? FromTuple(type2.items ?? [], propertyKey) : IsArray3(type2) ? FromArray(type2.items, propertyKey) : IsObject3(type2) ? FromProperty(type2.properties, propertyKey) : Never(); -} -function IndexFromPropertyKeys(type2, propertyKeys) { - return propertyKeys.map((propertyKey) => IndexFromPropertyKey(type2, propertyKey)); -} -function FromSchema(type2, propertyKeys) { - return UnionEvaluated(IndexFromPropertyKeys(type2, propertyKeys)); -} -function Index(type2, key, options) { - if (IsRef(type2) || IsRef(key)) { - const error = `Index types using Ref parameters require both Type and Key to be of TSchema`; - if (!IsSchema(type2) || !IsSchema(key)) - throw new TypeBoxError(error); - return Computed("Index", [type2, key]); - } - if (IsMappedResult(key)) - return IndexFromMappedResult(type2, key, options); - if (IsMappedKey(key)) - return IndexFromMappedKey(type2, key, options); - return CreateType(IsSchema(key) ? FromSchema(type2, IndexPropertyKeys(key)) : FromSchema(type2, key), options); -} - -// node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs -function MappedIndexPropertyKey(type2, key, options) { - return { [key]: Index(type2, [key], Clone(options)) }; -} -function MappedIndexPropertyKeys(type2, propertyKeys, options) { - return propertyKeys.reduce((result, left2) => { - return { ...result, ...MappedIndexPropertyKey(type2, left2, options) }; - }, {}); -} -function MappedIndexProperties(type2, mappedKey, options) { - return MappedIndexPropertyKeys(type2, mappedKey.keys, options); -} -function IndexFromMappedKey(type2, mappedKey, options) { - const properties = MappedIndexProperties(type2, mappedKey, options); - return MappedResult(properties); -} - -// node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs -function Iterator(items, options) { - return CreateType({ [Kind]: "Iterator", type: "Iterator", items }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/object/object.mjs -function RequiredArray(properties) { - return globalThis.Object.keys(properties).filter((key) => !IsOptional(properties[key])); -} -function _Object_(properties, options) { - const required = RequiredArray(properties); - const schema = required.length > 0 ? { [Kind]: "Object", type: "object", required, properties } : { [Kind]: "Object", type: "object", properties }; - return CreateType(schema, options); -} -var Object2 = _Object_; - -// node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs -function Promise2(item, options) { - return CreateType({ [Kind]: "Promise", type: "Promise", item }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs -function RemoveReadonly(schema) { - return CreateType(Discard(schema, [ReadonlyKind])); -} -function AddReadonly(schema) { - return CreateType({ ...schema, [ReadonlyKind]: "Readonly" }); -} -function ReadonlyWithFlag(schema, F) { - return F === false ? RemoveReadonly(schema) : AddReadonly(schema); -} -function Readonly(schema, enable) { - const F = enable ?? true; - return IsMappedResult(schema) ? ReadonlyFromMappedResult(schema, F) : ReadonlyWithFlag(schema, F); -} - -// node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs -function FromProperties2(K2, F) { - const Acc = {}; - for (const K22 of globalThis.Object.getOwnPropertyNames(K2)) - Acc[K22] = Readonly(K2[K22], F); - return Acc; -} -function FromMappedResult2(R, F) { - return FromProperties2(R.properties, F); -} -function ReadonlyFromMappedResult(R, F) { - const P = FromMappedResult2(R, F); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs -function Tuple(types, options) { - return CreateType(types.length > 0 ? { [Kind]: "Tuple", type: "array", items: types, additionalItems: false, minItems: types.length, maxItems: types.length } : { [Kind]: "Tuple", type: "array", minItems: types.length, maxItems: types.length }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs -function FromMappedResult3(K2, P) { - return K2 in P ? FromSchemaType(K2, P[K2]) : MappedResult(P); -} -function MappedKeyToKnownMappedResultProperties(K2) { - return { [K2]: Literal(K2) }; -} -function MappedKeyToUnknownMappedResultProperties(P) { - const Acc = {}; - for (const L of P) - Acc[L] = Literal(L); - return Acc; -} -function MappedKeyToMappedResultProperties(K2, P) { - return SetIncludes(P, K2) ? MappedKeyToKnownMappedResultProperties(K2) : MappedKeyToUnknownMappedResultProperties(P); -} -function FromMappedKey(K2, P) { - const R = MappedKeyToMappedResultProperties(K2, P); - return FromMappedResult3(K2, R); -} -function FromRest2(K2, T) { - return T.map((L) => FromSchemaType(K2, L)); -} -function FromProperties3(K2, T) { - const Acc = {}; - for (const K22 of globalThis.Object.getOwnPropertyNames(T)) - Acc[K22] = FromSchemaType(K2, T[K22]); - return Acc; -} -function FromSchemaType(K2, T) { - const options = { ...T }; - return ( - // unevaluated modifier types - IsOptional(T) ? Optional(FromSchemaType(K2, Discard(T, [OptionalKind]))) : IsReadonly(T) ? Readonly(FromSchemaType(K2, Discard(T, [ReadonlyKind]))) : ( - // unevaluated mapped types - IsMappedResult(T) ? FromMappedResult3(K2, T.properties) : IsMappedKey(T) ? FromMappedKey(K2, T.keys) : ( - // unevaluated types - IsConstructor(T) ? Constructor(FromRest2(K2, T.parameters), FromSchemaType(K2, T.returns), options) : IsFunction3(T) ? Function(FromRest2(K2, T.parameters), FromSchemaType(K2, T.returns), options) : IsAsyncIterator3(T) ? AsyncIterator(FromSchemaType(K2, T.items), options) : IsIterator3(T) ? Iterator(FromSchemaType(K2, T.items), options) : IsIntersect(T) ? Intersect(FromRest2(K2, T.allOf), options) : IsUnion(T) ? Union(FromRest2(K2, T.anyOf), options) : IsTuple(T) ? Tuple(FromRest2(K2, T.items ?? []), options) : IsObject3(T) ? Object2(FromProperties3(K2, T.properties), options) : IsArray3(T) ? Array2(FromSchemaType(K2, T.items), options) : IsPromise2(T) ? Promise2(FromSchemaType(K2, T.item), options) : T - ) - ) - ); -} -function MappedFunctionReturnType(K2, T) { - const Acc = {}; - for (const L of K2) - Acc[L] = FromSchemaType(L, T); - return Acc; -} -function Mapped(key, map5, options) { - const K2 = IsSchema(key) ? IndexPropertyKeys(key) : key; - const RT = map5({ [Kind]: "MappedKey", keys: K2 }); - const R = MappedFunctionReturnType(K2, RT); - return Object2(R, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs -function RemoveOptional(schema) { - return CreateType(Discard(schema, [OptionalKind])); -} -function AddOptional(schema) { - return CreateType({ ...schema, [OptionalKind]: "Optional" }); -} -function OptionalWithFlag(schema, F) { - return F === false ? RemoveOptional(schema) : AddOptional(schema); -} -function Optional(schema, enable) { - const F = enable ?? true; - return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F) : OptionalWithFlag(schema, F); -} - -// node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs -function FromProperties4(P, F) { - const Acc = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(P)) - Acc[K2] = Optional(P[K2], F); - return Acc; -} -function FromMappedResult4(R, F) { - return FromProperties4(R.properties, F); -} -function OptionalFromMappedResult(R, F) { - const P = FromMappedResult4(R, F); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs -function IntersectCreate(T, options = {}) { - const allObjects = T.every((schema) => IsObject3(schema)); - const clonedUnevaluatedProperties = IsSchema(options.unevaluatedProperties) ? { unevaluatedProperties: options.unevaluatedProperties } : {}; - return CreateType(options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects ? { ...clonedUnevaluatedProperties, [Kind]: "Intersect", type: "object", allOf: T } : { ...clonedUnevaluatedProperties, [Kind]: "Intersect", allOf: T }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs -function IsIntersectOptional(types) { - return types.every((left2) => IsOptional(left2)); -} -function RemoveOptionalFromType2(type2) { - return Discard(type2, [OptionalKind]); -} -function RemoveOptionalFromRest2(types) { - return types.map((left2) => IsOptional(left2) ? RemoveOptionalFromType2(left2) : left2); -} -function ResolveIntersect(types, options) { - return IsIntersectOptional(types) ? Optional(IntersectCreate(RemoveOptionalFromRest2(types), options)) : IntersectCreate(RemoveOptionalFromRest2(types), options); -} -function IntersectEvaluated(types, options = {}) { - if (types.length === 1) - return CreateType(types[0], options); - if (types.length === 0) - return Never(options); - if (types.some((schema) => IsTransform(schema))) - throw new Error("Cannot intersect transform types"); - return ResolveIntersect(types, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs -function Intersect(types, options) { - if (types.length === 1) - return CreateType(types[0], options); - if (types.length === 0) - return Never(options); - if (types.some((schema) => IsTransform(schema))) - throw new Error("Cannot intersect transform types"); - return IntersectCreate(types, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs -function Ref(...args) { - const [$ref, options] = typeof args[0] === "string" ? [args[0], args[1]] : [args[0].$id, args[1]]; - if (typeof $ref !== "string") - throw new TypeBoxError("Ref: $ref must be a string"); - return CreateType({ [Kind]: "Ref", $ref }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs -function FromComputed(target, parameters) { - return Computed("Awaited", [Computed(target, parameters)]); -} -function FromRef($ref) { - return Computed("Awaited", [Ref($ref)]); -} -function FromIntersect2(types) { - return Intersect(FromRest3(types)); -} -function FromUnion4(types) { - return Union(FromRest3(types)); -} -function FromPromise(type2) { - return Awaited(type2); -} -function FromRest3(types) { - return types.map((type2) => Awaited(type2)); -} -function Awaited(type2, options) { - return CreateType(IsComputed(type2) ? FromComputed(type2.target, type2.parameters) : IsIntersect(type2) ? FromIntersect2(type2.allOf) : IsUnion(type2) ? FromUnion4(type2.anyOf) : IsPromise2(type2) ? FromPromise(type2.item) : IsRef(type2) ? FromRef(type2.$ref) : type2, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs -function FromRest4(types) { - const result = []; - for (const L of types) - result.push(KeyOfPropertyKeys(L)); - return result; -} -function FromIntersect3(types) { - const propertyKeysArray = FromRest4(types); - const propertyKeys = SetUnionMany(propertyKeysArray); - return propertyKeys; -} -function FromUnion5(types) { - const propertyKeysArray = FromRest4(types); - const propertyKeys = SetIntersectMany(propertyKeysArray); - return propertyKeys; -} -function FromTuple2(types) { - return types.map((_, indexer) => indexer.toString()); -} -function FromArray2(_) { - return ["[number]"]; -} -function FromProperties5(T) { - return globalThis.Object.getOwnPropertyNames(T); -} -function FromPatternProperties(patternProperties) { - if (!includePatternProperties) - return []; - const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties); - return patternPropertyKeys.map((key) => { - return key[0] === "^" && key[key.length - 1] === "$" ? key.slice(1, key.length - 1) : key; - }); -} -function KeyOfPropertyKeys(type2) { - return IsIntersect(type2) ? FromIntersect3(type2.allOf) : IsUnion(type2) ? FromUnion5(type2.anyOf) : IsTuple(type2) ? FromTuple2(type2.items ?? []) : IsArray3(type2) ? FromArray2(type2.items) : IsObject3(type2) ? FromProperties5(type2.properties) : IsRecord(type2) ? FromPatternProperties(type2.patternProperties) : []; -} -var includePatternProperties = false; -function KeyOfPattern(schema) { - includePatternProperties = true; - const keys = KeyOfPropertyKeys(schema); - includePatternProperties = false; - const pattern = keys.map((key) => `(${key})`); - return `^(${pattern.join("|")})$`; -} - -// node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs -function FromComputed2(target, parameters) { - return Computed("KeyOf", [Computed(target, parameters)]); -} -function FromRef2($ref) { - return Computed("KeyOf", [Ref($ref)]); -} -function KeyOfFromType(type2, options) { - const propertyKeys = KeyOfPropertyKeys(type2); - const propertyKeyTypes = KeyOfPropertyKeysToRest(propertyKeys); - const result = UnionEvaluated(propertyKeyTypes); - return CreateType(result, options); -} -function KeyOfPropertyKeysToRest(propertyKeys) { - return propertyKeys.map((L) => L === "[number]" ? Number2() : Literal(L)); -} -function KeyOf(type2, options) { - return IsComputed(type2) ? FromComputed2(type2.target, type2.parameters) : IsRef(type2) ? FromRef2(type2.$ref) : IsMappedResult(type2) ? KeyOfFromMappedResult(type2, options) : KeyOfFromType(type2, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs -function FromProperties6(properties, options) { - const result = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(properties)) - result[K2] = KeyOf(properties[K2], Clone(options)); - return result; -} -function FromMappedResult5(mappedResult, options) { - return FromProperties6(mappedResult.properties, options); -} -function KeyOfFromMappedResult(mappedResult, options) { - const properties = FromMappedResult5(mappedResult, options); - return MappedResult(properties); -} - -// node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.mjs -function KeyOfPropertyEntries(schema) { - const keys = KeyOfPropertyKeys(schema); - const schemas = IndexFromPropertyKeys(schema, keys); - return keys.map((_, index2) => [keys[index2], schemas[index2]]); -} - -// node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs -function CompositeKeys(T) { - const Acc = []; - for (const L of T) - Acc.push(...KeyOfPropertyKeys(L)); - return SetDistinct(Acc); -} -function FilterNever(T) { - return T.filter((L) => !IsNever(L)); -} -function CompositeProperty(T, K2) { - const Acc = []; - for (const L of T) - Acc.push(...IndexFromPropertyKeys(L, [K2])); - return FilterNever(Acc); -} -function CompositeProperties(T, K2) { - const Acc = {}; - for (const L of K2) { - Acc[L] = IntersectEvaluated(CompositeProperty(T, L)); - } - return Acc; -} -function Composite(T, options) { - const K2 = CompositeKeys(T); - const P = CompositeProperties(T, K2); - const R = Object2(P, options); - return R; -} - -// node_modules/@sinclair/typebox/build/esm/type/date/date.mjs -function Date2(options) { - return CreateType({ [Kind]: "Date", type: "Date" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/null/null.mjs -function Null(options) { - return CreateType({ [Kind]: "Null", type: "null" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs -function Symbol2(options) { - return CreateType({ [Kind]: "Symbol", type: "symbol" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs -function Undefined(options) { - return CreateType({ [Kind]: "Undefined", type: "undefined" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs -function Uint8Array2(options) { - return CreateType({ [Kind]: "Uint8Array", type: "Uint8Array" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs -function Unknown(options) { - return CreateType({ [Kind]: "Unknown" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/const/const.mjs -function FromArray3(T) { - return T.map((L) => FromValue(L, false)); -} -function FromProperties7(value) { - const Acc = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(value)) - Acc[K2] = Readonly(FromValue(value[K2], false)); - return Acc; -} -function ConditionalReadonly(T, root2) { - return root2 === true ? T : Readonly(T); -} -function FromValue(value, root2) { - return IsAsyncIterator(value) ? ConditionalReadonly(Any(), root2) : IsIterator(value) ? ConditionalReadonly(Any(), root2) : IsArray(value) ? Readonly(Tuple(FromArray3(value))) : IsUint8Array(value) ? Uint8Array2() : IsDate(value) ? Date2() : IsObject(value) ? ConditionalReadonly(Object2(FromProperties7(value)), root2) : IsFunction(value) ? ConditionalReadonly(Function([], Unknown()), root2) : IsUndefined(value) ? Undefined() : IsNull(value) ? Null() : IsSymbol(value) ? Symbol2() : IsBigInt(value) ? BigInt2() : IsNumber(value) ? Literal(value) : IsBoolean(value) ? Literal(value) : IsString(value) ? Literal(value) : Object2({}); -} -function Const(T, options) { - return CreateType(FromValue(T, true), options); -} - -// node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs -function ConstructorParameters(schema, options) { - return IsConstructor(schema) ? Tuple(schema.parameters, options) : Never(options); -} - -// node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs -function Enum(item, options) { - if (IsUndefined(item)) - throw new Error("Enum undefined or empty"); - const values1 = globalThis.Object.getOwnPropertyNames(item).filter((key) => isNaN(key)).map((key) => item[key]); - const values2 = [...new Set(values1)]; - const anyOf = values2.map((value) => Literal(value)); - return Union(anyOf, { ...options, [Hint]: "Enum" }); -} - -// node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs -var ExtendsResolverError = class extends TypeBoxError { -}; -var ExtendsResult; -(function(ExtendsResult2) { - ExtendsResult2[ExtendsResult2["Union"] = 0] = "Union"; - ExtendsResult2[ExtendsResult2["True"] = 1] = "True"; - ExtendsResult2[ExtendsResult2["False"] = 2] = "False"; -})(ExtendsResult || (ExtendsResult = {})); -function IntoBooleanResult(result) { - return result === ExtendsResult.False ? result : ExtendsResult.True; -} -function Throw(message) { - throw new ExtendsResolverError(message); -} -function IsStructuralRight(right2) { - return type_exports.IsNever(right2) || type_exports.IsIntersect(right2) || type_exports.IsUnion(right2) || type_exports.IsUnknown(right2) || type_exports.IsAny(right2); -} -function StructuralRight(left2, right2) { - return type_exports.IsNever(right2) ? FromNeverRight(left2, right2) : type_exports.IsIntersect(right2) ? FromIntersectRight(left2, right2) : type_exports.IsUnion(right2) ? FromUnionRight(left2, right2) : type_exports.IsUnknown(right2) ? FromUnknownRight(left2, right2) : type_exports.IsAny(right2) ? FromAnyRight(left2, right2) : Throw("StructuralRight"); -} -function FromAnyRight(left2, right2) { - return ExtendsResult.True; -} -function FromAny(left2, right2) { - return type_exports.IsIntersect(right2) ? FromIntersectRight(left2, right2) : type_exports.IsUnion(right2) && right2.anyOf.some((schema) => type_exports.IsAny(schema) || type_exports.IsUnknown(schema)) ? ExtendsResult.True : type_exports.IsUnion(right2) ? ExtendsResult.Union : type_exports.IsUnknown(right2) ? ExtendsResult.True : type_exports.IsAny(right2) ? ExtendsResult.True : ExtendsResult.Union; -} -function FromArrayRight(left2, right2) { - return type_exports.IsUnknown(left2) ? ExtendsResult.False : type_exports.IsAny(left2) ? ExtendsResult.Union : type_exports.IsNever(left2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromArray4(left2, right2) { - return type_exports.IsObject(right2) && IsObjectArrayLike(right2) ? ExtendsResult.True : IsStructuralRight(right2) ? StructuralRight(left2, right2) : !type_exports.IsArray(right2) ? ExtendsResult.False : IntoBooleanResult(Visit3(left2.items, right2.items)); -} -function FromAsyncIterator(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : !type_exports.IsAsyncIterator(right2) ? ExtendsResult.False : IntoBooleanResult(Visit3(left2.items, right2.items)); -} -function FromBigInt(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsBigInt(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromBooleanRight(left2, right2) { - return type_exports.IsLiteralBoolean(left2) ? ExtendsResult.True : type_exports.IsBoolean(left2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromBoolean(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsBoolean(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromConstructor(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : !type_exports.IsConstructor(right2) ? ExtendsResult.False : left2.parameters.length > right2.parameters.length ? ExtendsResult.False : !left2.parameters.every((schema, index2) => IntoBooleanResult(Visit3(right2.parameters[index2], schema)) === ExtendsResult.True) ? ExtendsResult.False : IntoBooleanResult(Visit3(left2.returns, right2.returns)); -} -function FromDate(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsDate(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromFunction(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : !type_exports.IsFunction(right2) ? ExtendsResult.False : left2.parameters.length > right2.parameters.length ? ExtendsResult.False : !left2.parameters.every((schema, index2) => IntoBooleanResult(Visit3(right2.parameters[index2], schema)) === ExtendsResult.True) ? ExtendsResult.False : IntoBooleanResult(Visit3(left2.returns, right2.returns)); -} -function FromIntegerRight(left2, right2) { - return type_exports.IsLiteral(left2) && value_exports.IsNumber(left2.const) ? ExtendsResult.True : type_exports.IsNumber(left2) || type_exports.IsInteger(left2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromInteger(left2, right2) { - return type_exports.IsInteger(right2) || type_exports.IsNumber(right2) ? ExtendsResult.True : IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : ExtendsResult.False; -} -function FromIntersectRight(left2, right2) { - return right2.allOf.every((schema) => Visit3(left2, schema) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; -} -function FromIntersect4(left2, right2) { - return left2.allOf.some((schema) => Visit3(schema, right2) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; -} -function FromIterator(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : !type_exports.IsIterator(right2) ? ExtendsResult.False : IntoBooleanResult(Visit3(left2.items, right2.items)); -} -function FromLiteral2(left2, right2) { - return type_exports.IsLiteral(right2) && right2.const === left2.const ? ExtendsResult.True : IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsString(right2) ? FromStringRight(left2, right2) : type_exports.IsNumber(right2) ? FromNumberRight(left2, right2) : type_exports.IsInteger(right2) ? FromIntegerRight(left2, right2) : type_exports.IsBoolean(right2) ? FromBooleanRight(left2, right2) : ExtendsResult.False; -} -function FromNeverRight(left2, right2) { - return ExtendsResult.False; -} -function FromNever(left2, right2) { - return ExtendsResult.True; -} -function UnwrapTNot(schema) { - let [current, depth] = [schema, 0]; - while (true) { - if (!type_exports.IsNot(current)) - break; - current = current.not; - depth += 1; - } - return depth % 2 === 0 ? current : Unknown(); -} -function FromNot(left2, right2) { - return type_exports.IsNot(left2) ? Visit3(UnwrapTNot(left2), right2) : type_exports.IsNot(right2) ? Visit3(left2, UnwrapTNot(right2)) : Throw("Invalid fallthrough for Not"); -} -function FromNull(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsNull(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromNumberRight(left2, right2) { - return type_exports.IsLiteralNumber(left2) ? ExtendsResult.True : type_exports.IsNumber(left2) || type_exports.IsInteger(left2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromNumber(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsInteger(right2) || type_exports.IsNumber(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function IsObjectPropertyCount(schema, count) { - return Object.getOwnPropertyNames(schema.properties).length === count; -} -function IsObjectStringLike(schema) { - return IsObjectArrayLike(schema); -} -function IsObjectSymbolLike(schema) { - return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "description" in schema.properties && type_exports.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && (type_exports.IsString(schema.properties.description.anyOf[0]) && type_exports.IsUndefined(schema.properties.description.anyOf[1]) || type_exports.IsString(schema.properties.description.anyOf[1]) && type_exports.IsUndefined(schema.properties.description.anyOf[0])); -} -function IsObjectNumberLike(schema) { - return IsObjectPropertyCount(schema, 0); -} -function IsObjectBooleanLike(schema) { - return IsObjectPropertyCount(schema, 0); -} -function IsObjectBigIntLike(schema) { - return IsObjectPropertyCount(schema, 0); -} -function IsObjectDateLike(schema) { - return IsObjectPropertyCount(schema, 0); -} -function IsObjectUint8ArrayLike(schema) { - return IsObjectArrayLike(schema); -} -function IsObjectFunctionLike(schema) { - const length3 = Number2(); - return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "length" in schema.properties && IntoBooleanResult(Visit3(schema.properties["length"], length3)) === ExtendsResult.True; -} -function IsObjectConstructorLike(schema) { - return IsObjectPropertyCount(schema, 0); -} -function IsObjectArrayLike(schema) { - const length3 = Number2(); - return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "length" in schema.properties && IntoBooleanResult(Visit3(schema.properties["length"], length3)) === ExtendsResult.True; -} -function IsObjectPromiseLike(schema) { - const then = Function([Any()], Any()); - return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "then" in schema.properties && IntoBooleanResult(Visit3(schema.properties["then"], then)) === ExtendsResult.True; -} -function Property(left2, right2) { - return Visit3(left2, right2) === ExtendsResult.False ? ExtendsResult.False : type_exports.IsOptional(left2) && !type_exports.IsOptional(right2) ? ExtendsResult.False : ExtendsResult.True; -} -function FromObjectRight(left2, right2) { - return type_exports.IsUnknown(left2) ? ExtendsResult.False : type_exports.IsAny(left2) ? ExtendsResult.Union : type_exports.IsNever(left2) || type_exports.IsLiteralString(left2) && IsObjectStringLike(right2) || type_exports.IsLiteralNumber(left2) && IsObjectNumberLike(right2) || type_exports.IsLiteralBoolean(left2) && IsObjectBooleanLike(right2) || type_exports.IsSymbol(left2) && IsObjectSymbolLike(right2) || type_exports.IsBigInt(left2) && IsObjectBigIntLike(right2) || type_exports.IsString(left2) && IsObjectStringLike(right2) || type_exports.IsSymbol(left2) && IsObjectSymbolLike(right2) || type_exports.IsNumber(left2) && IsObjectNumberLike(right2) || type_exports.IsInteger(left2) && IsObjectNumberLike(right2) || type_exports.IsBoolean(left2) && IsObjectBooleanLike(right2) || type_exports.IsUint8Array(left2) && IsObjectUint8ArrayLike(right2) || type_exports.IsDate(left2) && IsObjectDateLike(right2) || type_exports.IsConstructor(left2) && IsObjectConstructorLike(right2) || type_exports.IsFunction(left2) && IsObjectFunctionLike(right2) ? ExtendsResult.True : type_exports.IsRecord(left2) && type_exports.IsString(RecordKey(left2)) ? (() => { - return right2[Hint] === "Record" ? ExtendsResult.True : ExtendsResult.False; - })() : type_exports.IsRecord(left2) && type_exports.IsNumber(RecordKey(left2)) ? (() => { - return IsObjectPropertyCount(right2, 0) ? ExtendsResult.True : ExtendsResult.False; - })() : ExtendsResult.False; -} -function FromObject(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : !type_exports.IsObject(right2) ? ExtendsResult.False : (() => { - for (const key of Object.getOwnPropertyNames(right2.properties)) { - if (!(key in left2.properties) && !type_exports.IsOptional(right2.properties[key])) { - return ExtendsResult.False; - } - if (type_exports.IsOptional(right2.properties[key])) { - return ExtendsResult.True; - } - if (Property(left2.properties[key], right2.properties[key]) === ExtendsResult.False) { - return ExtendsResult.False; - } - } - return ExtendsResult.True; - })(); -} -function FromPromise2(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) && IsObjectPromiseLike(right2) ? ExtendsResult.True : !type_exports.IsPromise(right2) ? ExtendsResult.False : IntoBooleanResult(Visit3(left2.item, right2.item)); -} -function RecordKey(schema) { - return PatternNumberExact in schema.patternProperties ? Number2() : PatternStringExact in schema.patternProperties ? String2() : Throw("Unknown record key pattern"); -} -function RecordValue(schema) { - return PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] : PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] : Throw("Unable to get record value schema"); -} -function FromRecordRight(left2, right2) { - const [Key, Value] = [RecordKey(right2), RecordValue(right2)]; - return type_exports.IsLiteralString(left2) && type_exports.IsNumber(Key) && IntoBooleanResult(Visit3(left2, Value)) === ExtendsResult.True ? ExtendsResult.True : type_exports.IsUint8Array(left2) && type_exports.IsNumber(Key) ? Visit3(left2, Value) : type_exports.IsString(left2) && type_exports.IsNumber(Key) ? Visit3(left2, Value) : type_exports.IsArray(left2) && type_exports.IsNumber(Key) ? Visit3(left2, Value) : type_exports.IsObject(left2) ? (() => { - for (const key of Object.getOwnPropertyNames(left2.properties)) { - if (Property(Value, left2.properties[key]) === ExtendsResult.False) { - return ExtendsResult.False; - } - } - return ExtendsResult.True; - })() : ExtendsResult.False; -} -function FromRecord(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : !type_exports.IsRecord(right2) ? ExtendsResult.False : Visit3(RecordValue(left2), RecordValue(right2)); -} -function FromRegExp(left2, right2) { - const L = type_exports.IsRegExp(left2) ? String2() : left2; - const R = type_exports.IsRegExp(right2) ? String2() : right2; - return Visit3(L, R); -} -function FromStringRight(left2, right2) { - return type_exports.IsLiteral(left2) && value_exports.IsString(left2.const) ? ExtendsResult.True : type_exports.IsString(left2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromString(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsString(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromSymbol(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsSymbol(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromTemplateLiteral2(left2, right2) { - return type_exports.IsTemplateLiteral(left2) ? Visit3(TemplateLiteralToUnion(left2), right2) : type_exports.IsTemplateLiteral(right2) ? Visit3(left2, TemplateLiteralToUnion(right2)) : Throw("Invalid fallthrough for TemplateLiteral"); -} -function IsArrayOfTuple(left2, right2) { - return type_exports.IsArray(right2) && left2.items !== void 0 && left2.items.every((schema) => Visit3(schema, right2.items) === ExtendsResult.True); -} -function FromTupleRight(left2, right2) { - return type_exports.IsNever(left2) ? ExtendsResult.True : type_exports.IsUnknown(left2) ? ExtendsResult.False : type_exports.IsAny(left2) ? ExtendsResult.Union : ExtendsResult.False; -} -function FromTuple3(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) && IsObjectArrayLike(right2) ? ExtendsResult.True : type_exports.IsArray(right2) && IsArrayOfTuple(left2, right2) ? ExtendsResult.True : !type_exports.IsTuple(right2) ? ExtendsResult.False : value_exports.IsUndefined(left2.items) && !value_exports.IsUndefined(right2.items) || !value_exports.IsUndefined(left2.items) && value_exports.IsUndefined(right2.items) ? ExtendsResult.False : value_exports.IsUndefined(left2.items) && !value_exports.IsUndefined(right2.items) ? ExtendsResult.True : left2.items.every((schema, index2) => Visit3(schema, right2.items[index2]) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; -} -function FromUint8Array(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsUint8Array(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromUndefined(left2, right2) { - return IsStructuralRight(right2) ? StructuralRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsRecord(right2) ? FromRecordRight(left2, right2) : type_exports.IsVoid(right2) ? FromVoidRight(left2, right2) : type_exports.IsUndefined(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromUnionRight(left2, right2) { - return right2.anyOf.some((schema) => Visit3(left2, schema) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; -} -function FromUnion6(left2, right2) { - return left2.anyOf.every((schema) => Visit3(schema, right2) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; -} -function FromUnknownRight(left2, right2) { - return ExtendsResult.True; -} -function FromUnknown(left2, right2) { - return type_exports.IsNever(right2) ? FromNeverRight(left2, right2) : type_exports.IsIntersect(right2) ? FromIntersectRight(left2, right2) : type_exports.IsUnion(right2) ? FromUnionRight(left2, right2) : type_exports.IsAny(right2) ? FromAnyRight(left2, right2) : type_exports.IsString(right2) ? FromStringRight(left2, right2) : type_exports.IsNumber(right2) ? FromNumberRight(left2, right2) : type_exports.IsInteger(right2) ? FromIntegerRight(left2, right2) : type_exports.IsBoolean(right2) ? FromBooleanRight(left2, right2) : type_exports.IsArray(right2) ? FromArrayRight(left2, right2) : type_exports.IsTuple(right2) ? FromTupleRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsUnknown(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromVoidRight(left2, right2) { - return type_exports.IsUndefined(left2) ? ExtendsResult.True : type_exports.IsUndefined(left2) ? ExtendsResult.True : ExtendsResult.False; -} -function FromVoid(left2, right2) { - return type_exports.IsIntersect(right2) ? FromIntersectRight(left2, right2) : type_exports.IsUnion(right2) ? FromUnionRight(left2, right2) : type_exports.IsUnknown(right2) ? FromUnknownRight(left2, right2) : type_exports.IsAny(right2) ? FromAnyRight(left2, right2) : type_exports.IsObject(right2) ? FromObjectRight(left2, right2) : type_exports.IsVoid(right2) ? ExtendsResult.True : ExtendsResult.False; -} -function Visit3(left2, right2) { - return ( - // resolvable - type_exports.IsTemplateLiteral(left2) || type_exports.IsTemplateLiteral(right2) ? FromTemplateLiteral2(left2, right2) : type_exports.IsRegExp(left2) || type_exports.IsRegExp(right2) ? FromRegExp(left2, right2) : type_exports.IsNot(left2) || type_exports.IsNot(right2) ? FromNot(left2, right2) : ( - // standard - type_exports.IsAny(left2) ? FromAny(left2, right2) : type_exports.IsArray(left2) ? FromArray4(left2, right2) : type_exports.IsBigInt(left2) ? FromBigInt(left2, right2) : type_exports.IsBoolean(left2) ? FromBoolean(left2, right2) : type_exports.IsAsyncIterator(left2) ? FromAsyncIterator(left2, right2) : type_exports.IsConstructor(left2) ? FromConstructor(left2, right2) : type_exports.IsDate(left2) ? FromDate(left2, right2) : type_exports.IsFunction(left2) ? FromFunction(left2, right2) : type_exports.IsInteger(left2) ? FromInteger(left2, right2) : type_exports.IsIntersect(left2) ? FromIntersect4(left2, right2) : type_exports.IsIterator(left2) ? FromIterator(left2, right2) : type_exports.IsLiteral(left2) ? FromLiteral2(left2, right2) : type_exports.IsNever(left2) ? FromNever(left2, right2) : type_exports.IsNull(left2) ? FromNull(left2, right2) : type_exports.IsNumber(left2) ? FromNumber(left2, right2) : type_exports.IsObject(left2) ? FromObject(left2, right2) : type_exports.IsRecord(left2) ? FromRecord(left2, right2) : type_exports.IsString(left2) ? FromString(left2, right2) : type_exports.IsSymbol(left2) ? FromSymbol(left2, right2) : type_exports.IsTuple(left2) ? FromTuple3(left2, right2) : type_exports.IsPromise(left2) ? FromPromise2(left2, right2) : type_exports.IsUint8Array(left2) ? FromUint8Array(left2, right2) : type_exports.IsUndefined(left2) ? FromUndefined(left2, right2) : type_exports.IsUnion(left2) ? FromUnion6(left2, right2) : type_exports.IsUnknown(left2) ? FromUnknown(left2, right2) : type_exports.IsVoid(left2) ? FromVoid(left2, right2) : Throw(`Unknown left type operand '${left2[Kind]}'`) - ) - ); -} -function ExtendsCheck(left2, right2) { - return Visit3(left2, right2); -} - -// node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs -function FromProperties8(P, Right, True, False, options) { - const Acc = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(P)) - Acc[K2] = Extends(P[K2], Right, True, False, Clone(options)); - return Acc; -} -function FromMappedResult6(Left, Right, True, False, options) { - return FromProperties8(Left.properties, Right, True, False, options); -} -function ExtendsFromMappedResult(Left, Right, True, False, options) { - const P = FromMappedResult6(Left, Right, True, False, options); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs -function ExtendsResolve(left2, right2, trueType, falseType) { - const R = ExtendsCheck(left2, right2); - return R === ExtendsResult.Union ? Union([trueType, falseType]) : R === ExtendsResult.True ? trueType : falseType; -} -function Extends(L, R, T, F, options) { - return IsMappedResult(L) ? ExtendsFromMappedResult(L, R, T, F, options) : IsMappedKey(L) ? CreateType(ExtendsFromMappedKey(L, R, T, F, options)) : CreateType(ExtendsResolve(L, R, T, F), options); -} - -// node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs -function FromPropertyKey(K2, U, L, R, options) { - return { - [K2]: Extends(Literal(K2), U, L, R, Clone(options)) - }; -} -function FromPropertyKeys(K2, U, L, R, options) { - return K2.reduce((Acc, LK) => { - return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) }; - }, {}); -} -function FromMappedKey2(K2, U, L, R, options) { - return FromPropertyKeys(K2.keys, U, L, R, options); -} -function ExtendsFromMappedKey(T, U, L, R, options) { - const P = FromMappedKey2(T, U, L, R, options); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.mjs -function Intersect2(schema) { - return schema.allOf.every((schema2) => ExtendsUndefinedCheck(schema2)); -} -function Union2(schema) { - return schema.anyOf.some((schema2) => ExtendsUndefinedCheck(schema2)); -} -function Not(schema) { - return !ExtendsUndefinedCheck(schema.not); -} -function ExtendsUndefinedCheck(schema) { - return schema[Kind] === "Intersect" ? Intersect2(schema) : schema[Kind] === "Union" ? Union2(schema) : schema[Kind] === "Not" ? Not(schema) : schema[Kind] === "Undefined" ? true : false; -} - -// node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs -function ExcludeFromTemplateLiteral(L, R) { - return Exclude(TemplateLiteralToUnion(L), R); -} - -// node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs -function ExcludeRest(L, R) { - const excluded = L.filter((inner) => ExtendsCheck(inner, R) === ExtendsResult.False); - return excluded.length === 1 ? excluded[0] : Union(excluded); -} -function Exclude(L, R, options = {}) { - if (IsTemplateLiteral(L)) - return CreateType(ExcludeFromTemplateLiteral(L, R), options); - if (IsMappedResult(L)) - return CreateType(ExcludeFromMappedResult(L, R), options); - return CreateType(IsUnion(L) ? ExcludeRest(L.anyOf, R) : ExtendsCheck(L, R) !== ExtendsResult.False ? Never() : L, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs -function FromProperties9(P, U) { - const Acc = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(P)) - Acc[K2] = Exclude(P[K2], U); - return Acc; -} -function FromMappedResult7(R, T) { - return FromProperties9(R.properties, T); -} -function ExcludeFromMappedResult(R, T) { - const P = FromMappedResult7(R, T); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs -function ExtractFromTemplateLiteral(L, R) { - return Extract(TemplateLiteralToUnion(L), R); -} - -// node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs -function ExtractRest(L, R) { - const extracted = L.filter((inner) => ExtendsCheck(inner, R) !== ExtendsResult.False); - return extracted.length === 1 ? extracted[0] : Union(extracted); -} -function Extract(L, R, options) { - if (IsTemplateLiteral(L)) - return CreateType(ExtractFromTemplateLiteral(L, R), options); - if (IsMappedResult(L)) - return CreateType(ExtractFromMappedResult(L, R), options); - return CreateType(IsUnion(L) ? ExtractRest(L.anyOf, R) : ExtendsCheck(L, R) !== ExtendsResult.False ? L : Never(), options); -} - -// node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs -function FromProperties10(P, T) { - const Acc = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(P)) - Acc[K2] = Extract(P[K2], T); - return Acc; -} -function FromMappedResult8(R, T) { - return FromProperties10(R.properties, T); -} -function ExtractFromMappedResult(R, T) { - const P = FromMappedResult8(R, T); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs -function InstanceType(schema, options) { - return IsConstructor(schema) ? CreateType(schema.returns, options) : Never(options); -} - -// node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs -function ReadonlyOptional(schema) { - return Readonly(Optional(schema)); -} - -// node_modules/@sinclair/typebox/build/esm/type/record/record.mjs -function RecordCreateFromPattern(pattern, T, options) { - return CreateType({ [Kind]: "Record", type: "object", patternProperties: { [pattern]: T } }, options); -} -function RecordCreateFromKeys(K2, T, options) { - const result = {}; - for (const K22 of K2) - result[K22] = T; - return Object2(result, { ...options, [Hint]: "Record" }); -} -function FromTemplateLiteralKey(K2, T, options) { - return IsTemplateLiteralFinite(K2) ? RecordCreateFromKeys(IndexPropertyKeys(K2), T, options) : RecordCreateFromPattern(K2.pattern, T, options); -} -function FromUnionKey(key, type2, options) { - return RecordCreateFromKeys(IndexPropertyKeys(Union(key)), type2, options); -} -function FromLiteralKey(key, type2, options) { - return RecordCreateFromKeys([key.toString()], type2, options); -} -function FromRegExpKey(key, type2, options) { - return RecordCreateFromPattern(key.source, type2, options); -} -function FromStringKey(key, type2, options) { - const pattern = IsUndefined(key.pattern) ? PatternStringExact : key.pattern; - return RecordCreateFromPattern(pattern, type2, options); -} -function FromAnyKey(_, type2, options) { - return RecordCreateFromPattern(PatternStringExact, type2, options); -} -function FromNeverKey(_key, type2, options) { - return RecordCreateFromPattern(PatternNeverExact, type2, options); -} -function FromBooleanKey(_key, type2, options) { - return Object2({ true: type2, false: type2 }, options); -} -function FromIntegerKey(_key, type2, options) { - return RecordCreateFromPattern(PatternNumberExact, type2, options); -} -function FromNumberKey(_, type2, options) { - return RecordCreateFromPattern(PatternNumberExact, type2, options); -} -function Record(key, type2, options = {}) { - return IsUnion(key) ? FromUnionKey(key.anyOf, type2, options) : IsTemplateLiteral(key) ? FromTemplateLiteralKey(key, type2, options) : IsLiteral(key) ? FromLiteralKey(key.const, type2, options) : IsBoolean3(key) ? FromBooleanKey(key, type2, options) : IsInteger2(key) ? FromIntegerKey(key, type2, options) : IsNumber3(key) ? FromNumberKey(key, type2, options) : IsRegExp2(key) ? FromRegExpKey(key, type2, options) : IsString3(key) ? FromStringKey(key, type2, options) : IsAny(key) ? FromAnyKey(key, type2, options) : IsNever(key) ? FromNeverKey(key, type2, options) : Never(options); -} -function RecordPattern(record) { - return globalThis.Object.getOwnPropertyNames(record.patternProperties)[0]; -} -function RecordKey2(type2) { - const pattern = RecordPattern(type2); - return pattern === PatternStringExact ? String2() : pattern === PatternNumberExact ? Number2() : String2({ pattern }); -} -function RecordValue2(type2) { - return type2.patternProperties[RecordPattern(type2)]; -} - -// node_modules/@sinclair/typebox/build/esm/type/instantiate/instantiate.mjs -function FromConstructor2(args, type2) { - type2.parameters = FromTypes(args, type2.parameters); - type2.returns = FromType(args, type2.returns); - return type2; -} -function FromFunction2(args, type2) { - type2.parameters = FromTypes(args, type2.parameters); - type2.returns = FromType(args, type2.returns); - return type2; -} -function FromIntersect5(args, type2) { - type2.allOf = FromTypes(args, type2.allOf); - return type2; -} -function FromUnion7(args, type2) { - type2.anyOf = FromTypes(args, type2.anyOf); - return type2; -} -function FromTuple4(args, type2) { - if (IsUndefined(type2.items)) - return type2; - type2.items = FromTypes(args, type2.items); - return type2; -} -function FromArray5(args, type2) { - type2.items = FromType(args, type2.items); - return type2; -} -function FromAsyncIterator2(args, type2) { - type2.items = FromType(args, type2.items); - return type2; -} -function FromIterator2(args, type2) { - type2.items = FromType(args, type2.items); - return type2; -} -function FromPromise3(args, type2) { - type2.item = FromType(args, type2.item); - return type2; -} -function FromObject2(args, type2) { - const mappedProperties = FromProperties11(args, type2.properties); - return { ...type2, ...Object2(mappedProperties) }; -} -function FromRecord2(args, type2) { - const mappedKey = FromType(args, RecordKey2(type2)); - const mappedValue = FromType(args, RecordValue2(type2)); - const result = Record(mappedKey, mappedValue); - return { ...type2, ...result }; -} -function FromArgument(args, argument) { - return argument.index in args ? args[argument.index] : Unknown(); -} -function FromProperty2(args, type2) { - const isReadonly = IsReadonly(type2); - const isOptional = IsOptional(type2); - const mapped = FromType(args, type2); - return isReadonly && isOptional ? ReadonlyOptional(mapped) : isReadonly && !isOptional ? Readonly(mapped) : !isReadonly && isOptional ? Optional(mapped) : mapped; -} -function FromProperties11(args, properties) { - return globalThis.Object.getOwnPropertyNames(properties).reduce((result, key) => { - return { ...result, [key]: FromProperty2(args, properties[key]) }; - }, {}); -} -function FromTypes(args, types) { - return types.map((type2) => FromType(args, type2)); -} -function FromType(args, type2) { - return IsConstructor(type2) ? FromConstructor2(args, type2) : IsFunction3(type2) ? FromFunction2(args, type2) : IsIntersect(type2) ? FromIntersect5(args, type2) : IsUnion(type2) ? FromUnion7(args, type2) : IsTuple(type2) ? FromTuple4(args, type2) : IsArray3(type2) ? FromArray5(args, type2) : IsAsyncIterator3(type2) ? FromAsyncIterator2(args, type2) : IsIterator3(type2) ? FromIterator2(args, type2) : IsPromise2(type2) ? FromPromise3(args, type2) : IsObject3(type2) ? FromObject2(args, type2) : IsRecord(type2) ? FromRecord2(args, type2) : IsArgument(type2) ? FromArgument(args, type2) : type2; -} -function Instantiate(type2, args) { - return FromType(args, CloneType(type2)); -} - -// node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs -function Integer(options) { - return CreateType({ [Kind]: "Integer", type: "integer" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs -function MappedIntrinsicPropertyKey(K2, M2, options) { - return { - [K2]: Intrinsic(Literal(K2), M2, Clone(options)) - }; -} -function MappedIntrinsicPropertyKeys(K2, M2, options) { - const result = K2.reduce((Acc, L) => { - return { ...Acc, ...MappedIntrinsicPropertyKey(L, M2, options) }; - }, {}); - return result; -} -function MappedIntrinsicProperties(T, M2, options) { - return MappedIntrinsicPropertyKeys(T["keys"], M2, options); -} -function IntrinsicFromMappedKey(T, M2, options) { - const P = MappedIntrinsicProperties(T, M2, options); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs -function ApplyUncapitalize(value) { - const [first2, rest] = [value.slice(0, 1), value.slice(1)]; - return [first2.toLowerCase(), rest].join(""); -} -function ApplyCapitalize(value) { - const [first2, rest] = [value.slice(0, 1), value.slice(1)]; - return [first2.toUpperCase(), rest].join(""); -} -function ApplyUppercase(value) { - return value.toUpperCase(); -} -function ApplyLowercase(value) { - return value.toLowerCase(); -} -function FromTemplateLiteral3(schema, mode2, options) { - const expression = TemplateLiteralParseExact(schema.pattern); - const finite2 = IsTemplateLiteralExpressionFinite(expression); - if (!finite2) - return { ...schema, pattern: FromLiteralValue(schema.pattern, mode2) }; - const strings = [...TemplateLiteralExpressionGenerate(expression)]; - const literals = strings.map((value) => Literal(value)); - const mapped = FromRest5(literals, mode2); - const union = Union(mapped); - return TemplateLiteral([union], options); -} -function FromLiteralValue(value, mode2) { - return typeof value === "string" ? mode2 === "Uncapitalize" ? ApplyUncapitalize(value) : mode2 === "Capitalize" ? ApplyCapitalize(value) : mode2 === "Uppercase" ? ApplyUppercase(value) : mode2 === "Lowercase" ? ApplyLowercase(value) : value : value.toString(); -} -function FromRest5(T, M2) { - return T.map((L) => Intrinsic(L, M2)); -} -function Intrinsic(schema, mode2, options = {}) { - return ( - // Intrinsic-Mapped-Inference - IsMappedKey(schema) ? IntrinsicFromMappedKey(schema, mode2, options) : ( - // Standard-Inference - IsTemplateLiteral(schema) ? FromTemplateLiteral3(schema, mode2, options) : IsUnion(schema) ? Union(FromRest5(schema.anyOf, mode2), options) : IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode2), options) : ( - // Default Type - CreateType(schema, options) - ) - ) - ); -} - -// node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs -function Capitalize(T, options = {}) { - return Intrinsic(T, "Capitalize", options); -} - -// node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs -function Lowercase(T, options = {}) { - return Intrinsic(T, "Lowercase", options); -} - -// node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs -function Uncapitalize(T, options = {}) { - return Intrinsic(T, "Uncapitalize", options); -} - -// node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs -function Uppercase(T, options = {}) { - return Intrinsic(T, "Uppercase", options); -} - -// node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs -function FromProperties12(properties, propertyKeys, options) { - const result = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(properties)) - result[K2] = Omit(properties[K2], propertyKeys, Clone(options)); - return result; -} -function FromMappedResult9(mappedResult, propertyKeys, options) { - return FromProperties12(mappedResult.properties, propertyKeys, options); -} -function OmitFromMappedResult(mappedResult, propertyKeys, options) { - const properties = FromMappedResult9(mappedResult, propertyKeys, options); - return MappedResult(properties); -} - -// node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs -function FromIntersect6(types, propertyKeys) { - return types.map((type2) => OmitResolve(type2, propertyKeys)); -} -function FromUnion8(types, propertyKeys) { - return types.map((type2) => OmitResolve(type2, propertyKeys)); -} -function FromProperty3(properties, key) { - const { [key]: _, ...R } = properties; - return R; -} -function FromProperties13(properties, propertyKeys) { - return propertyKeys.reduce((T, K2) => FromProperty3(T, K2), properties); -} -function FromObject3(type2, propertyKeys, properties) { - const options = Discard(type2, [TransformKind, "$id", "required", "properties"]); - const mappedProperties = FromProperties13(properties, propertyKeys); - return Object2(mappedProperties, options); -} -function UnionFromPropertyKeys(propertyKeys) { - const result = propertyKeys.reduce((result2, key) => IsLiteralValue(key) ? [...result2, Literal(key)] : result2, []); - return Union(result); -} -function OmitResolve(type2, propertyKeys) { - return IsIntersect(type2) ? Intersect(FromIntersect6(type2.allOf, propertyKeys)) : IsUnion(type2) ? Union(FromUnion8(type2.anyOf, propertyKeys)) : IsObject3(type2) ? FromObject3(type2, propertyKeys, type2.properties) : Object2({}); -} -function Omit(type2, key, options) { - const typeKey = IsArray(key) ? UnionFromPropertyKeys(key) : key; - const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key; - const isTypeRef = IsRef(type2); - const isKeyRef = IsRef(key); - return IsMappedResult(type2) ? OmitFromMappedResult(type2, propertyKeys, options) : IsMappedKey(key) ? OmitFromMappedKey(type2, key, options) : isTypeRef && isKeyRef ? Computed("Omit", [type2, typeKey], options) : !isTypeRef && isKeyRef ? Computed("Omit", [type2, typeKey], options) : isTypeRef && !isKeyRef ? Computed("Omit", [type2, typeKey], options) : CreateType({ ...OmitResolve(type2, propertyKeys), ...options }); -} - -// node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs -function FromPropertyKey2(type2, key, options) { - return { [key]: Omit(type2, [key], Clone(options)) }; -} -function FromPropertyKeys2(type2, propertyKeys, options) { - return propertyKeys.reduce((Acc, LK) => { - return { ...Acc, ...FromPropertyKey2(type2, LK, options) }; - }, {}); -} -function FromMappedKey3(type2, mappedKey, options) { - return FromPropertyKeys2(type2, mappedKey.keys, options); -} -function OmitFromMappedKey(type2, mappedKey, options) { - const properties = FromMappedKey3(type2, mappedKey, options); - return MappedResult(properties); -} - -// node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs -function FromProperties14(properties, propertyKeys, options) { - const result = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(properties)) - result[K2] = Pick(properties[K2], propertyKeys, Clone(options)); - return result; -} -function FromMappedResult10(mappedResult, propertyKeys, options) { - return FromProperties14(mappedResult.properties, propertyKeys, options); -} -function PickFromMappedResult(mappedResult, propertyKeys, options) { - const properties = FromMappedResult10(mappedResult, propertyKeys, options); - return MappedResult(properties); -} - -// node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs -function FromIntersect7(types, propertyKeys) { - return types.map((type2) => PickResolve(type2, propertyKeys)); -} -function FromUnion9(types, propertyKeys) { - return types.map((type2) => PickResolve(type2, propertyKeys)); -} -function FromProperties15(properties, propertyKeys) { - const result = {}; - for (const K2 of propertyKeys) - if (K2 in properties) - result[K2] = properties[K2]; - return result; -} -function FromObject4(Type2, keys, properties) { - const options = Discard(Type2, [TransformKind, "$id", "required", "properties"]); - const mappedProperties = FromProperties15(properties, keys); - return Object2(mappedProperties, options); -} -function UnionFromPropertyKeys2(propertyKeys) { - const result = propertyKeys.reduce((result2, key) => IsLiteralValue(key) ? [...result2, Literal(key)] : result2, []); - return Union(result); -} -function PickResolve(type2, propertyKeys) { - return IsIntersect(type2) ? Intersect(FromIntersect7(type2.allOf, propertyKeys)) : IsUnion(type2) ? Union(FromUnion9(type2.anyOf, propertyKeys)) : IsObject3(type2) ? FromObject4(type2, propertyKeys, type2.properties) : Object2({}); -} -function Pick(type2, key, options) { - const typeKey = IsArray(key) ? UnionFromPropertyKeys2(key) : key; - const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key; - const isTypeRef = IsRef(type2); - const isKeyRef = IsRef(key); - return IsMappedResult(type2) ? PickFromMappedResult(type2, propertyKeys, options) : IsMappedKey(key) ? PickFromMappedKey(type2, key, options) : isTypeRef && isKeyRef ? Computed("Pick", [type2, typeKey], options) : !isTypeRef && isKeyRef ? Computed("Pick", [type2, typeKey], options) : isTypeRef && !isKeyRef ? Computed("Pick", [type2, typeKey], options) : CreateType({ ...PickResolve(type2, propertyKeys), ...options }); -} - -// node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs -function FromPropertyKey3(type2, key, options) { - return { - [key]: Pick(type2, [key], Clone(options)) - }; -} -function FromPropertyKeys3(type2, propertyKeys, options) { - return propertyKeys.reduce((result, leftKey) => { - return { ...result, ...FromPropertyKey3(type2, leftKey, options) }; - }, {}); -} -function FromMappedKey4(type2, mappedKey, options) { - return FromPropertyKeys3(type2, mappedKey.keys, options); -} -function PickFromMappedKey(type2, mappedKey, options) { - const properties = FromMappedKey4(type2, mappedKey, options); - return MappedResult(properties); -} - -// node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs -function FromComputed3(target, parameters) { - return Computed("Partial", [Computed(target, parameters)]); -} -function FromRef3($ref) { - return Computed("Partial", [Ref($ref)]); -} -function FromProperties16(properties) { - const partialProperties = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(properties)) - partialProperties[K2] = Optional(properties[K2]); - return partialProperties; -} -function FromObject5(type2, properties) { - const options = Discard(type2, [TransformKind, "$id", "required", "properties"]); - const mappedProperties = FromProperties16(properties); - return Object2(mappedProperties, options); -} -function FromRest6(types) { - return types.map((type2) => PartialResolve(type2)); -} -function PartialResolve(type2) { - return ( - // Mappable - IsComputed(type2) ? FromComputed3(type2.target, type2.parameters) : IsRef(type2) ? FromRef3(type2.$ref) : IsIntersect(type2) ? Intersect(FromRest6(type2.allOf)) : IsUnion(type2) ? Union(FromRest6(type2.anyOf)) : IsObject3(type2) ? FromObject5(type2, type2.properties) : ( - // Intrinsic - IsBigInt3(type2) ? type2 : IsBoolean3(type2) ? type2 : IsInteger2(type2) ? type2 : IsLiteral(type2) ? type2 : IsNull3(type2) ? type2 : IsNumber3(type2) ? type2 : IsString3(type2) ? type2 : IsSymbol3(type2) ? type2 : IsUndefined3(type2) ? type2 : ( - // Passthrough - Object2({}) - ) - ) - ); -} -function Partial(type2, options) { - if (IsMappedResult(type2)) { - return PartialFromMappedResult(type2, options); - } else { - return CreateType({ ...PartialResolve(type2), ...options }); - } -} - -// node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs -function FromProperties17(K2, options) { - const Acc = {}; - for (const K22 of globalThis.Object.getOwnPropertyNames(K2)) - Acc[K22] = Partial(K2[K22], Clone(options)); - return Acc; -} -function FromMappedResult11(R, options) { - return FromProperties17(R.properties, options); -} -function PartialFromMappedResult(R, options) { - const P = FromMappedResult11(R, options); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/required/required.mjs -function FromComputed4(target, parameters) { - return Computed("Required", [Computed(target, parameters)]); -} -function FromRef4($ref) { - return Computed("Required", [Ref($ref)]); -} -function FromProperties18(properties) { - const requiredProperties = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(properties)) - requiredProperties[K2] = Discard(properties[K2], [OptionalKind]); - return requiredProperties; -} -function FromObject6(type2, properties) { - const options = Discard(type2, [TransformKind, "$id", "required", "properties"]); - const mappedProperties = FromProperties18(properties); - return Object2(mappedProperties, options); -} -function FromRest7(types) { - return types.map((type2) => RequiredResolve(type2)); -} -function RequiredResolve(type2) { - return ( - // Mappable - IsComputed(type2) ? FromComputed4(type2.target, type2.parameters) : IsRef(type2) ? FromRef4(type2.$ref) : IsIntersect(type2) ? Intersect(FromRest7(type2.allOf)) : IsUnion(type2) ? Union(FromRest7(type2.anyOf)) : IsObject3(type2) ? FromObject6(type2, type2.properties) : ( - // Intrinsic - IsBigInt3(type2) ? type2 : IsBoolean3(type2) ? type2 : IsInteger2(type2) ? type2 : IsLiteral(type2) ? type2 : IsNull3(type2) ? type2 : IsNumber3(type2) ? type2 : IsString3(type2) ? type2 : IsSymbol3(type2) ? type2 : IsUndefined3(type2) ? type2 : ( - // Passthrough - Object2({}) - ) - ) - ); -} -function Required(type2, options) { - if (IsMappedResult(type2)) { - return RequiredFromMappedResult(type2, options); - } else { - return CreateType({ ...RequiredResolve(type2), ...options }); - } -} - -// node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs -function FromProperties19(P, options) { - const Acc = {}; - for (const K2 of globalThis.Object.getOwnPropertyNames(P)) - Acc[K2] = Required(P[K2], options); - return Acc; -} -function FromMappedResult12(R, options) { - return FromProperties19(R.properties, options); -} -function RequiredFromMappedResult(R, options) { - const P = FromMappedResult12(R, options); - return MappedResult(P); -} - -// node_modules/@sinclair/typebox/build/esm/type/module/compute.mjs -function DereferenceParameters(moduleProperties, types) { - return types.map((type2) => { - return IsRef(type2) ? Dereference(moduleProperties, type2.$ref) : FromType2(moduleProperties, type2); - }); -} -function Dereference(moduleProperties, ref) { - return ref in moduleProperties ? IsRef(moduleProperties[ref]) ? Dereference(moduleProperties, moduleProperties[ref].$ref) : FromType2(moduleProperties, moduleProperties[ref]) : Never(); -} -function FromAwaited(parameters) { - return Awaited(parameters[0]); -} -function FromIndex(parameters) { - return Index(parameters[0], parameters[1]); -} -function FromKeyOf(parameters) { - return KeyOf(parameters[0]); -} -function FromPartial(parameters) { - return Partial(parameters[0]); -} -function FromOmit(parameters) { - return Omit(parameters[0], parameters[1]); -} -function FromPick(parameters) { - return Pick(parameters[0], parameters[1]); -} -function FromRequired(parameters) { - return Required(parameters[0]); -} -function FromComputed5(moduleProperties, target, parameters) { - const dereferenced = DereferenceParameters(moduleProperties, parameters); - return target === "Awaited" ? FromAwaited(dereferenced) : target === "Index" ? FromIndex(dereferenced) : target === "KeyOf" ? FromKeyOf(dereferenced) : target === "Partial" ? FromPartial(dereferenced) : target === "Omit" ? FromOmit(dereferenced) : target === "Pick" ? FromPick(dereferenced) : target === "Required" ? FromRequired(dereferenced) : Never(); -} -function FromArray6(moduleProperties, type2) { - return Array2(FromType2(moduleProperties, type2)); -} -function FromAsyncIterator3(moduleProperties, type2) { - return AsyncIterator(FromType2(moduleProperties, type2)); -} -function FromConstructor3(moduleProperties, parameters, instanceType) { - return Constructor(FromTypes2(moduleProperties, parameters), FromType2(moduleProperties, instanceType)); -} -function FromFunction3(moduleProperties, parameters, returnType) { - return Function(FromTypes2(moduleProperties, parameters), FromType2(moduleProperties, returnType)); -} -function FromIntersect8(moduleProperties, types) { - return Intersect(FromTypes2(moduleProperties, types)); -} -function FromIterator3(moduleProperties, type2) { - return Iterator(FromType2(moduleProperties, type2)); -} -function FromObject7(moduleProperties, properties) { - return Object2(globalThis.Object.keys(properties).reduce((result, key) => { - return { ...result, [key]: FromType2(moduleProperties, properties[key]) }; - }, {})); -} -function FromRecord3(moduleProperties, type2) { - const [value, pattern] = [FromType2(moduleProperties, RecordValue2(type2)), RecordPattern(type2)]; - const result = CloneType(type2); - result.patternProperties[pattern] = value; - return result; -} -function FromTransform(moduleProperties, transform2) { - return IsRef(transform2) ? { ...Dereference(moduleProperties, transform2.$ref), [TransformKind]: transform2[TransformKind] } : transform2; -} -function FromTuple5(moduleProperties, types) { - return Tuple(FromTypes2(moduleProperties, types)); -} -function FromUnion10(moduleProperties, types) { - return Union(FromTypes2(moduleProperties, types)); -} -function FromTypes2(moduleProperties, types) { - return types.map((type2) => FromType2(moduleProperties, type2)); -} -function FromType2(moduleProperties, type2) { - return ( - // Modifiers - IsOptional(type2) ? CreateType(FromType2(moduleProperties, Discard(type2, [OptionalKind])), type2) : IsReadonly(type2) ? CreateType(FromType2(moduleProperties, Discard(type2, [ReadonlyKind])), type2) : ( - // Transform - IsTransform(type2) ? CreateType(FromTransform(moduleProperties, type2), type2) : ( - // Types - IsArray3(type2) ? CreateType(FromArray6(moduleProperties, type2.items), type2) : IsAsyncIterator3(type2) ? CreateType(FromAsyncIterator3(moduleProperties, type2.items), type2) : IsComputed(type2) ? CreateType(FromComputed5(moduleProperties, type2.target, type2.parameters)) : IsConstructor(type2) ? CreateType(FromConstructor3(moduleProperties, type2.parameters, type2.returns), type2) : IsFunction3(type2) ? CreateType(FromFunction3(moduleProperties, type2.parameters, type2.returns), type2) : IsIntersect(type2) ? CreateType(FromIntersect8(moduleProperties, type2.allOf), type2) : IsIterator3(type2) ? CreateType(FromIterator3(moduleProperties, type2.items), type2) : IsObject3(type2) ? CreateType(FromObject7(moduleProperties, type2.properties), type2) : IsRecord(type2) ? CreateType(FromRecord3(moduleProperties, type2)) : IsTuple(type2) ? CreateType(FromTuple5(moduleProperties, type2.items || []), type2) : IsUnion(type2) ? CreateType(FromUnion10(moduleProperties, type2.anyOf), type2) : type2 - ) - ) - ); -} -function ComputeType(moduleProperties, key) { - return key in moduleProperties ? FromType2(moduleProperties, moduleProperties[key]) : Never(); -} -function ComputeModuleProperties(moduleProperties) { - return globalThis.Object.getOwnPropertyNames(moduleProperties).reduce((result, key) => { - return { ...result, [key]: ComputeType(moduleProperties, key) }; - }, {}); -} - -// node_modules/@sinclair/typebox/build/esm/type/module/module.mjs -var TModule = class { - constructor($defs) { - const computed = ComputeModuleProperties($defs); - const identified = this.WithIdentifiers(computed); - this.$defs = identified; - } - /** `[Json]` Imports a Type by Key. */ - Import(key, options) { - const $defs = { ...this.$defs, [key]: CreateType(this.$defs[key], options) }; - return CreateType({ [Kind]: "Import", $defs, $ref: key }); - } - // prettier-ignore - WithIdentifiers($defs) { - return globalThis.Object.getOwnPropertyNames($defs).reduce((result, key) => { - return { ...result, [key]: { ...$defs[key], $id: key } }; - }, {}); - } -}; -function Module(properties) { - return new TModule(properties); -} - -// node_modules/@sinclair/typebox/build/esm/type/not/not.mjs -function Not2(type2, options) { - return CreateType({ [Kind]: "Not", not: type2 }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs -function Parameters(schema, options) { - return IsFunction3(schema) ? Tuple(schema.parameters, options) : Never(); -} - -// node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs -var Ordinal = 0; -function Recursive(callback, options = {}) { - if (IsUndefined(options.$id)) - options.$id = `T${Ordinal++}`; - const thisType = CloneType(callback({ [Kind]: "This", $ref: `${options.$id}` })); - thisType.$id = options.$id; - return CreateType({ [Hint]: "Recursive", ...thisType }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs -function RegExp2(unresolved, options) { - const expr = IsString(unresolved) ? new globalThis.RegExp(unresolved) : unresolved; - return CreateType({ [Kind]: "RegExp", type: "RegExp", source: expr.source, flags: expr.flags }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs -function RestResolve(T) { - return IsIntersect(T) ? T.allOf : IsUnion(T) ? T.anyOf : IsTuple(T) ? T.items ?? [] : []; -} -function Rest(T) { - return RestResolve(T); -} - -// node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs -function ReturnType(schema, options) { - return IsFunction3(schema) ? CreateType(schema.returns, options) : Never(options); -} - -// node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs -var TransformDecodeBuilder = class { - constructor(schema) { - this.schema = schema; - } - Decode(decode) { - return new TransformEncodeBuilder(this.schema, decode); - } -}; -var TransformEncodeBuilder = class { - constructor(schema, decode) { - this.schema = schema; - this.decode = decode; - } - EncodeTransform(encode, schema) { - const Encode2 = (value) => schema[TransformKind].Encode(encode(value)); - const Decode2 = (value) => this.decode(schema[TransformKind].Decode(value)); - const Codec = { Encode: Encode2, Decode: Decode2 }; - return { ...schema, [TransformKind]: Codec }; - } - EncodeSchema(encode, schema) { - const Codec = { Decode: this.decode, Encode: encode }; - return { ...schema, [TransformKind]: Codec }; - } - Encode(encode) { - return IsTransform(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema); - } -}; -function Transform(schema) { - return new TransformDecodeBuilder(schema); -} - -// node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs -function Unsafe(options = {}) { - return CreateType({ [Kind]: options[Kind] ?? "Unsafe" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/void/void.mjs -function Void(options) { - return CreateType({ [Kind]: "Void", type: "void" }, options); -} - -// node_modules/@sinclair/typebox/build/esm/type/type/type.mjs -var type_exports3 = {}; -__export(type_exports3, { - Any: () => Any, - Argument: () => Argument, - Array: () => Array2, - AsyncIterator: () => AsyncIterator, - Awaited: () => Awaited, - BigInt: () => BigInt2, - Boolean: () => Boolean2, - Capitalize: () => Capitalize, - Composite: () => Composite, - Const: () => Const, - Constructor: () => Constructor, - ConstructorParameters: () => ConstructorParameters, - Date: () => Date2, - Enum: () => Enum, - Exclude: () => Exclude, - Extends: () => Extends, - Extract: () => Extract, - Function: () => Function, - Index: () => Index, - InstanceType: () => InstanceType, - Instantiate: () => Instantiate, - Integer: () => Integer, - Intersect: () => Intersect, - Iterator: () => Iterator, - KeyOf: () => KeyOf, - Literal: () => Literal, - Lowercase: () => Lowercase, - Mapped: () => Mapped, - Module: () => Module, - Never: () => Never, - Not: () => Not2, - Null: () => Null, - Number: () => Number2, - Object: () => Object2, - Omit: () => Omit, - Optional: () => Optional, - Parameters: () => Parameters, - Partial: () => Partial, - Pick: () => Pick, - Promise: () => Promise2, - Readonly: () => Readonly, - ReadonlyOptional: () => ReadonlyOptional, - Record: () => Record, - Recursive: () => Recursive, - Ref: () => Ref, - RegExp: () => RegExp2, - Required: () => Required, - Rest: () => Rest, - ReturnType: () => ReturnType, - String: () => String2, - Symbol: () => Symbol2, - TemplateLiteral: () => TemplateLiteral, - Transform: () => Transform, - Tuple: () => Tuple, - Uint8Array: () => Uint8Array2, - Uncapitalize: () => Uncapitalize, - Undefined: () => Undefined, - Union: () => Union, - Unknown: () => Unknown, - Unsafe: () => Unsafe, - Uppercase: () => Uppercase, - Void: () => Void -}); - -// node_modules/@sinclair/typebox/build/esm/type/type/index.mjs -var Type = type_exports3; - -// src/spec/common.ts -var AxisSpecSchema = Type.Object({ - label: Type.String(), - domain: Type.Optional(Type.Tuple([Type.Number(), Type.Number()])) -}); -var ReferenceLineSpecSchema = Type.Object({ - type: Type.Union([ - Type.Literal("identity"), - Type.Literal("horizontal"), - Type.Literal("vertical") - ]), - value: Type.Optional(Type.Number()) -}); -var BaseChartSpecSchema = Type.Object({ - schemaVersion: Type.Literal("1.0"), - title: Type.Optional(Type.String()), - xAxis: AxisSpecSchema, - yAxis: AxisSpecSchema, - references: Type.Optional(Type.Array(ReferenceLineSpecSchema)) -}); - -// src/spec/calibration.ts -var CalibrationDatumSchema = Type.Object({ - model: Type.String(), - population: Type.Optional(Type.String()), - horizon: Type.Optional(Type.Number()), - predicted: Type.Number({ minimum: 0, maximum: 1 }), - observed: Type.Number({ minimum: 0, maximum: 1 }), - method: Type.Union([Type.Literal("discrete"), Type.Literal("smooth")]), - events: Type.Optional(Type.Number({ minimum: 0 })), - total: Type.Optional(Type.Number({ minimum: 0 })) -}); -var CalibrationDistributionDatumSchema = Type.Object({ - model: Type.String(), - population: Type.Optional(Type.String()), - horizon: Type.Optional(Type.Number()), - midpoint: Type.Number({ minimum: 0, maximum: 1 }), - count: Type.Number({ minimum: 0 }), - binWidth: Type.Number({ exclusiveMinimum: 0, maximum: 1 }) -}); -var CalibrationSpecSchema = Type.Object({ - schemaVersion: Type.Literal("1.0"), - type: Type.Literal("calibration"), - data: Type.Array(CalibrationDatumSchema), - distribution: Type.Optional(Type.Array(CalibrationDistributionDatumSchema)), - x: Type.Literal("predicted"), - y: Type.Literal("observed"), - xAxis: AxisSpecSchema, - yAxis: AxisSpecSchema, - references: Type.Optional(Type.Array(ReferenceLineSpecSchema)) -}); - -// src/spec/roc.ts -var RocDatumSchema = Type.Object({ - model: Type.String(), - population: Type.Optional(Type.String()), - horizon: Type.Optional(Type.Number()), - cutoff: Type.Number(), - sensitivity: Type.Number({ minimum: 0, maximum: 1 }), - specificity: Type.Number({ minimum: 0, maximum: 1 }) -}); -var RocSpecSchema = Type.Object({ - schemaVersion: Type.Literal("1.0"), - type: Type.Literal("roc"), - data: Type.Array(RocDatumSchema), - x: Type.Literal("false_positive_rate"), - y: Type.Literal("sensitivity"), - xAxis: AxisSpecSchema, - yAxis: AxisSpecSchema, - references: Type.Optional(Type.Array(ReferenceLineSpecSchema)) -}); - -// src/spec/chart.ts -var RtichokeChartSpecSchema = Type.Union([ - RocSpecSchema, - CalibrationSpecSchema -], { - $id: "https://rtichoke.dev/schema/viz/1.0.json", - title: "rtichoke visualization specification" -}); - -// src/spec/v2/common.ts -var EvaluationSpecSchema = Type.Object({ - id: Type.String(), - model: Type.Optional(Type.String()), - population: Type.String(), - label: Type.Optional(Type.String()) -}); -var DisplayRoleSchema = Type.Union([ - Type.Literal("model"), - Type.Literal("population"), - Type.Literal("evaluation"), - Type.Literal("context") -]); -var DisplayGroupingSpecSchema = Type.Object({ - label: Type.String(), - group: Type.String(), - role: DisplayRoleSchema -}); -var SeriesSpecSchema = Type.Object({ - id: Type.String(), - evaluationId: Type.String(), - horizon: Type.Optional(Type.Number({ minimum: 0 })), - display: DisplayGroupingSpecSchema -}); -var ReferencePointSchema = Type.Object({ - x: Type.Number(), - y: Type.Number() -}); -var ReferenceGeometrySchema = Type.Union([ - Type.Object({ - type: Type.Literal("identity"), - label: Type.Optional(Type.String()) - }), - Type.Object({ - type: Type.Literal("horizontal"), - value: Type.Number(), - label: Type.Optional(Type.String()) - }), - Type.Object({ - type: Type.Literal("vertical"), - value: Type.Number(), - label: Type.Optional(Type.String()) - }), - Type.Object({ - type: Type.Literal("path"), - points: Type.Array(ReferencePointSchema, { minItems: 2 }), - label: Type.Optional(Type.String()) - }) -]); -var GlobalReferenceLineSpecSchema = Type.Intersect([ - ReferenceGeometrySchema, - Type.Object({ scope: Type.Literal("global") }) -]); -var PopulationReferenceLineSpecSchema = Type.Intersect([ - ReferenceGeometrySchema, - Type.Object({ - scope: Type.Literal("population"), - population: Type.String() - }) -]); -var PopulationHorizonReferenceLineSpecSchema = Type.Intersect([ - ReferenceGeometrySchema, - Type.Object({ - scope: Type.Literal("population_horizon"), - population: Type.String(), - horizon: Type.Number({ minimum: 0 }) - }) -]); -var ReferenceLineV2SpecSchema = Type.Union([ - GlobalReferenceLineSpecSchema, - PopulationReferenceLineSpecSchema, - PopulationHorizonReferenceLineSpecSchema -]); -var BaseChartV2SpecSchema = Type.Object({ - schemaVersion: Type.Literal("2.0"), - title: Type.Optional(Type.String()), - evaluations: Type.Array(EvaluationSpecSchema), - series: Type.Array(SeriesSpecSchema), - xAxis: AxisSpecSchema, - yAxis: AxisSpecSchema, - references: Type.Optional(Type.Array(ReferenceLineV2SpecSchema)) -}); -var OperatingPointDimensionSchema = Type.Union([ - Type.Literal("probability_threshold"), - Type.Literal("ppcr") -]); -var OperatingPointSpecSchema = Type.Object({ - operatingPoint: Type.Optional( - Type.Object({ - dimension: OperatingPointDimensionSchema - }) - ) -}); -var ThresholdOperatingPointSpecSchema = Type.Object({ - operatingPoint: Type.Optional( - Type.Object({ - dimension: Type.Literal("probability_threshold") - }) - ) -}); - -// src/spec/v2/calibration.ts -var DiscreteCalibrationV2DatumSchema = Type.Object({ - seriesId: Type.String(), - predicted: Type.Number({ minimum: 0, maximum: 1 }), - observed: Type.Number({ minimum: 0, maximum: 1 }), - method: Type.Literal("discrete"), - events: Type.Optional(Type.Number({ minimum: 0 })), - total: Type.Optional(Type.Number({ minimum: 0 })) -}); -var SmoothCalibrationV2DatumSchema = Type.Object({ - seriesId: Type.String(), - predicted: Type.Number({ minimum: 0, maximum: 1 }), - observed: Type.Number(), - method: Type.Literal("smooth"), - events: Type.Optional(Type.Number({ minimum: 0 })), - total: Type.Optional(Type.Number({ minimum: 0 })) -}); -var CalibrationV2DatumSchema = Type.Union([ - DiscreteCalibrationV2DatumSchema, - SmoothCalibrationV2DatumSchema -]); -var CalibrationV2DistributionDatumSchema = Type.Object({ - seriesId: Type.String(), - midpoint: Type.Number({ minimum: 0, maximum: 1 }), - count: Type.Number({ minimum: 0 }), - binWidth: Type.Number({ exclusiveMinimum: 0, maximum: 1 }) -}); -var CalibrationV2SpecSchema = Type.Intersect([ - BaseChartV2SpecSchema, - Type.Object({ - type: Type.Literal("calibration"), - data: Type.Array(CalibrationV2DatumSchema), - distribution: Type.Optional(Type.Array(CalibrationV2DistributionDatumSchema)), - x: Type.Literal("predicted"), - y: Type.Literal("observed") - }) -]); - -// src/spec/v2/decision-curve.ts -var DecisionCurveV2DatumSchema = Type.Object({ - seriesId: Type.String(), - threshold: Type.Number({ minimum: 0, maximum: 1 }), - netBenefit: Type.Number() -}); -var DecisionCurveV2EvaluationSchema = Type.Intersect([ - EvaluationSpecSchema, - Type.Object({ id: Type.String({ pattern: "^evaluation-[1-9][0-9]*$" }) }) -]); -var DecisionCurveV2SeriesSchema = Type.Intersect([ - SeriesSpecSchema, - Type.Object({ - id: Type.String({ pattern: "^series-[1-9][0-9]*$" }), - evaluationId: Type.String({ pattern: "^evaluation-[1-9][0-9]*$" }) - }) -]); -var TreatNoneReferenceSchema = Type.Object({ - type: Type.Literal("horizontal"), - value: Type.Literal(0), - label: Type.Optional(Type.String()), - scope: Type.Literal("global"), - benchmark: Type.Literal("treat_none") -}); -var TreatAllGeometry = { - type: Type.Literal("path"), - points: Type.Array( - Type.Object({ x: Type.Number(), y: Type.Number() }), - { minItems: 2 } - ), - label: Type.Optional(Type.String()), - benchmark: Type.Literal("treat_all") -}; -var TreatAllReferenceSchema = Type.Union([ - Type.Object({ - ...TreatAllGeometry, - scope: Type.Literal("population"), - population: Type.String() - }), - Type.Object({ - ...TreatAllGeometry, - scope: Type.Literal("population_horizon"), - population: Type.String(), - horizon: Type.Number({ minimum: 0 }) - }) -]); -var DecisionCurveV2ReferenceSchema = Type.Union([ - TreatNoneReferenceSchema, - TreatAllReferenceSchema -]); -var DecisionCurveV2SpecSchema = Type.Intersect([ - BaseChartV2SpecSchema, - ThresholdOperatingPointSpecSchema, - Type.Object({ - type: Type.Literal("decision_curve"), - evaluations: Type.Array(DecisionCurveV2EvaluationSchema, { minItems: 1 }), - series: Type.Array(DecisionCurveV2SeriesSchema, { minItems: 1 }), - data: Type.Array(DecisionCurveV2DatumSchema), - x: Type.Literal("threshold"), - y: Type.Literal("netBenefit"), - references: Type.Array(DecisionCurveV2ReferenceSchema, { minItems: 2 }) - }) -]); - -// src/spec/v2/gains.ts -var GainsV2DatumSchema = Type.Object({ - seriesId: Type.String(), - cutoff: Type.Number(), - ppcr: Type.Number({ minimum: 0, maximum: 1 }), - sensitivity: Type.Number({ minimum: 0, maximum: 1 }) -}); -var GainsV2SpecSchema = Type.Intersect([ - BaseChartV2SpecSchema, - OperatingPointSpecSchema, - Type.Object({ - type: Type.Literal("gains"), - data: Type.Array(GainsV2DatumSchema), - x: Type.Literal("ppcr"), - y: Type.Literal("sensitivity") - }) -]); - -// src/spec/v2/interventions-avoided.ts -var InterventionsAvoidedV2DatumSchema = Type.Object({ - seriesId: Type.String(), - threshold: Type.Number({ minimum: 0, maximum: 1 }), - interventionsAvoided: Type.Number() -}); -var InterventionsAvoidedV2EvaluationSchema = Type.Intersect([ - EvaluationSpecSchema, - Type.Object({ id: Type.String({ pattern: "^evaluation-[1-9][0-9]*$" }) }) -]); -var InterventionsAvoidedV2SeriesSchema = Type.Intersect([ - SeriesSpecSchema, - Type.Object({ - id: Type.String({ pattern: "^series-[1-9][0-9]*$" }), - evaluationId: Type.String({ pattern: "^evaluation-[1-9][0-9]*$" }) - }) -]); -var InterventionsAvoidedTreatAllReferenceSchema = Type.Object({ - type: Type.Literal("horizontal"), - value: Type.Literal(0), - label: Type.Optional(Type.String()), - scope: Type.Literal("global"), - benchmark: Type.Literal("treat_all") -}); -var TreatNoneGeometry = { - type: Type.Literal("path"), - points: Type.Array( - Type.Object({ x: Type.Number(), y: Type.Number() }), - { minItems: 2 } - ), - label: Type.Optional(Type.String()), - benchmark: Type.Literal("treat_none") -}; -var InterventionsAvoidedTreatNoneReferenceSchema = Type.Union([ - Type.Object({ - ...TreatNoneGeometry, - scope: Type.Literal("population"), - population: Type.String() - }), - Type.Object({ - ...TreatNoneGeometry, - scope: Type.Literal("population_horizon"), - population: Type.String(), - horizon: Type.Number({ minimum: 0 }) - }) -]); -var InterventionsAvoidedV2ReferenceSchema = Type.Union([ - InterventionsAvoidedTreatAllReferenceSchema, - InterventionsAvoidedTreatNoneReferenceSchema -]); -var InterventionsAvoidedV2SpecSchema = Type.Intersect([ - BaseChartV2SpecSchema, - ThresholdOperatingPointSpecSchema, - Type.Object({ - type: Type.Literal("interventions_avoided"), - evaluations: Type.Array(InterventionsAvoidedV2EvaluationSchema, { minItems: 1 }), - series: Type.Array(InterventionsAvoidedV2SeriesSchema, { minItems: 1 }), - data: Type.Array(InterventionsAvoidedV2DatumSchema), - x: Type.Literal("threshold"), - y: Type.Literal("interventionsAvoided"), - references: Type.Array(InterventionsAvoidedV2ReferenceSchema, { minItems: 2 }) - }) -]); - -// src/spec/v2/lift.ts -var LiftV2DatumSchema = Type.Object({ - seriesId: Type.String(), - cutoff: Type.Number(), - ppcr: Type.Number({ minimum: 0, maximum: 1 }), - lift: Type.Number() -}); -var LiftV2SpecSchema = Type.Intersect([ - BaseChartV2SpecSchema, - OperatingPointSpecSchema, - Type.Object({ - type: Type.Literal("lift"), - data: Type.Array(LiftV2DatumSchema), - x: Type.Literal("ppcr"), - y: Type.Literal("lift") - }) -]); - -// src/spec/v2/precision_recall.ts -var PrecisionRecallV2DatumSchema = Type.Object({ - seriesId: Type.String(), - cutoff: Type.Number(), - ppcr: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })), - sensitivity: Type.Number({ minimum: 0, maximum: 1 }), - ppv: Type.Number({ minimum: 0, maximum: 1 }) -}); -var PrecisionRecallV2SpecSchema = Type.Intersect([ - BaseChartV2SpecSchema, - OperatingPointSpecSchema, - Type.Object({ - type: Type.Literal("precision_recall"), - data: Type.Array(PrecisionRecallV2DatumSchema), - x: Type.Literal("sensitivity"), - y: Type.Literal("ppv") - }) -]); - -// src/spec/v2/roc.ts -var RocV2DatumSchema = Type.Object({ - seriesId: Type.String(), - cutoff: Type.Number(), - ppcr: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })), - sensitivity: Type.Number({ minimum: 0, maximum: 1 }), - specificity: Type.Number({ minimum: 0, maximum: 1 }) -}); -var RocV2SpecSchema = Type.Intersect([ - BaseChartV2SpecSchema, - OperatingPointSpecSchema, - Type.Object({ - type: Type.Literal("roc"), - data: Type.Array(RocV2DatumSchema), - x: Type.Literal("false_positive_rate"), - y: Type.Literal("sensitivity") - }) -]); - -// src/spec/v2/chart.ts -var RtichokeChartSpecV2Schema = Type.Union( - [ - RocV2SpecSchema, - CalibrationV2SpecSchema, - PrecisionRecallV2SpecSchema, - GainsV2SpecSchema, - LiftV2SpecSchema, - DecisionCurveV2SpecSchema, - InterventionsAvoidedV2SpecSchema - ], - { - $id: "https://rtichoke.dev/schema/viz/2.0.json", - title: "rtichoke visualization specification v2" - } -); - -// src/spec/v2/performance-table.ts -var PerformanceMetricIdSchema = Type.Union([ - Type.Literal("true_positives"), - Type.Literal("true_negatives"), - Type.Literal("false_positives"), - Type.Literal("false_negatives"), - Type.Literal("sensitivity"), - Type.Literal("specificity"), - Type.Literal("false_positive_rate"), - Type.Literal("ppv"), - Type.Literal("npv"), - Type.Literal("lift"), - Type.Literal("predicted_positives"), - Type.Literal("ppcr"), - Type.Literal("net_benefit"), - Type.Literal("net_benefit_interventions_avoided") -]); -var PerformanceMetricDefinitionSchema = Type.Object({ - id: PerformanceMetricIdSchema, - label: Type.String() -}); -var PerformanceMetricValueSchema = Type.Object({ - metricId: PerformanceMetricIdSchema, - estimate: Type.Union([Type.Number(), Type.Null()]), - lower: Type.Optional(Type.Union([Type.Number(), Type.Null()])), - upper: Type.Optional(Type.Union([Type.Number(), Type.Null()])) -}); -var OperatingPointSchema = Type.Union([ - Type.Object({ - type: Type.Literal("probability_threshold"), - value: Type.Number() - }), - Type.Object({ - type: Type.Literal("ppcr"), - value: Type.Number({ minimum: 0, maximum: 1 }) - }) -]); -var PerformanceEvaluationContextSchema = Type.Object({ - censoringHeuristic: Type.Optional(Type.String()), - competingEventHeuristic: Type.Optional(Type.String()) -}); -var PerformanceTableRowSchema = Type.Object({ - evaluationId: Type.String(), - horizon: Type.Optional(Type.Number({ minimum: 0 })), - operatingPoint: OperatingPointSchema, - context: Type.Optional(PerformanceEvaluationContextSchema), - values: Type.Array(PerformanceMetricValueSchema) -}); -var PerformanceTableSpecSchema = Type.Object({ - schemaVersion: Type.Literal("2.0"), - type: Type.Literal("performance_table"), - title: Type.Optional(Type.String()), - evaluations: Type.Array(EvaluationSpecSchema), - metrics: Type.Array(PerformanceMetricDefinitionSchema), - rows: Type.Array(PerformanceTableRowSchema) -}); - -// src/spec/v2/summary-metrics.ts -var PopulationSummaryOwnerSpecSchema = Type.Object({ - id: Type.String(), - label: Type.String() -}); -var AUROCSummaryMetricSchema = Type.Object({ - metric: Type.Literal("auroc"), - owner: Type.Object({ - type: Type.Literal("evaluation"), - evaluationId: Type.String() - }), - estimate: Type.Union([Type.Number(), Type.Null()]) -}); -var PrevalenceSummaryMetricSchema = Type.Object({ - metric: Type.Literal("prevalence"), - owner: Type.Object({ - type: Type.Literal("population"), - populationId: Type.String() - }), - estimate: Type.Union([Type.Number(), Type.Null()]) -}); -var EventRiskSummaryMetricSchema = Type.Object({ - metric: Type.Literal("event_risk"), - owner: Type.Object({ - type: Type.Literal("population"), - populationId: Type.String() - }), - horizon: Type.Number({ minimum: 0 }), - estimate: Type.Union([Type.Number(), Type.Null()]) -}); -var SummaryMetricV1_0Schema = Type.Union([ - AUROCSummaryMetricSchema, - PrevalenceSummaryMetricSchema -]); -var SummaryMetricV1_1Schema = Type.Union([ - AUROCSummaryMetricSchema, - PrevalenceSummaryMetricSchema, - EventRiskSummaryMetricSchema -]); -var SummaryMetricSchema = SummaryMetricV1_1Schema; -var SummaryMetricsSpecV1_0Schema = Type.Object({ - schemaVersion: Type.Literal("1.0"), - type: Type.Literal("summary_metrics"), - title: Type.Optional(Type.String()), - evaluations: Type.Array(EvaluationSpecSchema), - populations: Type.Array(PopulationSummaryOwnerSpecSchema), - metrics: Type.Array(SummaryMetricV1_0Schema) -}); -var SummaryMetricsSpecV1_1Schema = Type.Object({ - schemaVersion: Type.Literal("1.1"), - type: Type.Literal("summary_metrics"), - title: Type.Optional(Type.String()), - evaluations: Type.Array(EvaluationSpecSchema), - populations: Type.Array(PopulationSummaryOwnerSpecSchema), - metrics: Type.Array(SummaryMetricV1_1Schema) -}); -var SummaryMetricsSpecSchema = Type.Union( - [SummaryMetricsSpecV1_0Schema, SummaryMetricsSpecV1_1Schema], - { - $id: "https://rtichoke.dev/schema/viz/summary-metrics.json", - title: "rtichoke summary metrics specification" - } -); - -// src/spec/report.ts -var StandaloneCanonicalSpecSchema = Type.Union([ - RtichokeChartSpecV2Schema, - PerformanceTableSpecSchema, - SummaryMetricsSpecSchema -]); -var ReportComponentSchema = Type.Object({ - id: Type.String(), - title: Type.Optional(Type.String()), - spec: StandaloneCanonicalSpecSchema -}); -var ReportSpecV1_0Schema = Type.Object({ - schemaVersion: Type.Literal("1.0"), - type: Type.Literal("report"), - title: Type.Optional(Type.String()), - components: Type.Array(ReportComponentSchema, { minItems: 1 }) -}); -var ReportComponentV1_1Schema = Type.Object({ - type: Type.Literal("component"), - id: Type.String(), - title: Type.Optional(Type.String()), - spec: StandaloneCanonicalSpecSchema -}); -var ReportGroupSchema = Type.Object({ - type: Type.Literal("group"), - id: Type.String(), - title: Type.String(), - components: Type.Array(ReportComponentV1_1Schema, { minItems: 1 }) -}); -var ReportSectionSchema = Type.Object({ - id: Type.String(), - title: Type.String(), - items: Type.Array( - Type.Union([ReportComponentV1_1Schema, ReportGroupSchema]), - { minItems: 1 } - ) -}); -var ReportSpecV1_1Schema = Type.Object({ - schemaVersion: Type.Literal("1.1"), - type: Type.Literal("report"), - title: Type.Optional(Type.String()), - sections: Type.Array(ReportSectionSchema, { minItems: 1 }) -}); -var ReportSpecSchema = Type.Union( - [ReportSpecV1_0Schema, ReportSpecV1_1Schema], - { - $id: "https://rtichoke.dev/schema/viz/report.json", - title: "rtichoke report specification" - } -); - -// src/spec/validate-report.ts -function assertReportReferentialIntegrity(spec) { - const componentIds = /* @__PURE__ */ new Set(); - const assertUniqueComponent = (component) => { - if (componentIds.has(component.id)) { - throw new Error(`duplicate component id: ${component.id}`); - } - componentIds.add(component.id); - }; - if (spec.schemaVersion === "1.0") { - for (const component of spec.components) assertUniqueComponent(component); - return; - } - const sectionIds = /* @__PURE__ */ new Set(); - const groupIds = /* @__PURE__ */ new Set(); - for (const section of spec.sections) { - if (sectionIds.has(section.id)) { - throw new Error(`duplicate section id: ${section.id}`); - } - sectionIds.add(section.id); - for (const item of section.items) { - if (item.type === "component") { - assertUniqueComponent(item); - continue; - } - if (groupIds.has(item.id)) { - throw new Error(`duplicate group id: ${item.id}`); - } - groupIds.add(item.id); - for (const component of item.components) { - assertUniqueComponent(component); - } - } - } -} - -// src/spec/v2/validate-performance-table.ts -function assertPerformanceTableReferentialIntegrity(spec) { - const evaluationIds = /* @__PURE__ */ new Set(); - for (const evaluation of spec.evaluations) { - if (evaluationIds.has(evaluation.id)) { - throw new Error(`duplicate evaluation id: ${evaluation.id}`); - } - evaluationIds.add(evaluation.id); - } - const metricIds = /* @__PURE__ */ new Set(); - for (const metric of spec.metrics) { - if (metricIds.has(metric.id)) { - throw new Error(`duplicate metric id: ${metric.id}`); - } - metricIds.add(metric.id); - } - for (const row of spec.rows) { - if (!evaluationIds.has(row.evaluationId)) { - throw new Error(`unknown evaluation id: ${row.evaluationId}`); - } - for (const value of row.values) { - if (!metricIds.has(value.metricId)) { - throw new Error(`unknown metric id: ${value.metricId}`); - } - } - } -} - -// src/spec/v2/validate-summary-metrics.ts -function assertSummaryMetricsReferentialIntegrity(spec) { - const evaluationIds = /* @__PURE__ */ new Set(); - for (const evaluation of spec.evaluations) { - if (evaluationIds.has(evaluation.id)) { - throw new Error(`duplicate evaluation id: ${evaluation.id}`); - } - evaluationIds.add(evaluation.id); - } - const populationIds = /* @__PURE__ */ new Set(); - for (const population of spec.populations) { - if (populationIds.has(population.id)) { - throw new Error(`duplicate population id: ${population.id}`); - } - populationIds.add(population.id); - } - const seenMetrics = /* @__PURE__ */ new Set(); - for (const item of spec.metrics) { - if (item.estimate !== null && !Number.isFinite(item.estimate)) { - throw new Error(`non-finite metric estimate: ${item.estimate}`); - } - if ("horizon" in item && item.horizon !== void 0) { - if (!Number.isFinite(item.horizon) || item.horizon < 0) { - throw new Error(`invalid horizon: ${item.horizon}`); - } - } - if (item.metric === "auroc") { - if ("horizon" in item && item.horizon !== void 0) { - throw new Error("auroc metric cannot specify horizon"); - } - if (!evaluationIds.has(item.owner.evaluationId)) { - throw new Error(`unknown evaluation id: ${item.owner.evaluationId}`); - } - const key = `auroc:${item.owner.evaluationId}`; - if (seenMetrics.has(key)) { - throw new Error( - `duplicate metric ownership: auroc for evaluation ${item.owner.evaluationId}` - ); - } - seenMetrics.add(key); - } else if (item.metric === "prevalence") { - if ("horizon" in item && item.horizon !== void 0) { - throw new Error("prevalence metric cannot specify horizon"); - } - if (!populationIds.has(item.owner.populationId)) { - throw new Error(`unknown population id: ${item.owner.populationId}`); - } - const key = `prevalence:${item.owner.populationId}`; - if (seenMetrics.has(key)) { - throw new Error( - `duplicate metric ownership: prevalence for population ${item.owner.populationId}` - ); - } - seenMetrics.add(key); - } else if (item.metric === "event_risk") { - if (spec.schemaVersion !== "1.1") { - throw new Error( - `event_risk metric requires schemaVersion 1.1, got ${spec.schemaVersion}` - ); - } - if (!("horizon" in item) || item.horizon === void 0) { - throw new Error("event_risk metric requires horizon"); - } - if (!populationIds.has(item.owner.populationId)) { - throw new Error(`unknown population id: ${item.owner.populationId}`); - } - const key = `event_risk:${item.owner.populationId}:${item.horizon}`; - if (seenMetrics.has(key)) { - throw new Error( - `duplicate metric ownership: event_risk for population ${item.owner.populationId} at horizon ${item.horizon}` - ); - } - seenMetrics.add(key); - } - } -} - -// src/spec/v2/validate.ts -function assertV2ReferentialIntegrity(spec) { - const evaluationIds = new Set(spec.evaluations.map((evaluation) => evaluation.id)); - const seriesIds = /* @__PURE__ */ new Set(); - if (evaluationIds.size !== spec.evaluations.length) throw new Error("duplicate evaluation id"); - for (const series of spec.series) { - if (seriesIds.has(series.id)) throw new Error(`duplicate series id: ${series.id}`); - seriesIds.add(series.id); - if (!evaluationIds.has(series.evaluationId)) throw new Error(`unknown evaluation id: ${series.evaluationId}`); - } - for (const datum2 of spec.data) { - if (!seriesIds.has(datum2.seriesId)) throw new Error(`unknown series id: ${datum2.seriesId}`); - } - if (spec.type === "calibration") { - for (const datum2 of spec.distribution ?? []) { - if (!seriesIds.has(datum2.seriesId)) throw new Error(`unknown distribution series id: ${datum2.seriesId}`); - } - } - const populations = new Set(spec.evaluations.map((evaluation) => evaluation.population)); - for (const reference of spec.references ?? []) { - if ((reference.scope === "population" || reference.scope === "population_horizon") && !populations.has(reference.population)) { - throw new Error(`unknown reference population: ${reference.population}`); - } - } - if (spec.type === "decision_curve") { - const decisionCurve = spec; - const references = decisionCurve.references; - decisionCurve.evaluations.forEach((evaluation, index2) => { - const expectedId = `evaluation-${index2 + 1}`; - if (evaluation.id !== expectedId) throw new Error(`decision curve evaluation ids must be ordinal: expected ${expectedId}`); - }); - const horizonCount = decisionCurve.series.filter((series) => series.horizon !== void 0).length; - if (horizonCount !== 0 && horizonCount !== decisionCurve.series.length) { - throw new Error("decision curve cannot mix static and horizon-qualified series"); - } - const isTimeDependent = horizonCount > 0; - const horizons2 = [...new Set(decisionCurve.series.map((series) => series.horizon).filter((horizon) => horizon !== void 0))]; - const seriesCoverage = /* @__PURE__ */ new Set(); - decisionCurve.series.forEach((series, index2) => { - if (series.id !== `series-${index2 + 1}`) throw new Error(`decision curve series ids must be ordinal: expected series-${index2 + 1}`); - const evaluation = decisionCurve.evaluations.find((candidate) => candidate.id === series.evaluationId); - const expectedDisplay = evaluation.model ?? evaluation.population; - const expectedRole = evaluation.model === void 0 ? "population" : "model"; - if (series.display.label !== expectedDisplay || series.display.group !== expectedDisplay || series.display.role !== expectedRole) { - throw new Error("decision curve display must follow evaluation semantics"); - } - const coverageKey = `${series.evaluationId}\0${series.horizon ?? "static"}`; - if (seriesCoverage.has(coverageKey)) throw new Error(`duplicate decision curve evaluation-horizon series: ${series.evaluationId}`); - seriesCoverage.add(coverageKey); - }); - if (isTimeDependent) { - const complete = decisionCurve.evaluations.every( - (evaluation) => horizons2.every((horizon) => seriesCoverage.has(`${evaluation.id}\0${horizon}`)) - ); - if (!complete || decisionCurve.series.length !== decisionCurve.evaluations.length * horizons2.length) { - throw new Error("decision curve requires exactly one series per evaluation and horizon"); - } - } else if (decisionCurve.series.length !== decisionCurve.evaluations.length || decisionCurve.evaluations.some((evaluation) => !seriesCoverage.has(`${evaluation.id}\0static`))) { - throw new Error("decision curve requires exactly one series per evaluation"); - } - const treatNone = references.filter((reference) => "benchmark" in reference && reference.benchmark === "treat_none"); - if (treatNone.length !== 1) throw new Error("decision curve requires exactly one Treat None reference"); - const treatAll = references.filter( - (reference) => "benchmark" in reference && reference.benchmark === "treat_all" - ); - const treatAllOwners = /* @__PURE__ */ new Set(); - for (const reference of treatAll) { - if (isTimeDependent && reference.scope !== "population_horizon") { - throw new Error("time-dependent decision curve Treat All must use population_horizon scope"); - } - if (!isTimeDependent && reference.scope !== "population") { - throw new Error("static decision curve Treat All must use population scope"); - } - const owner = reference.scope === "population_horizon" ? `${reference.population}\0${reference.horizon}` : reference.population; - if (treatAllOwners.has(owner)) throw new Error(`duplicate Treat All owner: ${reference.population}`); - treatAllOwners.add(owner); - } - const expectedTreatAllOwners = isTimeDependent ? [...populations].flatMap((population) => horizons2.map((horizon) => `${population}\0${horizon}`)) : [...populations]; - if (treatAllOwners.size !== expectedTreatAllOwners.length || expectedTreatAllOwners.some((owner) => !treatAllOwners.has(owner))) { - throw new Error(isTimeDependent ? "decision curve requires exactly one Treat All reference per population and horizon" : "decision curve requires exactly one Treat All reference per population"); - } - } - if (spec.type === "interventions_avoided") { - const interventionsAvoided = spec; - const references = interventionsAvoided.references; - interventionsAvoided.evaluations.forEach((evaluation, index2) => { - const expectedId = `evaluation-${index2 + 1}`; - if (evaluation.id !== expectedId) throw new Error(`interventions avoided evaluation ids must be ordinal: expected ${expectedId}`); - }); - const horizonCount = interventionsAvoided.series.filter((series) => series.horizon !== void 0).length; - if (horizonCount !== 0 && horizonCount !== interventionsAvoided.series.length) { - throw new Error("interventions avoided cannot mix static and horizon-qualified series"); - } - const isTimeDependent = horizonCount > 0; - const horizons2 = [...new Set(interventionsAvoided.series.map((series) => series.horizon).filter((horizon) => horizon !== void 0))]; - const seriesCoverage = /* @__PURE__ */ new Set(); - interventionsAvoided.series.forEach((series, index2) => { - if (series.id !== `series-${index2 + 1}`) throw new Error(`interventions avoided series ids must be ordinal: expected series-${index2 + 1}`); - const evaluation = interventionsAvoided.evaluations.find((candidate) => candidate.id === series.evaluationId); - if (!evaluation) throw new Error(`unknown evaluation id: ${series.evaluationId}`); - const expectedDisplay = evaluation.model ?? evaluation.population; - const expectedRole = evaluation.model === void 0 ? "population" : "model"; - if (series.display.label !== expectedDisplay || series.display.group !== expectedDisplay || series.display.role !== expectedRole) { - throw new Error("interventions avoided display must follow evaluation semantics"); - } - const coverageKey = `${series.evaluationId}\0${series.horizon ?? "static"}`; - if (seriesCoverage.has(coverageKey)) throw new Error(`duplicate interventions avoided evaluation-horizon series: ${series.evaluationId}`); - seriesCoverage.add(coverageKey); - }); - if (isTimeDependent) { - const complete = interventionsAvoided.evaluations.every( - (evaluation) => horizons2.every((horizon) => seriesCoverage.has(`${evaluation.id}\0${horizon}`)) - ); - if (!complete || interventionsAvoided.series.length !== interventionsAvoided.evaluations.length * horizons2.length) { - throw new Error("interventions avoided requires exactly one series per evaluation and horizon"); - } - } else if (interventionsAvoided.series.length !== interventionsAvoided.evaluations.length || interventionsAvoided.evaluations.some((evaluation) => !seriesCoverage.has(`${evaluation.id}\0static`))) { - throw new Error("interventions avoided requires exactly one series per evaluation"); - } - const treatAll = references.filter( - (reference) => "benchmark" in reference && reference.benchmark === "treat_all" - ); - if (treatAll.length !== 1) throw new Error("interventions avoided requires exactly one Treat All reference"); - if (treatAll[0].scope !== "global" || treatAll[0].type !== "horizontal" || treatAll[0].value !== 0) { - throw new Error("interventions avoided Treat All must be the global zero reference"); - } - const treatNone = references.filter( - (reference) => "benchmark" in reference && reference.benchmark === "treat_none" - ); - const treatNoneOwners = /* @__PURE__ */ new Set(); - for (const reference of treatNone) { - if (isTimeDependent && reference.scope !== "population_horizon") { - throw new Error("time-dependent interventions avoided Treat None must use population_horizon scope"); - } - if (!isTimeDependent && reference.scope !== "population") { - throw new Error("static interventions avoided Treat None must use population scope"); - } - const owner = reference.scope === "population_horizon" ? `${reference.population}\0${reference.horizon}` : reference.population; - if (treatNoneOwners.has(owner)) throw new Error(`duplicate Treat None owner: ${reference.population}`); - treatNoneOwners.add(owner); - } - const expectedTreatNoneOwners = isTimeDependent ? [...populations].flatMap((population) => horizons2.map((horizon) => `${population}\0${horizon}`)) : [...populations]; - if (treatNoneOwners.size !== expectedTreatNoneOwners.length || expectedTreatNoneOwners.some((owner) => !treatNoneOwners.has(owner))) { - throw new Error(isTimeDependent ? "interventions avoided requires exactly one Treat None reference per population and horizon" : "interventions avoided requires exactly one Treat None reference per population"); - } - } -} - -// src/adapters/roc.ts -function buildRocSpec(data) { - return { - schemaVersion: "1.0", - type: "roc", - data, - x: "false_positive_rate", - y: "sensitivity", - xAxis: { label: "1 - Specificity", domain: [0, 1] }, - yAxis: { label: "Sensitivity", domain: [0, 1] }, - references: [{ type: "identity" }] - }; -} -function rocSpecFromRtichokeR(rows) { - return buildRocSpec( - rows.map((row) => ({ - model: row.model, - cutoff: row.probability_threshold, - sensitivity: row.sensitivity, - specificity: row.specificity - })) - ); -} -function rocSpecFromRtichokePython(rows) { - return buildRocSpec( - rows.map((row) => ({ - model: row.reference_group, - cutoff: row.chosen_cutoff, - sensitivity: row.sensitivity, - specificity: row.specificity - })) - ); -} - -// src/adapters/calibration.ts -function calibrationSpecFromRtichokeRows(rows, method, distributionRows) { - const data = rows.map((row) => { - const events = row.sum_reals ?? row.n_reals; - const total = row.total_obs ?? row.n; - return { - model: row.reference_group, - predicted: row.x, - observed: row.y, - method, - ...method === "discrete" && events !== void 0 ? { events } : {}, - ...method === "discrete" && total !== void 0 ? { total } : {} - }; - }); - const distribution = distributionRows?.map((row) => ({ - model: row.reference_group, - midpoint: row.mids, - count: row.counts, - binWidth: 0.01 - })); - return { - schemaVersion: "1.0", - type: "calibration", - data, - ...distribution ? { distribution } : {}, - x: "predicted", - y: "observed", - xAxis: { label: "Predicted probability", domain: [0, 1] }, - yAxis: { label: "Observed probability", domain: [0, 1] }, - references: [{ type: "identity" }] - }; -} - -// src/adapters/v2.ts -function identityForGroup(group2, context) { - const population = context.role === "model" ? context.population ?? "population" : group2; - const evaluationId = `evaluation:${group2}`; - return { - evaluation: { - id: evaluationId, - ...context.role === "model" ? { model: group2 } : {}, - population, - label: group2 - }, - series: { - id: `series:${group2}`, - evaluationId, - display: { label: group2, group: group2, role: context.role } - } - }; -} -function identities(groups2, context) { - const unique = [...new Set(groups2)]; - return unique.map((group2) => identityForGroup(group2, context)); -} -function rocV2SpecFromRtichokeR(rows, population = "population") { - const byGroup = identities(rows.map((row) => row.model), { role: "model", population }); - return { - schemaVersion: "2.0", - type: "roc", - evaluations: byGroup.map((item) => item.evaluation), - series: byGroup.map((item) => item.series), - data: rows.map((row) => ({ - seriesId: `series:${row.model}`, - cutoff: row.probability_threshold, - sensitivity: row.sensitivity, - specificity: row.specificity - })), - x: "false_positive_rate", - y: "sensitivity", - xAxis: { label: "1 - Specificity", domain: [0, 1] }, - yAxis: { label: "Sensitivity", domain: [0, 1] }, - references: [{ type: "identity", scope: "global", label: "Random Guess" }] - }; -} -function rocV2SpecFromRtichokePython(rows, context) { - const byGroup = identities(rows.map((row) => row.reference_group), context); - return { - schemaVersion: "2.0", - type: "roc", - evaluations: byGroup.map((item) => item.evaluation), - series: byGroup.map((item) => item.series), - data: rows.map((row) => ({ - seriesId: `series:${row.reference_group}`, - cutoff: row.chosen_cutoff, - sensitivity: row.sensitivity, - specificity: row.specificity - })), - x: "false_positive_rate", - y: "sensitivity", - xAxis: { label: "1 - Specificity", domain: [0, 1] }, - yAxis: { label: "Sensitivity", domain: [0, 1] }, - references: [{ type: "identity", scope: "global", label: "Random Guess" }] - }; -} -function calibrationV2SpecFromRtichokeRows(rows, method, context, distributionRows) { - const byGroup = identities(rows.map((row) => row.reference_group), context); - const observedValues = rows.map((row) => row.y).filter(Number.isFinite); - const minY = Math.min(0, ...observedValues); - const maxY = Math.max(1, ...observedValues); - return { - schemaVersion: "2.0", - type: "calibration", - evaluations: byGroup.map((item) => item.evaluation), - series: byGroup.map((item) => item.series), - data: rows.map((row) => { - const events = row.sum_reals ?? row.n_reals; - const total = row.total_obs ?? row.n; - return { - seriesId: `series:${row.reference_group}`, - predicted: row.x, - observed: row.y, - method, - ...method === "discrete" && events !== void 0 ? { events } : {}, - ...method === "discrete" && total !== void 0 ? { total } : {} - }; - }), - ...distributionRows ? { - distribution: distributionRows.map((row) => ({ - seriesId: `series:${row.reference_group}`, - midpoint: row.mids, - count: row.counts, - binWidth: 0.01 - })) - } : {}, - x: "predicted", - y: "observed", - xAxis: { label: "Predicted probability", domain: [0, 1] }, - yAxis: { label: "Observed probability", domain: [minY, maxY] }, - references: [{ type: "identity", scope: "global", label: "Perfectly Calibrated" }] - }; -} - -// node_modules/d3-array/src/ascending.js -function ascending(a2, b) { - return a2 == null || b == null ? NaN : a2 < b ? -1 : a2 > b ? 1 : a2 >= b ? 0 : NaN; -} - -// node_modules/d3-array/src/descending.js -function descending(a2, b) { - return a2 == null || b == null ? NaN : b < a2 ? -1 : b > a2 ? 1 : b >= a2 ? 0 : NaN; -} - -// node_modules/d3-array/src/bisector.js -function bisector(f) { - let compare1, compare2, delta; - if (f.length !== 2) { - compare1 = ascending; - compare2 = (d, x2) => ascending(f(d), x2); - delta = (d, x2) => f(d) - x2; - } else { - compare1 = f === ascending || f === descending ? f : zero; - compare2 = f; - delta = f; - } - function left2(a2, x2, lo = 0, hi = a2.length) { - if (lo < hi) { - if (compare1(x2, x2) !== 0) return hi; - do { - const mid2 = lo + hi >>> 1; - if (compare2(a2[mid2], x2) < 0) lo = mid2 + 1; - else hi = mid2; - } while (lo < hi); - } - return lo; - } - function right2(a2, x2, lo = 0, hi = a2.length) { - if (lo < hi) { - if (compare1(x2, x2) !== 0) return hi; - do { - const mid2 = lo + hi >>> 1; - if (compare2(a2[mid2], x2) <= 0) lo = mid2 + 1; - else hi = mid2; - } while (lo < hi); - } - return lo; - } - function center2(a2, x2, lo = 0, hi = a2.length) { - const i = left2(a2, x2, lo, hi - 1); - return i > lo && delta(a2[i - 1], x2) > -delta(a2[i], x2) ? i - 1 : i; - } - return { left: left2, center: center2, right: right2 }; -} -function zero() { - return 0; -} - -// node_modules/d3-array/src/number.js -function number(x2) { - return x2 === null ? NaN : +x2; -} -function* numbers(values2, valueof2) { - if (valueof2 === void 0) { - for (let value of values2) { - if (value != null && (value = +value) >= value) { - yield value; - } - } - } else { - let index2 = -1; - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null && (value = +value) >= value) { - yield value; - } - } - } -} - -// node_modules/d3-array/src/bisect.js -var ascendingBisect = bisector(ascending); -var bisectRight = ascendingBisect.right; -var bisectLeft = ascendingBisect.left; -var bisectCenter = bisector(number).center; -var bisect_default = bisectRight; - -// node_modules/d3-array/src/cross.js -function length(array2) { - return array2.length | 0; -} -function empty(length3) { - return !(length3 > 0); -} -function arrayify(values2) { - return typeof values2 !== "object" || "length" in values2 ? values2 : Array.from(values2); -} -function reducer(reduce) { - return (values2) => reduce(...values2); -} -function cross(...values2) { - const reduce = typeof values2[values2.length - 1] === "function" && reducer(values2.pop()); - values2 = values2.map(arrayify); - const lengths = values2.map(length); - const j = values2.length - 1; - const index2 = new Array(j + 1).fill(0); - const product = []; - if (j < 0 || lengths.some(empty)) return product; - while (true) { - product.push(index2.map((j2, i2) => values2[i2][j2])); - let i = j; - while (++index2[i] === lengths[i]) { - if (i === 0) return reduce ? product.map(reduce) : product; - index2[i--] = 0; - } - } -} - -// node_modules/d3-array/src/cumsum.js -function cumsum(values2, valueof2) { - var sum2 = 0, index2 = 0; - return Float64Array.from(values2, valueof2 === void 0 ? (v) => sum2 += +v || 0 : (v) => sum2 += +valueof2(v, index2++, values2) || 0); -} - -// node_modules/d3-array/src/variance.js -function variance(values2, valueof2) { - let count = 0; - let delta; - let mean2 = 0; - let sum2 = 0; - if (valueof2 === void 0) { - for (let value of values2) { - if (value != null && (value = +value) >= value) { - delta = value - mean2; - mean2 += delta / ++count; - sum2 += delta * (value - mean2); - } - } - } else { - let index2 = -1; - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null && (value = +value) >= value) { - delta = value - mean2; - mean2 += delta / ++count; - sum2 += delta * (value - mean2); - } - } - } - if (count > 1) return sum2 / (count - 1); -} - -// node_modules/d3-array/src/deviation.js -function deviation(values2, valueof2) { - const v = variance(values2, valueof2); - return v ? Math.sqrt(v) : v; -} - -// node_modules/d3-array/src/extent.js -function extent(values2, valueof2) { - let min4; - let max3; - if (valueof2 === void 0) { - for (const value of values2) { - if (value != null) { - if (min4 === void 0) { - if (value >= value) min4 = max3 = value; - } else { - if (min4 > value) min4 = value; - if (max3 < value) max3 = value; - } - } - } - } else { - let index2 = -1; - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null) { - if (min4 === void 0) { - if (value >= value) min4 = max3 = value; - } else { - if (min4 > value) min4 = value; - if (max3 < value) max3 = value; - } - } - } - } - return [min4, max3]; -} - -// node_modules/d3-array/src/fsum.js -var Adder = class { - constructor() { - this._partials = new Float64Array(32); - this._n = 0; - } - add(x2) { - const p = this._partials; - let i = 0; - for (let j = 0; j < this._n && j < 32; j++) { - const y2 = p[j], hi = x2 + y2, lo = Math.abs(x2) < Math.abs(y2) ? x2 - (hi - y2) : y2 - (hi - x2); - if (lo) p[i++] = lo; - x2 = hi; - } - p[i] = x2; - this._n = i + 1; - return this; - } - valueOf() { - const p = this._partials; - let n = this._n, x2, y2, lo, hi = 0; - if (n > 0) { - hi = p[--n]; - while (n > 0) { - x2 = hi; - y2 = p[--n]; - hi = x2 + y2; - lo = y2 - (hi - x2); - if (lo) break; - } - if (n > 0 && (lo < 0 && p[n - 1] < 0 || lo > 0 && p[n - 1] > 0)) { - y2 = lo * 2; - x2 = hi + y2; - if (y2 == x2 - hi) hi = x2; - } - } - return hi; - } -}; - -// node_modules/internmap/src/index.js -var InternMap = class extends Map { - constructor(entries, key = keyof) { - super(); - Object.defineProperties(this, { _intern: { value: /* @__PURE__ */ new Map() }, _key: { value: key } }); - if (entries != null) for (const [key2, value] of entries) this.set(key2, value); - } - get(key) { - return super.get(intern_get(this, key)); - } - has(key) { - return super.has(intern_get(this, key)); - } - set(key, value) { - return super.set(intern_set(this, key), value); - } - delete(key) { - return super.delete(intern_delete(this, key)); - } -}; -var InternSet = class extends Set { - constructor(values2, key = keyof) { - super(); - Object.defineProperties(this, { _intern: { value: /* @__PURE__ */ new Map() }, _key: { value: key } }); - if (values2 != null) for (const value of values2) this.add(value); - } - has(value) { - return super.has(intern_get(this, value)); - } - add(value) { - return super.add(intern_set(this, value)); - } - delete(value) { - return super.delete(intern_delete(this, value)); - } -}; -function intern_get({ _intern, _key }, value) { - const key = _key(value); - return _intern.has(key) ? _intern.get(key) : value; -} -function intern_set({ _intern, _key }, value) { - const key = _key(value); - if (_intern.has(key)) return _intern.get(key); - _intern.set(key, value); - return value; -} -function intern_delete({ _intern, _key }, value) { - const key = _key(value); - if (_intern.has(key)) { - value = _intern.get(key); - _intern.delete(key); - } - return value; -} -function keyof(value) { - return value !== null && typeof value === "object" ? value.valueOf() : value; -} - -// node_modules/d3-array/src/identity.js -function identity(x2) { - return x2; -} - -// node_modules/d3-array/src/group.js -function group(values2, ...keys) { - return nest(values2, identity, identity, keys); -} -function rollup(values2, reduce, ...keys) { - return nest(values2, identity, reduce, keys); -} -function rollups(values2, reduce, ...keys) { - return nest(values2, Array.from, reduce, keys); -} -function nest(values2, map5, reduce, keys) { - return (function regroup(values3, i) { - if (i >= keys.length) return reduce(values3); - const groups2 = new InternMap(); - const keyof3 = keys[i++]; - let index2 = -1; - for (const value of values3) { - const key = keyof3(value, ++index2, values3); - const group2 = groups2.get(key); - if (group2) group2.push(value); - else groups2.set(key, [value]); - } - for (const [key, values4] of groups2) { - groups2.set(key, regroup(values4, i)); - } - return map5(groups2); - })(values2, 0); -} - -// node_modules/d3-array/src/permute.js -function permute(source, keys) { - return Array.from(keys, (key) => source[key]); -} - -// node_modules/d3-array/src/sort.js -function sort(values2, ...F) { - if (typeof values2[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - values2 = Array.from(values2); - let [f] = F; - if (f && f.length !== 2 || F.length > 1) { - const index2 = Uint32Array.from(values2, (d, i) => i); - if (F.length > 1) { - F = F.map((f2) => values2.map(f2)); - index2.sort((i, j) => { - for (const f2 of F) { - const c4 = ascendingDefined(f2[i], f2[j]); - if (c4) return c4; - } - }); - } else { - f = values2.map(f); - index2.sort((i, j) => ascendingDefined(f[i], f[j])); - } - return permute(values2, index2); - } - return values2.sort(compareDefined(f)); -} -function compareDefined(compare = ascending) { - if (compare === ascending) return ascendingDefined; - if (typeof compare !== "function") throw new TypeError("compare is not a function"); - return (a2, b) => { - const x2 = compare(a2, b); - if (x2 || x2 === 0) return x2; - return (compare(b, b) === 0) - (compare(a2, a2) === 0); - }; -} -function ascendingDefined(a2, b) { - return (a2 == null || !(a2 >= a2)) - (b == null || !(b >= b)) || (a2 < b ? -1 : a2 > b ? 1 : 0); -} - -// node_modules/d3-array/src/groupSort.js -function groupSort(values2, reduce, key) { - return (reduce.length !== 2 ? sort(rollup(values2, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk))) : sort(group(values2, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk)))).map(([key2]) => key2); -} - -// node_modules/d3-array/src/ticks.js -var e10 = Math.sqrt(50); -var e5 = Math.sqrt(10); -var e2 = Math.sqrt(2); -function tickSpec(start2, stop, count) { - const step = (stop - start2) / Math.max(0, count), power = Math.floor(Math.log10(step)), error = step / Math.pow(10, power), factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1; - let i1, i2, inc; - if (power < 0) { - inc = Math.pow(10, -power) / factor; - i1 = Math.round(start2 * inc); - i2 = Math.round(stop * inc); - if (i1 / inc < start2) ++i1; - if (i2 / inc > stop) --i2; - inc = -inc; - } else { - inc = Math.pow(10, power) * factor; - i1 = Math.round(start2 / inc); - i2 = Math.round(stop / inc); - if (i1 * inc < start2) ++i1; - if (i2 * inc > stop) --i2; - } - if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start2, stop, count * 2); - return [i1, i2, inc]; -} -function ticks(start2, stop, count) { - stop = +stop, start2 = +start2, count = +count; - if (!(count > 0)) return []; - if (start2 === stop) return [start2]; - const reverse2 = stop < start2, [i1, i2, inc] = reverse2 ? tickSpec(stop, start2, count) : tickSpec(start2, stop, count); - if (!(i2 >= i1)) return []; - const n = i2 - i1 + 1, ticks2 = new Array(n); - if (reverse2) { - if (inc < 0) for (let i = 0; i < n; ++i) ticks2[i] = (i2 - i) / -inc; - else for (let i = 0; i < n; ++i) ticks2[i] = (i2 - i) * inc; - } else { - if (inc < 0) for (let i = 0; i < n; ++i) ticks2[i] = (i1 + i) / -inc; - else for (let i = 0; i < n; ++i) ticks2[i] = (i1 + i) * inc; - } - return ticks2; -} -function tickIncrement(start2, stop, count) { - stop = +stop, start2 = +start2, count = +count; - return tickSpec(start2, stop, count)[2]; -} -function tickStep(start2, stop, count) { - stop = +stop, start2 = +start2, count = +count; - const reverse2 = stop < start2, inc = reverse2 ? tickIncrement(stop, start2, count) : tickIncrement(start2, stop, count); - return (reverse2 ? -1 : 1) * (inc < 0 ? 1 / -inc : inc); -} - -// node_modules/d3-array/src/max.js -function max(values2, valueof2) { - let max3; - if (valueof2 === void 0) { - for (const value of values2) { - if (value != null && (max3 < value || max3 === void 0 && value >= value)) { - max3 = value; - } - } - } else { - let index2 = -1; - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null && (max3 < value || max3 === void 0 && value >= value)) { - max3 = value; - } - } - } - return max3; -} - -// node_modules/d3-array/src/maxIndex.js -function maxIndex(values2, valueof2) { - let max3; - let maxIndex2 = -1; - let index2 = -1; - if (valueof2 === void 0) { - for (const value of values2) { - ++index2; - if (value != null && (max3 < value || max3 === void 0 && value >= value)) { - max3 = value, maxIndex2 = index2; - } - } - } else { - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null && (max3 < value || max3 === void 0 && value >= value)) { - max3 = value, maxIndex2 = index2; - } - } - } - return maxIndex2; -} - -// node_modules/d3-array/src/min.js -function min(values2, valueof2) { - let min4; - if (valueof2 === void 0) { - for (const value of values2) { - if (value != null && (min4 > value || min4 === void 0 && value >= value)) { - min4 = value; - } - } - } else { - let index2 = -1; - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null && (min4 > value || min4 === void 0 && value >= value)) { - min4 = value; - } - } - } - return min4; -} - -// node_modules/d3-array/src/minIndex.js -function minIndex(values2, valueof2) { - let min4; - let minIndex2 = -1; - let index2 = -1; - if (valueof2 === void 0) { - for (const value of values2) { - ++index2; - if (value != null && (min4 > value || min4 === void 0 && value >= value)) { - min4 = value, minIndex2 = index2; - } - } - } else { - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null && (min4 > value || min4 === void 0 && value >= value)) { - min4 = value, minIndex2 = index2; - } - } - } - return minIndex2; -} - -// node_modules/d3-array/src/quickselect.js -function quickselect(array2, k2, left2 = 0, right2 = Infinity, compare) { - k2 = Math.floor(k2); - left2 = Math.floor(Math.max(0, left2)); - right2 = Math.floor(Math.min(array2.length - 1, right2)); - if (!(left2 <= k2 && k2 <= right2)) return array2; - compare = compare === void 0 ? ascendingDefined : compareDefined(compare); - while (right2 > left2) { - if (right2 - left2 > 600) { - const n = right2 - left2 + 1; - const m = k2 - left2 + 1; - const z = Math.log(n); - const s2 = 0.5 * Math.exp(2 * z / 3); - const sd = 0.5 * Math.sqrt(z * s2 * (n - s2) / n) * (m - n / 2 < 0 ? -1 : 1); - const newLeft = Math.max(left2, Math.floor(k2 - m * s2 / n + sd)); - const newRight = Math.min(right2, Math.floor(k2 + (n - m) * s2 / n + sd)); - quickselect(array2, k2, newLeft, newRight, compare); - } - const t = array2[k2]; - let i = left2; - let j = right2; - swap(array2, left2, k2); - if (compare(array2[right2], t) > 0) swap(array2, left2, right2); - while (i < j) { - swap(array2, i, j), ++i, --j; - while (compare(array2[i], t) < 0) ++i; - while (compare(array2[j], t) > 0) --j; - } - if (compare(array2[left2], t) === 0) swap(array2, left2, j); - else ++j, swap(array2, j, right2); - if (j <= k2) left2 = j + 1; - if (k2 <= j) right2 = j - 1; - } - return array2; -} -function swap(array2, i, j) { - const t = array2[i]; - array2[i] = array2[j]; - array2[j] = t; -} - -// node_modules/d3-array/src/greatest.js -function greatest(values2, compare = ascending) { - let max3; - let defined2 = false; - if (compare.length === 1) { - let maxValue; - for (const element of values2) { - const value = compare(element); - if (defined2 ? ascending(value, maxValue) > 0 : ascending(value, value) === 0) { - max3 = element; - maxValue = value; - defined2 = true; - } - } - } else { - for (const value of values2) { - if (defined2 ? compare(value, max3) > 0 : compare(value, value) === 0) { - max3 = value; - defined2 = true; - } - } - } - return max3; -} - -// node_modules/d3-array/src/quantile.js -function quantile(values2, p, valueof2) { - values2 = Float64Array.from(numbers(values2, valueof2)); - if (!(n = values2.length) || isNaN(p = +p)) return; - if (p <= 0 || n < 2) return min(values2); - if (p >= 1) return max(values2); - var n, i = (n - 1) * p, i0 = Math.floor(i), value0 = max(quickselect(values2, i0).subarray(0, i0 + 1)), value1 = min(values2.subarray(i0 + 1)); - return value0 + (value1 - value0) * (i - i0); -} -function quantileSorted(values2, p, valueof2 = number) { - if (!(n = values2.length) || isNaN(p = +p)) return; - if (p <= 0 || n < 2) return +valueof2(values2[0], 0, values2); - if (p >= 1) return +valueof2(values2[n - 1], n - 1, values2); - var n, i = (n - 1) * p, i0 = Math.floor(i), value0 = +valueof2(values2[i0], i0, values2), value1 = +valueof2(values2[i0 + 1], i0 + 1, values2); - return value0 + (value1 - value0) * (i - i0); -} - -// node_modules/d3-array/src/mean.js -function mean(values2, valueof2) { - let count = 0; - let sum2 = 0; - if (valueof2 === void 0) { - for (let value of values2) { - if (value != null && (value = +value) >= value) { - ++count, sum2 += value; - } - } - } else { - let index2 = -1; - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null && (value = +value) >= value) { - ++count, sum2 += value; - } - } - } - if (count) return sum2 / count; -} - -// node_modules/d3-array/src/median.js -function median(values2, valueof2) { - return quantile(values2, 0.5, valueof2); -} - -// node_modules/d3-array/src/merge.js -function* flatten(arrays) { - for (const array2 of arrays) { - yield* array2; - } -} -function merge(arrays) { - return Array.from(flatten(arrays)); -} - -// node_modules/d3-array/src/mode.js -function mode(values2, valueof2) { - const counts = new InternMap(); - if (valueof2 === void 0) { - for (let value of values2) { - if (value != null && value >= value) { - counts.set(value, (counts.get(value) || 0) + 1); - } - } - } else { - let index2 = -1; - for (let value of values2) { - if ((value = valueof2(value, ++index2, values2)) != null && value >= value) { - counts.set(value, (counts.get(value) || 0) + 1); - } - } - } - let modeValue; - let modeCount = 0; - for (const [value, count] of counts) { - if (count > modeCount) { - modeCount = count; - modeValue = value; - } - } - return modeValue; -} - -// node_modules/d3-array/src/pairs.js -function pairs(values2, pairof = pair) { - const pairs2 = []; - let previous; - let first2 = false; - for (const value of values2) { - if (first2) pairs2.push(pairof(previous, value)); - previous = value; - first2 = true; - } - return pairs2; -} -function pair(a2, b) { - return [a2, b]; -} - -// node_modules/d3-array/src/range.js -function range(start2, stop, step) { - start2 = +start2, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start2, start2 = 0, 1) : n < 3 ? 1 : +step; - var i = -1, n = Math.max(0, Math.ceil((stop - start2) / step)) | 0, range3 = new Array(n); - while (++i < n) { - range3[i] = start2 + i * step; - } - return range3; -} - -// node_modules/d3-array/src/sum.js -function sum(values2, valueof2) { - let sum2 = 0; - if (valueof2 === void 0) { - for (let value of values2) { - if (value = +value) { - sum2 += value; - } - } - } else { - let index2 = -1; - for (let value of values2) { - if (value = +valueof2(value, ++index2, values2)) { - sum2 += value; - } - } - } - return sum2; -} - -// node_modules/d3-array/src/reverse.js -function reverse(values2) { - if (typeof values2[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - return Array.from(values2).reverse(); -} - -// node_modules/d3-axis/src/identity.js -function identity_default(x2) { - return x2; -} - -// node_modules/d3-axis/src/axis.js -var top = 1; -var right = 2; -var bottom = 3; -var left = 4; -var epsilon = 1e-6; -function translateX(x2) { - return "translate(" + x2 + ",0)"; -} -function translateY(y2) { - return "translate(0," + y2 + ")"; -} -function number2(scale) { - return (d) => +scale(d); -} -function center(scale, offset2) { - offset2 = Math.max(0, scale.bandwidth() - offset2 * 2) / 2; - if (scale.round()) offset2 = Math.round(offset2); - return (d) => +scale(d) + offset2; -} -function entering() { - return !this.__axis; -} -function axis(orient, scale) { - var tickArguments = [], tickValues = null, tickFormat2 = null, tickSizeInner = 6, tickSizeOuter = 6, tickPadding = 3, offset2 = typeof window !== "undefined" && window.devicePixelRatio > 1 ? 0 : 0.5, k2 = orient === top || orient === left ? -1 : 1, x2 = orient === left || orient === right ? "x" : "y", transform2 = orient === top || orient === bottom ? translateX : translateY; - function axis2(context) { - var values2 = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain() : tickValues, format3 = tickFormat2 == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity_default : tickFormat2, spacing = Math.max(tickSizeInner, 0) + tickPadding, range3 = scale.range(), range0 = +range3[0] + offset2, range1 = +range3[range3.length - 1] + offset2, position2 = (scale.bandwidth ? center : number2)(scale.copy(), offset2), selection2 = context.selection ? context.selection() : context, path2 = selection2.selectAll(".domain").data([null]), tick = selection2.selectAll(".tick").data(values2, scale).order(), tickExit = tick.exit(), tickEnter = tick.enter().append("g").attr("class", "tick"), line2 = tick.select("line"), text2 = tick.select("text"); - path2 = path2.merge(path2.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "currentColor")); - tick = tick.merge(tickEnter); - line2 = line2.merge(tickEnter.append("line").attr("stroke", "currentColor").attr(x2 + "2", k2 * tickSizeInner)); - text2 = text2.merge(tickEnter.append("text").attr("fill", "currentColor").attr(x2, k2 * spacing).attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); - if (context !== selection2) { - path2 = path2.transition(context); - tick = tick.transition(context); - line2 = line2.transition(context); - text2 = text2.transition(context); - tickExit = tickExit.transition(context).attr("opacity", epsilon).attr("transform", function(d) { - return isFinite(d = position2(d)) ? transform2(d + offset2) : this.getAttribute("transform"); - }); - tickEnter.attr("opacity", epsilon).attr("transform", function(d) { - var p = this.parentNode.__axis; - return transform2((p && isFinite(p = p(d)) ? p : position2(d)) + offset2); - }); - } - tickExit.remove(); - path2.attr("d", orient === left || orient === right ? tickSizeOuter ? "M" + k2 * tickSizeOuter + "," + range0 + "H" + offset2 + "V" + range1 + "H" + k2 * tickSizeOuter : "M" + offset2 + "," + range0 + "V" + range1 : tickSizeOuter ? "M" + range0 + "," + k2 * tickSizeOuter + "V" + offset2 + "H" + range1 + "V" + k2 * tickSizeOuter : "M" + range0 + "," + offset2 + "H" + range1); - tick.attr("opacity", 1).attr("transform", function(d) { - return transform2(position2(d) + offset2); - }); - line2.attr(x2 + "2", k2 * tickSizeInner); - text2.attr(x2, k2 * spacing).text(format3); - selection2.filter(entering).attr("fill", "none").attr("font-size", 10).attr("font-family", "sans-serif").attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); - selection2.each(function() { - this.__axis = position2; - }); - } - axis2.scale = function(_) { - return arguments.length ? (scale = _, axis2) : scale; - }; - axis2.ticks = function() { - return tickArguments = Array.from(arguments), axis2; - }; - axis2.tickArguments = function(_) { - return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis2) : tickArguments.slice(); - }; - axis2.tickValues = function(_) { - return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis2) : tickValues && tickValues.slice(); - }; - axis2.tickFormat = function(_) { - return arguments.length ? (tickFormat2 = _, axis2) : tickFormat2; - }; - axis2.tickSize = function(_) { - return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis2) : tickSizeInner; - }; - axis2.tickSizeInner = function(_) { - return arguments.length ? (tickSizeInner = +_, axis2) : tickSizeInner; - }; - axis2.tickSizeOuter = function(_) { - return arguments.length ? (tickSizeOuter = +_, axis2) : tickSizeOuter; - }; - axis2.tickPadding = function(_) { - return arguments.length ? (tickPadding = +_, axis2) : tickPadding; - }; - axis2.offset = function(_) { - return arguments.length ? (offset2 = +_, axis2) : offset2; - }; - return axis2; -} -function axisBottom(scale) { - return axis(bottom, scale); -} - -// node_modules/d3-dispatch/src/dispatch.js -var noop = { value: () => { -} }; -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || t in _ || /[\s.]/.test(t)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} -function Dispatch(_) { - this._ = _; -} -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return { type: t, name }; - }); -} -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, T = parseTypenames(typename + "", _), t, i = -1, n = T.length; - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; - return; - } - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); - } - return this; - }, - copy: function() { - var copy3 = {}, _ = this._; - for (var t in _) copy3[t] = _[t].slice(); - return new Dispatch(copy3); - }, - call: function(type2, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type2)) throw new Error("unknown type: " + type2); - for (t = this._[type2], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type2, that, args) { - if (!this._.hasOwnProperty(type2)) throw new Error("unknown type: " + type2); - for (var t = this._[type2], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; -function get(type2, name) { - for (var i = 0, n = type2.length, c4; i < n; ++i) { - if ((c4 = type2[i]).name === name) { - return c4.value; - } - } -} -function set(type2, name, callback) { - for (var i = 0, n = type2.length; i < n; ++i) { - if (type2[i].name === name) { - type2[i] = noop, type2 = type2.slice(0, i).concat(type2.slice(i + 1)); - break; - } - } - if (callback != null) type2.push({ name, value: callback }); - return type2; -} -var dispatch_default = dispatch; - -// node_modules/d3-selection/src/namespaces.js -var xhtml = "http://www.w3.org/1999/xhtml"; -var namespaces_default = { - svg: "http://www.w3.org/2000/svg", - xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" -}; - -// node_modules/d3-selection/src/namespace.js -function namespace_default(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces_default.hasOwnProperty(prefix) ? { space: namespaces_default[prefix], local: name } : name; -} - -// node_modules/d3-selection/src/creator.js -function creatorInherit(name) { - return function() { - var document2 = this.ownerDocument, uri = this.namespaceURI; - return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name); - }; -} -function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; -} -function creator_default(name) { - var fullname = namespace_default(name); - return (fullname.local ? creatorFixed : creatorInherit)(fullname); -} - -// node_modules/d3-selection/src/selector.js -function none() { -} -function selector_default(selector) { - return selector == null ? none : function() { - return this.querySelector(selector); - }; -} - -// node_modules/d3-selection/src/selection/select.js -function select_default(select) { - if (typeof select !== "function") select = selector_default(select); - for (var groups2 = this._groups, m = groups2.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group2[i]) && (subnode = select.call(node, node.__data__, i, group2))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - return new Selection(subgroups, this._parents); -} - -// node_modules/d3-selection/src/array.js -function array(x2) { - return x2 == null ? [] : Array.isArray(x2) ? x2 : Array.from(x2); -} - -// node_modules/d3-selection/src/selectorAll.js -function empty2() { - return []; -} -function selectorAll_default(selector) { - return selector == null ? empty2 : function() { - return this.querySelectorAll(selector); - }; -} - -// node_modules/d3-selection/src/selection/selectAll.js -function arrayAll(select) { - return function() { - return array(select.apply(this, arguments)); - }; -} -function selectAll_default(select) { - if (typeof select === "function") select = arrayAll(select); - else select = selectorAll_default(select); - for (var groups2 = this._groups, m = groups2.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, node, i = 0; i < n; ++i) { - if (node = group2[i]) { - subgroups.push(select.call(node, node.__data__, i, group2)); - parents.push(node); - } - } - } - return new Selection(subgroups, parents); -} - -// node_modules/d3-selection/src/matcher.js -function matcher_default(selector) { - return function() { - return this.matches(selector); - }; -} -function childMatcher(selector) { - return function(node) { - return node.matches(selector); - }; -} - -// node_modules/d3-selection/src/selection/selectChild.js -var find = Array.prototype.find; -function childFind(match) { - return function() { - return find.call(this.children, match); - }; -} -function childFirst() { - return this.firstElementChild; -} -function selectChild_default(match) { - return this.select(match == null ? childFirst : childFind(typeof match === "function" ? match : childMatcher(match))); -} - -// node_modules/d3-selection/src/selection/selectChildren.js -var filter = Array.prototype.filter; -function children() { - return Array.from(this.children); -} -function childrenFilter(match) { - return function() { - return filter.call(this.children, match); - }; -} -function selectChildren_default(match) { - return this.selectAll(match == null ? children : childrenFilter(typeof match === "function" ? match : childMatcher(match))); -} - -// node_modules/d3-selection/src/selection/filter.js -function filter_default(match) { - if (typeof match !== "function") match = matcher_default(match); - for (var groups2 = this._groups, m = groups2.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group2[i]) && match.call(node, node.__data__, i, group2)) { - subgroup.push(node); - } - } - } - return new Selection(subgroups, this._parents); -} - -// node_modules/d3-selection/src/selection/sparse.js -function sparse_default(update) { - return new Array(update.length); -} - -// node_modules/d3-selection/src/selection/enter.js -function enter_default() { - return new Selection(this._enter || this._groups.map(sparse_default), this._parents); -} -function EnterNode(parent, datum2) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum2; -} -EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { - return this._parent.insertBefore(child, this._next); - }, - insertBefore: function(child, next) { - return this._parent.insertBefore(child, next); - }, - querySelector: function(selector) { - return this._parent.querySelector(selector); - }, - querySelectorAll: function(selector) { - return this._parent.querySelectorAll(selector); - } -}; - -// node_modules/d3-selection/src/constant.js -function constant_default(x2) { - return function() { - return x2; - }; -} - -// node_modules/d3-selection/src/selection/data.js -function bindIndex(parent, group2, enter, update, exit, data) { - var i = 0, node, groupLength = group2.length, dataLength = data.length; - for (; i < dataLength; ++i) { - if (node = group2[i]) { - node.__data__ = data[i]; - update[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - for (; i < groupLength; ++i) { - if (node = group2[i]) { - exit[i] = node; - } - } -} -function bindKey(parent, group2, enter, update, exit, data, key) { - var i, node, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group2.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue; - for (i = 0; i < groupLength; ++i) { - if (node = group2[i]) { - keyValues[i] = keyValue = key.call(node, node.__data__, i, group2) + ""; - if (nodeByKeyValue.has(keyValue)) { - exit[i] = node; - } else { - nodeByKeyValue.set(keyValue, node); - } - } - } - for (i = 0; i < dataLength; ++i) { - keyValue = key.call(parent, data[i], i, data) + ""; - if (node = nodeByKeyValue.get(keyValue)) { - update[i] = node; - node.__data__ = data[i]; - nodeByKeyValue.delete(keyValue); - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - for (i = 0; i < groupLength; ++i) { - if ((node = group2[i]) && nodeByKeyValue.get(keyValues[i]) === node) { - exit[i] = node; - } - } -} -function datum(node) { - return node.__data__; -} -function data_default(value, key) { - if (!arguments.length) return Array.from(this, datum); - var bind = key ? bindKey : bindIndex, parents = this._parents, groups2 = this._groups; - if (typeof value !== "function") value = constant_default(value); - for (var m = groups2.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { - var parent = parents[j], group2 = groups2[j], groupLength = group2.length, data = arraylike(value.call(parent, parent && parent.__data__, j, parents)), dataLength = data.length, enterGroup = enter[j] = new Array(dataLength), updateGroup = update[j] = new Array(dataLength), exitGroup = exit[j] = new Array(groupLength); - bind(parent, group2, enterGroup, updateGroup, exitGroup, data, key); - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength) ; - previous._next = next || null; - } - } - } - update = new Selection(update, parents); - update._enter = enter; - update._exit = exit; - return update; -} -function arraylike(data) { - return typeof data === "object" && "length" in data ? data : Array.from(data); -} - -// node_modules/d3-selection/src/selection/exit.js -function exit_default() { - return new Selection(this._exit || this._groups.map(sparse_default), this._parents); -} - -// node_modules/d3-selection/src/selection/join.js -function join_default(onenter, onupdate, onexit) { - var enter = this.enter(), update = this, exit = this.exit(); - if (typeof onenter === "function") { - enter = onenter(enter); - if (enter) enter = enter.selection(); - } else { - enter = enter.append(onenter + ""); - } - if (onupdate != null) { - update = onupdate(update); - if (update) update = update.selection(); - } - if (onexit == null) exit.remove(); - else onexit(exit); - return enter && update ? enter.merge(update).order() : update; -} - -// node_modules/d3-selection/src/selection/merge.js -function merge_default(context) { - var selection2 = context.selection ? context.selection() : context; - for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge2 = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge2[i] = node; - } - } - } - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - return new Selection(merges, this._parents); -} - -// node_modules/d3-selection/src/selection/order.js -function order_default() { - for (var groups2 = this._groups, j = -1, m = groups2.length; ++j < m; ) { - for (var group2 = groups2[j], i = group2.length - 1, next = group2[i], node; --i >= 0; ) { - if (node = group2[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); - next = node; - } - } - } - return this; -} - -// node_modules/d3-selection/src/selection/sort.js -function sort_default(compare) { - if (!compare) compare = ascending2; - function compareNode(a2, b) { - return a2 && b ? compare(a2.__data__, b.__data__) : !a2 - !b; - } - for (var groups2 = this._groups, m = groups2.length, sortgroups = new Array(m), j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group2[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - return new Selection(sortgroups, this._parents).order(); -} -function ascending2(a2, b) { - return a2 < b ? -1 : a2 > b ? 1 : a2 >= b ? 0 : NaN; -} - -// node_modules/d3-selection/src/selection/call.js -function call_default() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; -} - -// node_modules/d3-selection/src/selection/nodes.js -function nodes_default() { - return Array.from(this); -} - -// node_modules/d3-selection/src/selection/node.js -function node_default() { - for (var groups2 = this._groups, j = 0, m = groups2.length; j < m; ++j) { - for (var group2 = groups2[j], i = 0, n = group2.length; i < n; ++i) { - var node = group2[i]; - if (node) return node; - } - } - return null; -} - -// node_modules/d3-selection/src/selection/size.js -function size_default() { - let size = 0; - for (const node of this) ++size; - return size; -} - -// node_modules/d3-selection/src/selection/empty.js -function empty_default() { - return !this.node(); -} - -// node_modules/d3-selection/src/selection/each.js -function each_default(callback) { - for (var groups2 = this._groups, j = 0, m = groups2.length; j < m; ++j) { - for (var group2 = groups2[j], i = 0, n = group2.length, node; i < n; ++i) { - if (node = group2[i]) callback.call(node, node.__data__, i, group2); - } - } - return this; -} - -// node_modules/d3-selection/src/selection/attr.js -function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; -} -function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} -function attrConstant(name, value) { - return function() { - this.setAttribute(name, value); - }; -} -function attrConstantNS(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; -} -function attrFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttribute(name); - else this.setAttribute(name, v); - }; -} -function attrFunctionNS(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttributeNS(fullname.space, fullname.local); - else this.setAttributeNS(fullname.space, fullname.local, v); - }; -} -function attr_default(name, value) { - var fullname = namespace_default(name); - if (arguments.length < 2) { - var node = this.node(); - return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname); - } - return this.each((value == null ? fullname.local ? attrRemoveNS : attrRemove : typeof value === "function" ? fullname.local ? attrFunctionNS : attrFunction : fullname.local ? attrConstantNS : attrConstant)(fullname, value)); -} - -// node_modules/d3-selection/src/window.js -function window_default(node) { - return node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView; -} - -// node_modules/d3-selection/src/selection/style.js -function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; -} -function styleConstant(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; -} -function styleFunction(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.style.removeProperty(name); - else this.style.setProperty(name, v, priority); - }; -} -function style_default(name, value, priority) { - return arguments.length > 1 ? this.each((value == null ? styleRemove : typeof value === "function" ? styleFunction : styleConstant)(name, value, priority == null ? "" : priority)) : styleValue(this.node(), name); -} -function styleValue(node, name) { - return node.style.getPropertyValue(name) || window_default(node).getComputedStyle(node, null).getPropertyValue(name); -} - -// node_modules/d3-selection/src/selection/property.js -function propertyRemove(name) { - return function() { - delete this[name]; - }; -} -function propertyConstant(name, value) { - return function() { - this[name] = value; - }; -} -function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) delete this[name]; - else this[name] = v; - }; -} -function property_default(name, value) { - return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === "function" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name]; -} - -// node_modules/d3-selection/src/selection/classed.js -function classArray(string2) { - return string2.trim().split(/^|\s+/); -} -function classList(node) { - return node.classList || new ClassList(node); -} -function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); -} -ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } -}; -function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.add(names[i]); -} -function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.remove(names[i]); -} -function classedTrue(names) { - return function() { - classedAdd(this, names); - }; -} -function classedFalse(names) { - return function() { - classedRemove(this, names); - }; -} -function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; -} -function classed_default(name, value) { - var names = classArray(name + ""); - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; - while (++i < n) if (!list.contains(names[i])) return false; - return true; - } - return this.each((typeof value === "function" ? classedFunction : value ? classedTrue : classedFalse)(names, value)); -} - -// node_modules/d3-selection/src/selection/text.js -function textRemove() { - this.textContent = ""; -} -function textConstant(value) { - return function() { - this.textContent = value; - }; -} -function textFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; -} -function text_default(value) { - return arguments.length ? this.each(value == null ? textRemove : (typeof value === "function" ? textFunction : textConstant)(value)) : this.node().textContent; -} - -// node_modules/d3-selection/src/selection/html.js -function htmlRemove() { - this.innerHTML = ""; -} -function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; -} -function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; -} -function html_default(value) { - return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === "function" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML; -} - -// node_modules/d3-selection/src/selection/raise.js -function raise() { - if (this.nextSibling) this.parentNode.appendChild(this); -} -function raise_default() { - return this.each(raise); -} - -// node_modules/d3-selection/src/selection/lower.js -function lower() { - if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); -} -function lower_default() { - return this.each(lower); -} - -// node_modules/d3-selection/src/selection/append.js -function append_default(name) { - var create3 = typeof name === "function" ? name : creator_default(name); - return this.select(function() { - return this.appendChild(create3.apply(this, arguments)); - }); -} - -// node_modules/d3-selection/src/selection/insert.js -function constantNull() { - return null; -} -function insert_default(name, before) { - var create3 = typeof name === "function" ? name : creator_default(name), select = before == null ? constantNull : typeof before === "function" ? before : selector_default(before); - return this.select(function() { - return this.insertBefore(create3.apply(this, arguments), select.apply(this, arguments) || null); - }); -} - -// node_modules/d3-selection/src/selection/remove.js -function remove() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); -} -function remove_default() { - return this.each(remove); -} - -// node_modules/d3-selection/src/selection/clone.js -function selection_cloneShallow() { - var clone = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} -function selection_cloneDeep() { - var clone = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} -function clone_default(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); -} - -// node_modules/d3-selection/src/selection/datum.js -function datum_default(value) { - return arguments.length ? this.property("__data__", value) : this.node().__data__; -} - -// node_modules/d3-selection/src/selection/on.js -function contextListener(listener) { - return function(event) { - listener.call(this, event, this.__data__); - }; -} -function parseTypenames2(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - return { type: t, name }; - }); -} -function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) return; - for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.options); - } else { - on[++i] = o; - } - } - if (++i) on.length = i; - else delete this.__on; - }; -} -function onAdd(typename, value, options) { - return function() { - var on = this.__on, o, listener = contextListener(value); - if (on) for (var j = 0, m = on.length; j < m; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.options); - this.addEventListener(o.type, o.listener = listener, o.options = options); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, options); - o = { type: typename.type, name: typename.name, value, listener, options }; - if (!on) this.__on = [o]; - else on.push(o); - }; -} -function on_default(typename, value, options) { - var typenames = parseTypenames2(typename + ""), i, n = typenames.length, t; - if (arguments.length < 2) { - var on = this.node().__on; - if (on) for (var j = 0, m = on.length, o; j < m; ++j) { - for (i = 0, o = on[j]; i < n; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - on = value ? onAdd : onRemove; - for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options)); - return this; -} - -// node_modules/d3-selection/src/selection/dispatch.js -function dispatchEvent(node, type2, params) { - var window2 = window_default(node), event = window2.CustomEvent; - if (typeof event === "function") { - event = new event(type2, params); - } else { - event = window2.document.createEvent("Event"); - if (params) event.initEvent(type2, params.bubbles, params.cancelable), event.detail = params.detail; - else event.initEvent(type2, false, false); - } - node.dispatchEvent(event); -} -function dispatchConstant(type2, params) { - return function() { - return dispatchEvent(this, type2, params); - }; -} -function dispatchFunction(type2, params) { - return function() { - return dispatchEvent(this, type2, params.apply(this, arguments)); - }; -} -function dispatch_default2(type2, params) { - return this.each((typeof params === "function" ? dispatchFunction : dispatchConstant)(type2, params)); -} - -// node_modules/d3-selection/src/selection/iterator.js -function* iterator_default() { - for (var groups2 = this._groups, j = 0, m = groups2.length; j < m; ++j) { - for (var group2 = groups2[j], i = 0, n = group2.length, node; i < n; ++i) { - if (node = group2[i]) yield node; - } - } -} - -// node_modules/d3-selection/src/selection/index.js -var root = [null]; -function Selection(groups2, parents) { - this._groups = groups2; - this._parents = parents; -} -function selection() { - return new Selection([[document.documentElement]], root); -} -function selection_selection() { - return this; -} -Selection.prototype = selection.prototype = { - constructor: Selection, - select: select_default, - selectAll: selectAll_default, - selectChild: selectChild_default, - selectChildren: selectChildren_default, - filter: filter_default, - data: data_default, - enter: enter_default, - exit: exit_default, - join: join_default, - merge: merge_default, - selection: selection_selection, - order: order_default, - sort: sort_default, - call: call_default, - nodes: nodes_default, - node: node_default, - size: size_default, - empty: empty_default, - each: each_default, - attr: attr_default, - style: style_default, - property: property_default, - classed: classed_default, - text: text_default, - html: html_default, - raise: raise_default, - lower: lower_default, - append: append_default, - insert: insert_default, - remove: remove_default, - clone: clone_default, - datum: datum_default, - on: on_default, - dispatch: dispatch_default2, - [Symbol.iterator]: iterator_default -}; -var selection_default = selection; - -// node_modules/d3-selection/src/select.js -function select_default2(selector) { - return typeof selector === "string" ? new Selection([[document.querySelector(selector)]], [document.documentElement]) : new Selection([[selector]], root); -} - -// node_modules/d3-selection/src/sourceEvent.js -function sourceEvent_default(event) { - let sourceEvent; - while (sourceEvent = event.sourceEvent) event = sourceEvent; - return event; -} - -// node_modules/d3-selection/src/pointer.js -function pointer_default(event, node) { - event = sourceEvent_default(event); - if (node === void 0) node = event.currentTarget; - if (node) { - var svg = node.ownerSVGElement || node; - if (svg.createSVGPoint) { - var point6 = svg.createSVGPoint(); - point6.x = event.clientX, point6.y = event.clientY; - point6 = point6.matrixTransform(node.getScreenCTM().inverse()); - return [point6.x, point6.y]; - } - if (node.getBoundingClientRect) { - var rect2 = node.getBoundingClientRect(); - return [event.clientX - rect2.left - node.clientLeft, event.clientY - rect2.top - node.clientTop]; - } - } - return [event.pageX, event.pageY]; -} - -// node_modules/d3-color/src/define.js -function define_default(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; -} -function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) prototype[key] = definition[key]; - return prototype; -} - -// node_modules/d3-color/src/color.js -function Color() { -} -var darker = 0.7; -var brighter = 1 / darker; -var reI = "\\s*([+-]?\\d+)\\s*"; -var reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*"; -var reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*"; -var reHex = /^#([0-9a-f]{3,8})$/; -var reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`); -var reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`); -var reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`); -var reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`); -var reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`); -var reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); -var named = { - aliceblue: 15792383, - antiquewhite: 16444375, - aqua: 65535, - aquamarine: 8388564, - azure: 15794175, - beige: 16119260, - bisque: 16770244, - black: 0, - blanchedalmond: 16772045, - blue: 255, - blueviolet: 9055202, - brown: 10824234, - burlywood: 14596231, - cadetblue: 6266528, - chartreuse: 8388352, - chocolate: 13789470, - coral: 16744272, - cornflowerblue: 6591981, - cornsilk: 16775388, - crimson: 14423100, - cyan: 65535, - darkblue: 139, - darkcyan: 35723, - darkgoldenrod: 12092939, - darkgray: 11119017, - darkgreen: 25600, - darkgrey: 11119017, - darkkhaki: 12433259, - darkmagenta: 9109643, - darkolivegreen: 5597999, - darkorange: 16747520, - darkorchid: 10040012, - darkred: 9109504, - darksalmon: 15308410, - darkseagreen: 9419919, - darkslateblue: 4734347, - darkslategray: 3100495, - darkslategrey: 3100495, - darkturquoise: 52945, - darkviolet: 9699539, - deeppink: 16716947, - deepskyblue: 49151, - dimgray: 6908265, - dimgrey: 6908265, - dodgerblue: 2003199, - firebrick: 11674146, - floralwhite: 16775920, - forestgreen: 2263842, - fuchsia: 16711935, - gainsboro: 14474460, - ghostwhite: 16316671, - gold: 16766720, - goldenrod: 14329120, - gray: 8421504, - green: 32768, - greenyellow: 11403055, - grey: 8421504, - honeydew: 15794160, - hotpink: 16738740, - indianred: 13458524, - indigo: 4915330, - ivory: 16777200, - khaki: 15787660, - lavender: 15132410, - lavenderblush: 16773365, - lawngreen: 8190976, - lemonchiffon: 16775885, - lightblue: 11393254, - lightcoral: 15761536, - lightcyan: 14745599, - lightgoldenrodyellow: 16448210, - lightgray: 13882323, - lightgreen: 9498256, - lightgrey: 13882323, - lightpink: 16758465, - lightsalmon: 16752762, - lightseagreen: 2142890, - lightskyblue: 8900346, - lightslategray: 7833753, - lightslategrey: 7833753, - lightsteelblue: 11584734, - lightyellow: 16777184, - lime: 65280, - limegreen: 3329330, - linen: 16445670, - magenta: 16711935, - maroon: 8388608, - mediumaquamarine: 6737322, - mediumblue: 205, - mediumorchid: 12211667, - mediumpurple: 9662683, - mediumseagreen: 3978097, - mediumslateblue: 8087790, - mediumspringgreen: 64154, - mediumturquoise: 4772300, - mediumvioletred: 13047173, - midnightblue: 1644912, - mintcream: 16121850, - mistyrose: 16770273, - moccasin: 16770229, - navajowhite: 16768685, - navy: 128, - oldlace: 16643558, - olive: 8421376, - olivedrab: 7048739, - orange: 16753920, - orangered: 16729344, - orchid: 14315734, - palegoldenrod: 15657130, - palegreen: 10025880, - paleturquoise: 11529966, - palevioletred: 14381203, - papayawhip: 16773077, - peachpuff: 16767673, - peru: 13468991, - pink: 16761035, - plum: 14524637, - powderblue: 11591910, - purple: 8388736, - rebeccapurple: 6697881, - red: 16711680, - rosybrown: 12357519, - royalblue: 4286945, - saddlebrown: 9127187, - salmon: 16416882, - sandybrown: 16032864, - seagreen: 3050327, - seashell: 16774638, - sienna: 10506797, - silver: 12632256, - skyblue: 8900331, - slateblue: 6970061, - slategray: 7372944, - slategrey: 7372944, - snow: 16775930, - springgreen: 65407, - steelblue: 4620980, - tan: 13808780, - teal: 32896, - thistle: 14204888, - tomato: 16737095, - turquoise: 4251856, - violet: 15631086, - wheat: 16113331, - white: 16777215, - whitesmoke: 16119285, - yellow: 16776960, - yellowgreen: 10145074 -}; -define_default(Color, color, { - copy(channels) { - return Object.assign(new this.constructor(), this, channels); - }, - displayable() { - return this.rgb().displayable(); - }, - hex: color_formatHex, - // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHex8: color_formatHex8, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb -}); -function color_formatHex() { - return this.rgb().formatHex(); -} -function color_formatHex8() { - return this.rgb().formatHex8(); -} -function color_formatHsl() { - return hslConvert(this).formatHsl(); -} -function color_formatRgb() { - return this.rgb().formatRgb(); -} -function color(format3) { - var m, l; - format3 = (format3 + "").trim().toLowerCase(); - return (m = reHex.exec(format3)) ? (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(format3)) ? new Rgb(m[1], m[2], m[3], 1) : (m = reRgbPercent.exec(format3)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) : (m = reRgbaInteger.exec(format3)) ? rgba(m[1], m[2], m[3], m[4]) : (m = reRgbaPercent.exec(format3)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) : (m = reHslPercent.exec(format3)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) : (m = reHslaPercent.exec(format3)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) : named.hasOwnProperty(format3) ? rgbn(named[format3]) : format3 === "transparent" ? new Rgb(NaN, NaN, NaN, 0) : null; -} -function rgbn(n) { - return new Rgb(n >> 16 & 255, n >> 8 & 255, n & 255, 1); -} -function rgba(r, g, b, a2) { - if (a2 <= 0) r = g = b = NaN; - return new Rgb(r, g, b, a2); -} -function rgbConvert(o) { - if (!(o instanceof Color)) o = color(o); - if (!o) return new Rgb(); - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); -} -function rgb(r, g, b, opacity2) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity2 == null ? 1 : opacity2); -} -function Rgb(r, g, b, opacity2) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity2; -} -define_default(Rgb, rgb, extend(Color, { - brighter(k2) { - k2 = k2 == null ? brighter : Math.pow(brighter, k2); - return new Rgb(this.r * k2, this.g * k2, this.b * k2, this.opacity); - }, - darker(k2) { - k2 = k2 == null ? darker : Math.pow(darker, k2); - return new Rgb(this.r * k2, this.g * k2, this.b * k2, this.opacity); - }, - rgb() { - return this; - }, - clamp() { - return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); - }, - displayable() { - 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); - }, - hex: rgb_formatHex, - // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatHex8: rgb_formatHex8, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb -})); -function rgb_formatHex() { - return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; -} -function rgb_formatHex8() { - return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; -} -function rgb_formatRgb() { - const a2 = clampa(this.opacity); - return `${a2 === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a2 === 1 ? ")" : `, ${a2})`}`; -} -function clampa(opacity2) { - return isNaN(opacity2) ? 1 : Math.max(0, Math.min(1, opacity2)); -} -function clampi(value) { - return Math.max(0, Math.min(255, Math.round(value) || 0)); -} -function hex(value) { - value = clampi(value); - return (value < 16 ? "0" : "") + value.toString(16); -} -function hsla(h, s2, l, a2) { - if (a2 <= 0) h = s2 = l = NaN; - else if (l <= 0 || l >= 1) h = s2 = NaN; - else if (s2 <= 0) h = NaN; - return new Hsl(h, s2, l, a2); -} -function hslConvert(o) { - if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) o = color(o); - if (!o) return new Hsl(); - if (o instanceof Hsl) return o; - o = o.rgb(); - var r = o.r / 255, g = o.g / 255, b = o.b / 255, min4 = Math.min(r, g, b), max3 = Math.max(r, g, b), h = NaN, s2 = max3 - min4, l = (max3 + min4) / 2; - if (s2) { - if (r === max3) h = (g - b) / s2 + (g < b) * 6; - else if (g === max3) h = (b - r) / s2 + 2; - else h = (r - g) / s2 + 4; - s2 /= l < 0.5 ? max3 + min4 : 2 - max3 - min4; - h *= 60; - } else { - s2 = l > 0 && l < 1 ? 0 : h; - } - return new Hsl(h, s2, l, o.opacity); -} -function hsl(h, s2, l, opacity2) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s2, l, opacity2 == null ? 1 : opacity2); -} -function Hsl(h, s2, l, opacity2) { - this.h = +h; - this.s = +s2; - this.l = +l; - this.opacity = +opacity2; -} -define_default(Hsl, hsl, extend(Color, { - brighter(k2) { - k2 = k2 == null ? brighter : Math.pow(brighter, k2); - return new Hsl(this.h, this.s, this.l * k2, this.opacity); - }, - darker(k2) { - k2 = k2 == null ? darker : Math.pow(darker, k2); - return new Hsl(this.h, this.s, this.l * k2, this.opacity); - }, - rgb() { - var h = this.h % 360 + (this.h < 0) * 360, s2 = isNaN(h) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s2, m1 = 2 * l - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - this.opacity - ); - }, - clamp() { - return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); - }, - displayable() { - return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1); - }, - formatHsl() { - const a2 = clampa(this.opacity); - return `${a2 === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a2 === 1 ? ")" : `, ${a2})`}`; - } -})); -function clamph(value) { - value = (value || 0) % 360; - return value < 0 ? value + 360 : value; -} -function clampt(value) { - return Math.max(0, Math.min(1, value || 0)); -} -function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255; -} - -// node_modules/d3-color/src/math.js -var radians = Math.PI / 180; -var degrees = 180 / Math.PI; - -// node_modules/d3-color/src/lab.js -var K = 18; -var Xn = 0.96422; -var Yn = 1; -var Zn = 0.82521; -var t0 = 4 / 29; -var t1 = 6 / 29; -var t2 = 3 * t1 * t1; -var t3 = t1 * t1 * t1; -function labConvert(o) { - if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); - if (o instanceof Hcl) return hcl2lab(o); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = rgb2lrgb(o.r), g = rgb2lrgb(o.g), b = rgb2lrgb(o.b), y2 = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x2, z; - if (r === g && g === b) x2 = z = y2; - else { - x2 = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); - z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); - } - return new Lab(116 * y2 - 16, 500 * (x2 - y2), 200 * (y2 - z), o.opacity); -} -function lab(l, a2, b, opacity2) { - return arguments.length === 1 ? labConvert(l) : new Lab(l, a2, b, opacity2 == null ? 1 : opacity2); -} -function Lab(l, a2, b, opacity2) { - this.l = +l; - this.a = +a2; - this.b = +b; - this.opacity = +opacity2; -} -define_default(Lab, lab, extend(Color, { - brighter(k2) { - return new Lab(this.l + K * (k2 == null ? 1 : k2), this.a, this.b, this.opacity); - }, - darker(k2) { - return new Lab(this.l - K * (k2 == null ? 1 : k2), this.a, this.b, this.opacity); - }, - rgb() { - var y2 = (this.l + 16) / 116, x2 = isNaN(this.a) ? y2 : y2 + this.a / 500, z = isNaN(this.b) ? y2 : y2 - this.b / 200; - x2 = Xn * lab2xyz(x2); - y2 = Yn * lab2xyz(y2); - z = Zn * lab2xyz(z); - return new Rgb( - lrgb2rgb(3.1338561 * x2 - 1.6168667 * y2 - 0.4906146 * z), - lrgb2rgb(-0.9787684 * x2 + 1.9161415 * y2 + 0.033454 * z), - lrgb2rgb(0.0719453 * x2 - 0.2289914 * y2 + 1.4052427 * z), - this.opacity - ); - } -})); -function xyz2lab(t) { - return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; -} -function lab2xyz(t) { - return t > t1 ? t * t * t : t2 * (t - t0); -} -function lrgb2rgb(x2) { - return 255 * (x2 <= 31308e-7 ? 12.92 * x2 : 1.055 * Math.pow(x2, 1 / 2.4) - 0.055); -} -function rgb2lrgb(x2) { - return (x2 /= 255) <= 0.04045 ? x2 / 12.92 : Math.pow((x2 + 0.055) / 1.055, 2.4); -} -function hclConvert(o) { - if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); - if (!(o instanceof Lab)) o = labConvert(o); - if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); - var h = Math.atan2(o.b, o.a) * degrees; - return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); -} -function hcl(h, c4, l, opacity2) { - return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c4, l, opacity2 == null ? 1 : opacity2); -} -function Hcl(h, c4, l, opacity2) { - this.h = +h; - this.c = +c4; - this.l = +l; - this.opacity = +opacity2; -} -function hcl2lab(o) { - if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); - var h = o.h * radians; - return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); -} -define_default(Hcl, hcl, extend(Color, { - brighter(k2) { - return new Hcl(this.h, this.c, this.l + K * (k2 == null ? 1 : k2), this.opacity); - }, - darker(k2) { - return new Hcl(this.h, this.c, this.l - K * (k2 == null ? 1 : k2), this.opacity); - }, - rgb() { - return hcl2lab(this).rgb(); - } -})); - -// node_modules/d3-color/src/cubehelix.js -var A = -0.14861; -var B = 1.78277; -var C = -0.29227; -var D = -0.90649; -var E = 1.97294; -var ED = E * D; -var EB = E * B; -var BC_DA = B * C - D * A; -function cubehelixConvert(o) { - if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = o.r / 255, g = o.g / 255, b = o.b / 255, l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), bl = b - l, k2 = (E * (g - l) - C * bl) / D, s2 = Math.sqrt(k2 * k2 + bl * bl) / (E * l * (1 - l)), h = s2 ? Math.atan2(k2, bl) * degrees - 120 : NaN; - return new Cubehelix(h < 0 ? h + 360 : h, s2, l, o.opacity); -} -function cubehelix(h, s2, l, opacity2) { - return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s2, l, opacity2 == null ? 1 : opacity2); -} -function Cubehelix(h, s2, l, opacity2) { - this.h = +h; - this.s = +s2; - this.l = +l; - this.opacity = +opacity2; -} -define_default(Cubehelix, cubehelix, extend(Color, { - brighter(k2) { - k2 = k2 == null ? brighter : Math.pow(brighter, k2); - return new Cubehelix(this.h, this.s, this.l * k2, this.opacity); - }, - darker(k2) { - k2 = k2 == null ? darker : Math.pow(darker, k2); - return new Cubehelix(this.h, this.s, this.l * k2, this.opacity); - }, - rgb() { - var h = isNaN(this.h) ? 0 : (this.h + 120) * radians, l = +this.l, a2 = isNaN(this.s) ? 0 : this.s * l * (1 - l), cosh = Math.cos(h), sinh = Math.sin(h); - return new Rgb( - 255 * (l + a2 * (A * cosh + B * sinh)), - 255 * (l + a2 * (C * cosh + D * sinh)), - 255 * (l + a2 * (E * cosh)), - this.opacity - ); - } -})); - -// node_modules/d3-interpolate/src/basis.js -function basis(t13, v0, v1, v2, v3) { - var t22 = t13 * t13, t32 = t22 * t13; - return ((1 - 3 * t13 + 3 * t22 - t32) * v0 + (4 - 6 * t22 + 3 * t32) * v1 + (1 + 3 * t13 + 3 * t22 - 3 * t32) * v2 + t32 * v3) / 6; -} -function basis_default(values2) { - var n = values2.length - 1; - return function(t) { - var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), v1 = values2[i], v2 = values2[i + 1], v0 = i > 0 ? values2[i - 1] : 2 * v1 - v2, v3 = i < n - 1 ? values2[i + 2] : 2 * v2 - v1; - return basis((t - i / n) * n, v0, v1, v2, v3); - }; -} - -// node_modules/d3-interpolate/src/basisClosed.js -function basisClosed_default(values2) { - var n = values2.length; - return function(t) { - var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), v0 = values2[(i + n - 1) % n], v1 = values2[i % n], v2 = values2[(i + 1) % n], v3 = values2[(i + 2) % n]; - return basis((t - i / n) * n, v0, v1, v2, v3); - }; -} - -// node_modules/d3-interpolate/src/constant.js -var constant_default2 = (x2) => () => x2; - -// node_modules/d3-interpolate/src/color.js -function linear(a2, d) { - return function(t) { - return a2 + t * d; - }; -} -function exponential(a2, b, y2) { - return a2 = Math.pow(a2, y2), b = Math.pow(b, y2) - a2, y2 = 1 / y2, function(t) { - return Math.pow(a2 + t * b, y2); - }; -} -function hue(a2, b) { - var d = b - a2; - return d ? linear(a2, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant_default2(isNaN(a2) ? b : a2); -} -function gamma(y2) { - return (y2 = +y2) === 1 ? nogamma : function(a2, b) { - return b - a2 ? exponential(a2, b, y2) : constant_default2(isNaN(a2) ? b : a2); - }; -} -function nogamma(a2, b) { - var d = b - a2; - return d ? linear(a2, d) : constant_default2(isNaN(a2) ? b : a2); -} - -// node_modules/d3-interpolate/src/rgb.js -var rgb_default = (function rgbGamma(y2) { - var color3 = gamma(y2); - function rgb2(start2, end) { - var r = color3((start2 = rgb(start2)).r, (end = rgb(end)).r), g = color3(start2.g, end.g), b = color3(start2.b, end.b), opacity2 = nogamma(start2.opacity, end.opacity); - return function(t) { - start2.r = r(t); - start2.g = g(t); - start2.b = b(t); - start2.opacity = opacity2(t); - return start2 + ""; - }; - } - rgb2.gamma = rgbGamma; - return rgb2; -})(1); -function rgbSpline(spline) { - return function(colors) { - var n = colors.length, r = new Array(n), g = new Array(n), b = new Array(n), i, color3; - for (i = 0; i < n; ++i) { - color3 = rgb(colors[i]); - r[i] = color3.r || 0; - g[i] = color3.g || 0; - b[i] = color3.b || 0; - } - r = spline(r); - g = spline(g); - b = spline(b); - color3.opacity = 1; - return function(t) { - color3.r = r(t); - color3.g = g(t); - color3.b = b(t); - return color3 + ""; - }; - }; -} -var rgbBasis = rgbSpline(basis_default); -var rgbBasisClosed = rgbSpline(basisClosed_default); - -// node_modules/d3-interpolate/src/numberArray.js -function numberArray_default(a2, b) { - if (!b) b = []; - var n = a2 ? Math.min(b.length, a2.length) : 0, c4 = b.slice(), i; - return function(t) { - for (i = 0; i < n; ++i) c4[i] = a2[i] * (1 - t) + b[i] * t; - return c4; - }; -} -function isNumberArray(x2) { - return ArrayBuffer.isView(x2) && !(x2 instanceof DataView); -} - -// node_modules/d3-interpolate/src/array.js -function genericArray(a2, b) { - var nb = b ? b.length : 0, na = a2 ? Math.min(nb, a2.length) : 0, x2 = new Array(na), c4 = new Array(nb), i; - for (i = 0; i < na; ++i) x2[i] = value_default(a2[i], b[i]); - for (; i < nb; ++i) c4[i] = b[i]; - return function(t) { - for (i = 0; i < na; ++i) c4[i] = x2[i](t); - return c4; - }; -} - -// node_modules/d3-interpolate/src/date.js -function date_default(a2, b) { - var d = /* @__PURE__ */ new Date(); - return a2 = +a2, b = +b, function(t) { - return d.setTime(a2 * (1 - t) + b * t), d; - }; -} - -// node_modules/d3-interpolate/src/number.js -function number_default(a2, b) { - return a2 = +a2, b = +b, function(t) { - return a2 * (1 - t) + b * t; - }; -} - -// node_modules/d3-interpolate/src/object.js -function object_default(a2, b) { - var i = {}, c4 = {}, k2; - if (a2 === null || typeof a2 !== "object") a2 = {}; - if (b === null || typeof b !== "object") b = {}; - for (k2 in b) { - if (k2 in a2) { - i[k2] = value_default(a2[k2], b[k2]); - } else { - c4[k2] = b[k2]; - } - } - return function(t) { - for (k2 in i) c4[k2] = i[k2](t); - return c4; - }; -} - -// node_modules/d3-interpolate/src/string.js -var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g; -var reB = new RegExp(reA.source, "g"); -function zero2(b) { - return function() { - return b; - }; -} -function one(b) { - return function(t) { - return b(t) + ""; - }; -} -function string_default(a2, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i = -1, s2 = [], q = []; - a2 = a2 + "", b = b + ""; - while ((am = reA.exec(a2)) && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { - bs = b.slice(bi, bs); - if (s2[i]) s2[i] += bs; - else s2[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { - if (s2[i]) s2[i] += bm; - else s2[++i] = bm; - } else { - s2[++i] = null; - q.push({ i, x: number_default(am, bm) }); - } - bi = reB.lastIndex; - } - if (bi < b.length) { - bs = b.slice(bi); - if (s2[i]) s2[i] += bs; - else s2[++i] = bs; - } - return s2.length < 2 ? q[0] ? one(q[0].x) : zero2(b) : (b = q.length, function(t) { - for (var i2 = 0, o; i2 < b; ++i2) s2[(o = q[i2]).i] = o.x(t); - return s2.join(""); - }); -} - -// node_modules/d3-interpolate/src/value.js -function value_default(a2, b) { - var t = typeof b, c4; - return b == null || t === "boolean" ? constant_default2(b) : (t === "number" ? number_default : t === "string" ? (c4 = color(b)) ? (b = c4, rgb_default) : string_default : b instanceof color ? rgb_default : b instanceof Date ? date_default : isNumberArray(b) ? numberArray_default : Array.isArray(b) ? genericArray : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object_default : number_default)(a2, b); -} - -// node_modules/d3-interpolate/src/round.js -function round_default(a2, b) { - return a2 = +a2, b = +b, function(t) { - return Math.round(a2 * (1 - t) + b * t); - }; -} - -// node_modules/d3-interpolate/src/transform/decompose.js -var degrees2 = 180 / Math.PI; -var identity2 = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 -}; -function decompose_default(a2, b, c4, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a2 * a2 + b * b)) a2 /= scaleX, b /= scaleX; - if (skewX = a2 * c4 + b * d) c4 -= a2 * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c4 * c4 + d * d)) c4 /= scaleY, d /= scaleY, skewX /= scaleY; - if (a2 * d < b * c4) a2 = -a2, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a2) * degrees2, - skewX: Math.atan(skewX) * degrees2, - scaleX, - scaleY - }; -} - -// node_modules/d3-interpolate/src/transform/parse.js -var svgNode; -function parseCss(value) { - const m = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value + ""); - return m.isIdentity ? identity2 : decompose_default(m.a, m.b, m.c, m.d, m.e, m.f); -} -function parseSvg(value) { - if (value == null) return identity2; - if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity2; - value = value.matrix; - return decompose_default(value.a, value.b, value.c, value.d, value.e, value.f); -} - -// node_modules/d3-interpolate/src/transform/index.js -function interpolateTransform(parse2, pxComma, pxParen, degParen) { - function pop(s2) { - return s2.length ? s2.pop() + " " : ""; - } - function translate(xa, ya, xb, yb, s2, q) { - if (xa !== xb || ya !== yb) { - var i = s2.push("translate(", null, pxComma, null, pxParen); - q.push({ i: i - 4, x: number_default(xa, xb) }, { i: i - 2, x: number_default(ya, yb) }); - } else if (xb || yb) { - s2.push("translate(" + xb + pxComma + yb + pxParen); - } - } - function rotate(a2, b, s2, q) { - if (a2 !== b) { - if (a2 - b > 180) b += 360; - else if (b - a2 > 180) a2 += 360; - q.push({ i: s2.push(pop(s2) + "rotate(", null, degParen) - 2, x: number_default(a2, b) }); - } else if (b) { - s2.push(pop(s2) + "rotate(" + b + degParen); - } - } - function skewX(a2, b, s2, q) { - if (a2 !== b) { - q.push({ i: s2.push(pop(s2) + "skewX(", null, degParen) - 2, x: number_default(a2, b) }); - } else if (b) { - s2.push(pop(s2) + "skewX(" + b + degParen); - } - } - function scale(xa, ya, xb, yb, s2, q) { - if (xa !== xb || ya !== yb) { - var i = s2.push(pop(s2) + "scale(", null, ",", null, ")"); - q.push({ i: i - 4, x: number_default(xa, xb) }, { i: i - 2, x: number_default(ya, yb) }); - } else if (xb !== 1 || yb !== 1) { - s2.push(pop(s2) + "scale(" + xb + "," + yb + ")"); - } - } - return function(a2, b) { - var s2 = [], q = []; - a2 = parse2(a2), b = parse2(b); - translate(a2.translateX, a2.translateY, b.translateX, b.translateY, s2, q); - rotate(a2.rotate, b.rotate, s2, q); - skewX(a2.skewX, b.skewX, s2, q); - scale(a2.scaleX, a2.scaleY, b.scaleX, b.scaleY, s2, q); - a2 = b = null; - return function(t) { - var i = -1, n = q.length, o; - while (++i < n) s2[(o = q[i]).i] = o.x(t); - return s2.join(""); - }; - }; -} -var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); -var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - -// node_modules/d3-interpolate/src/hsl.js -function hsl2(hue2) { - return function(start2, end) { - var h = hue2((start2 = hsl(start2)).h, (end = hsl(end)).h), s2 = nogamma(start2.s, end.s), l = nogamma(start2.l, end.l), opacity2 = nogamma(start2.opacity, end.opacity); - return function(t) { - start2.h = h(t); - start2.s = s2(t); - start2.l = l(t); - start2.opacity = opacity2(t); - return start2 + ""; - }; - }; -} -var hsl_default = hsl2(hue); -var hslLong = hsl2(nogamma); - -// node_modules/d3-interpolate/src/lab.js -function lab2(start2, end) { - var l = nogamma((start2 = lab(start2)).l, (end = lab(end)).l), a2 = nogamma(start2.a, end.a), b = nogamma(start2.b, end.b), opacity2 = nogamma(start2.opacity, end.opacity); - return function(t) { - start2.l = l(t); - start2.a = a2(t); - start2.b = b(t); - start2.opacity = opacity2(t); - return start2 + ""; - }; -} - -// node_modules/d3-interpolate/src/hcl.js -function hcl2(hue2) { - return function(start2, end) { - var h = hue2((start2 = hcl(start2)).h, (end = hcl(end)).h), c4 = nogamma(start2.c, end.c), l = nogamma(start2.l, end.l), opacity2 = nogamma(start2.opacity, end.opacity); - return function(t) { - start2.h = h(t); - start2.c = c4(t); - start2.l = l(t); - start2.opacity = opacity2(t); - return start2 + ""; - }; - }; -} -var hcl_default = hcl2(hue); -var hclLong = hcl2(nogamma); - -// node_modules/d3-interpolate/src/cubehelix.js -function cubehelix2(hue2) { - return (function cubehelixGamma(y2) { - y2 = +y2; - function cubehelix3(start2, end) { - var h = hue2((start2 = cubehelix(start2)).h, (end = cubehelix(end)).h), s2 = nogamma(start2.s, end.s), l = nogamma(start2.l, end.l), opacity2 = nogamma(start2.opacity, end.opacity); - return function(t) { - start2.h = h(t); - start2.s = s2(t); - start2.l = l(Math.pow(t, y2)); - start2.opacity = opacity2(t); - return start2 + ""; - }; - } - cubehelix3.gamma = cubehelixGamma; - return cubehelix3; - })(1); -} -var cubehelix_default = cubehelix2(hue); -var cubehelixLong = cubehelix2(nogamma); - -// node_modules/d3-interpolate/src/piecewise.js -function piecewise(interpolate, values2) { - if (values2 === void 0) values2 = interpolate, interpolate = value_default; - var i = 0, n = values2.length - 1, v = values2[0], I = new Array(n < 0 ? 0 : n); - while (i < n) I[i] = interpolate(v, v = values2[++i]); - return function(t) { - var i2 = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); - return I[i2](t - i2); - }; -} - -// node_modules/d3-interpolate/src/quantize.js -function quantize_default(interpolator, n) { - var samples = new Array(n); - for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); - return samples; -} - -// node_modules/d3-timer/src/timer.js -var frame = 0; -var timeout = 0; -var interval = 0; -var pokeDelay = 1e3; -var taskHead; -var taskTail; -var clockLast = 0; -var clockNow = 0; -var clockSkew = 0; -var clock = typeof performance === "object" && performance.now ? performance : Date; -var setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { - setTimeout(f, 17); -}; -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} -function clearNow() { - clockNow = 0; -} -function Timer() { - this._call = this._time = this._next = null; -} -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time2) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time2 = (time2 == null ? now() : +time2) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time2; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; -function timer(callback, delay, time2) { - var t = new Timer(); - t.restart(callback, delay, time2); - return t; -} -function timerFlush() { - now(); - ++frame; - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(void 0, e); - t = t._next; - } - --frame; -} -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} -function poke() { - var now2 = clock.now(), delay = now2 - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now2; -} -function nap() { - var t03, t13 = taskHead, t22, time2 = Infinity; - while (t13) { - if (t13._call) { - if (time2 > t13._time) time2 = t13._time; - t03 = t13, t13 = t13._next; - } else { - t22 = t13._next, t13._next = null; - t13 = t03 ? t03._next = t22 : taskHead = t22; - } - } - taskTail = t03; - sleep(time2); -} -function sleep(time2) { - if (frame) return; - if (timeout) timeout = clearTimeout(timeout); - var delay = time2 - clockNow; - if (delay > 24) { - if (time2 < Infinity) timeout = setTimeout(wake, time2 - clock.now() - clockSkew); - if (interval) interval = clearInterval(interval); - } else { - if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -// node_modules/d3-timer/src/timeout.js -function timeout_default(callback, delay, time2) { - var t = new Timer(); - delay = delay == null ? 0 : +delay; - t.restart((elapsed) => { - t.stop(); - callback(elapsed + delay); - }, delay, time2); - return t; -} - -// node_modules/d3-transition/src/transition/schedule.js -var emptyOn = dispatch_default("start", "end", "cancel", "interrupt"); -var emptyTween = []; -var CREATED = 0; -var SCHEDULED = 1; -var STARTING = 2; -var STARTED = 3; -var RUNNING = 4; -var ENDING = 5; -var ENDED = 6; -function schedule_default(node, name, id2, index2, group2, timing) { - var schedules = node.__transition; - if (!schedules) node.__transition = {}; - else if (id2 in schedules) return; - create(node, id2, { - name, - index: index2, - // For context during callback. - group: group2, - // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); -} -function init(node, id2) { - var schedule = get2(node, id2); - if (schedule.state > CREATED) throw new Error("too late; already scheduled"); - return schedule; -} -function set2(node, id2) { - var schedule = get2(node, id2); - if (schedule.state > STARTED) throw new Error("too late; already running"); - return schedule; -} -function get2(node, id2) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id2])) throw new Error("transition not found"); - return schedule; -} -function create(node, id2, self) { - var schedules = node.__transition, tween; - schedules[id2] = self; - self.timer = timer(schedule, 0, self.time); - function schedule(elapsed) { - self.state = SCHEDULED; - self.timer.restart(start2, self.delay, self.time); - if (self.delay <= elapsed) start2(elapsed - self.delay); - } - function start2(elapsed) { - var i, j, n, o; - if (self.state !== SCHEDULED) return stop(); - for (i in schedules) { - o = schedules[i]; - if (o.name !== self.name) continue; - if (o.state === STARTED) return timeout_default(start2); - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } else if (+i < id2) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - timeout_default(function() { - if (self.state === STARTED) { - self.state = RUNNING; - self.timer.restart(tick, self.delay, self.time); - tick(elapsed); - } - }); - self.state = STARTING; - self.on.call("start", node, node.__data__, self.index, self.group); - if (self.state !== STARTING) return; - self.state = STARTED; - tween = new Array(n = self.tween.length); - for (i = 0, j = -1; i < n; ++i) { - if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - function tick(elapsed) { - var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), i = -1, n = tween.length; - while (++i < n) { - tween[i].call(node, t); - } - if (self.state === ENDING) { - self.on.call("end", node, node.__data__, self.index, self.group); - stop(); - } - } - function stop() { - self.state = ENDED; - self.timer.stop(); - delete schedules[id2]; - for (var i in schedules) return; - delete node.__transition; - } -} - -// node_modules/d3-transition/src/interrupt.js -function interrupt_default(node, name) { - var schedules = node.__transition, schedule, active, empty3 = true, i; - if (!schedules) return; - name = name == null ? null : name + ""; - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { - empty3 = false; - continue; - } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - if (empty3) delete node.__transition; -} - -// node_modules/d3-transition/src/selection/interrupt.js -function interrupt_default2(name) { - return this.each(function() { - interrupt_default(this, name); - }); -} - -// node_modules/d3-transition/src/transition/tween.js -function tweenRemove(id2, name) { - var tween0, tween1; - return function() { - var schedule = set2(this, id2), tween = schedule.tween; - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - schedule.tween = tween1; - }; -} -function tweenFunction(id2, name, value) { - var tween0, tween1; - if (typeof value !== "function") throw new Error(); - return function() { - var schedule = set2(this, id2), tween = schedule.tween; - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = { name, value }, i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n) tween1.push(t); - } - schedule.tween = tween1; - }; -} -function tween_default(name, value) { - var id2 = this._id; - name += ""; - if (arguments.length < 2) { - var tween = get2(this.node(), id2).tween; - for (var i = 0, n = tween.length, t; i < n; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - return this.each((value == null ? tweenRemove : tweenFunction)(id2, name, value)); -} -function tweenValue(transition2, name, value) { - var id2 = transition2._id; - transition2.each(function() { - var schedule = set2(this, id2); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - return function(node) { - return get2(node, id2).value[name]; - }; -} - -// node_modules/d3-transition/src/transition/interpolate.js -function interpolate_default(a2, b) { - var c4; - return (typeof b === "number" ? number_default : b instanceof color ? rgb_default : (c4 = color(b)) ? (b = c4, rgb_default) : string_default)(a2, b); -} - -// node_modules/d3-transition/src/transition/attr.js -function attrRemove2(name) { - return function() { - this.removeAttribute(name); - }; -} -function attrRemoveNS2(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} -function attrConstant2(name, interpolate, value1) { - var string00, string1 = value1 + "", interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1); - }; -} -function attrConstantNS2(fullname, interpolate, value1) { - var string00, string1 = value1 + "", interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1); - }; -} -function attrFunction2(name, interpolate, value) { - var string00, string10, interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} -function attrFunctionNS2(fullname, interpolate, value) { - var string00, string10, interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} -function attr_default2(name, value) { - var fullname = namespace_default(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate_default; - return this.attrTween(name, typeof value === "function" ? (fullname.local ? attrFunctionNS2 : attrFunction2)(fullname, i, tweenValue(this, "attr." + name, value)) : value == null ? (fullname.local ? attrRemoveNS2 : attrRemove2)(fullname) : (fullname.local ? attrConstantNS2 : attrConstant2)(fullname, i, value)); -} - -// node_modules/d3-transition/src/transition/attrTween.js -function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i.call(this, t)); - }; -} -function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i.call(this, t)); - }; -} -function attrTweenNS(fullname, value) { - var t03, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t03 = (i0 = i) && attrInterpolateNS(fullname, i); - return t03; - } - tween._value = value; - return tween; -} -function attrTween(name, value) { - var t03, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t03 = (i0 = i) && attrInterpolate(name, i); - return t03; - } - tween._value = value; - return tween; -} -function attrTween_default(name, value) { - var key = "attr." + name; - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error(); - var fullname = namespace_default(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); -} - -// node_modules/d3-transition/src/transition/delay.js -function delayFunction(id2, value) { - return function() { - init(this, id2).delay = +value.apply(this, arguments); - }; -} -function delayConstant(id2, value) { - return value = +value, function() { - init(this, id2).delay = value; - }; -} -function delay_default(value) { - var id2 = this._id; - return arguments.length ? this.each((typeof value === "function" ? delayFunction : delayConstant)(id2, value)) : get2(this.node(), id2).delay; -} - -// node_modules/d3-transition/src/transition/duration.js -function durationFunction(id2, value) { - return function() { - set2(this, id2).duration = +value.apply(this, arguments); - }; -} -function durationConstant(id2, value) { - return value = +value, function() { - set2(this, id2).duration = value; - }; -} -function duration_default(value) { - var id2 = this._id; - return arguments.length ? this.each((typeof value === "function" ? durationFunction : durationConstant)(id2, value)) : get2(this.node(), id2).duration; -} - -// node_modules/d3-transition/src/transition/ease.js -function easeConstant(id2, value) { - if (typeof value !== "function") throw new Error(); - return function() { - set2(this, id2).ease = value; - }; -} -function ease_default(value) { - var id2 = this._id; - return arguments.length ? this.each(easeConstant(id2, value)) : get2(this.node(), id2).ease; -} - -// node_modules/d3-transition/src/transition/easeVarying.js -function easeVarying(id2, value) { - return function() { - var v = value.apply(this, arguments); - if (typeof v !== "function") throw new Error(); - set2(this, id2).ease = v; - }; -} -function easeVarying_default(value) { - if (typeof value !== "function") throw new Error(); - return this.each(easeVarying(this._id, value)); -} - -// node_modules/d3-transition/src/transition/filter.js -function filter_default2(match) { - if (typeof match !== "function") match = matcher_default(match); - for (var groups2 = this._groups, m = groups2.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group2[i]) && match.call(node, node.__data__, i, group2)) { - subgroup.push(node); - } - } - } - return new Transition(subgroups, this._parents, this._name, this._id); -} - -// node_modules/d3-transition/src/transition/merge.js -function merge_default2(transition2) { - if (transition2._id !== this._id) throw new Error(); - for (var groups0 = this._groups, groups1 = transition2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge2 = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge2[i] = node; - } - } - } - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - return new Transition(merges, this._parents, this._name, this._id); -} - -// node_modules/d3-transition/src/transition/on.js -function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) t = t.slice(0, i); - return !t || t === "start"; - }); -} -function onFunction(id2, name, listener) { - var on0, on1, sit = start(name) ? init : set2; - return function() { - var schedule = sit(this, id2), on = schedule.on; - if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); - schedule.on = on1; - }; -} -function on_default2(name, listener) { - var id2 = this._id; - return arguments.length < 2 ? get2(this.node(), id2).on.on(name) : this.each(onFunction(id2, name, listener)); -} - -// node_modules/d3-transition/src/transition/remove.js -function removeFunction(id2) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) if (+i !== id2) return; - if (parent) parent.removeChild(this); - }; -} -function remove_default2() { - return this.on("end.remove", removeFunction(this._id)); -} - -// node_modules/d3-transition/src/transition/select.js -function select_default3(select) { - var name = this._name, id2 = this._id; - if (typeof select !== "function") select = selector_default(select); - for (var groups2 = this._groups, m = groups2.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group2[i]) && (subnode = select.call(node, node.__data__, i, group2))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule_default(subgroup[i], name, id2, i, subgroup, get2(node, id2)); - } - } - } - return new Transition(subgroups, this._parents, name, id2); -} - -// node_modules/d3-transition/src/transition/selectAll.js -function selectAll_default2(select) { - var name = this._name, id2 = this._id; - if (typeof select !== "function") select = selectorAll_default(select); - for (var groups2 = this._groups, m = groups2.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, node, i = 0; i < n; ++i) { - if (node = group2[i]) { - for (var children2 = select.call(node, node.__data__, i, group2), child, inherit3 = get2(node, id2), k2 = 0, l = children2.length; k2 < l; ++k2) { - if (child = children2[k2]) { - schedule_default(child, name, id2, k2, children2, inherit3); - } - } - subgroups.push(children2); - parents.push(node); - } - } - } - return new Transition(subgroups, parents, name, id2); -} - -// node_modules/d3-transition/src/transition/selection.js -var Selection2 = selection_default.prototype.constructor; -function selection_default2() { - return new Selection2(this._groups, this._parents); -} - -// node_modules/d3-transition/src/transition/style.js -function styleNull(name, interpolate) { - var string00, string10, interpolate0; - return function() { - var string0 = styleValue(this, name), string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; -} -function styleRemove2(name) { - return function() { - this.style.removeProperty(name); - }; -} -function styleConstant2(name, interpolate, value1) { - var string00, string1 = value1 + "", interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1); - }; -} -function styleFunction2(name, interpolate, value) { - var string00, string10, interpolate0; - return function() { - var string0 = styleValue(this, name), value1 = value(this), string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} -function styleMaybeRemove(id2, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove2; - return function() { - var schedule = set2(this, id2), on = schedule.on, listener = schedule.value[key] == null ? remove2 || (remove2 = styleRemove2(name)) : void 0; - if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); - schedule.on = on1; - }; -} -function style_default2(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate_default; - return value == null ? this.styleTween(name, styleNull(name, i)).on("end.style." + name, styleRemove2(name)) : typeof value === "function" ? this.styleTween(name, styleFunction2(name, i, tweenValue(this, "style." + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant2(name, i, value), priority).on("end.style." + name, null); -} - -// node_modules/d3-transition/src/transition/styleTween.js -function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i.call(this, t), priority); - }; -} -function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; -} -function styleTween_default(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error(); - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); -} - -// node_modules/d3-transition/src/transition/text.js -function textConstant2(value) { - return function() { - this.textContent = value; - }; -} -function textFunction2(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; -} -function text_default2(value) { - return this.tween("text", typeof value === "function" ? textFunction2(tweenValue(this, "text", value)) : textConstant2(value == null ? "" : value + "")); -} - -// node_modules/d3-transition/src/transition/textTween.js -function textInterpolate(i) { - return function(t) { - this.textContent = i.call(this, t); - }; -} -function textTween(value) { - var t03, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t03 = (i0 = i) && textInterpolate(i); - return t03; - } - tween._value = value; - return tween; -} -function textTween_default(value) { - var key = "text"; - if (arguments.length < 1) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error(); - return this.tween(key, textTween(value)); -} - -// node_modules/d3-transition/src/transition/transition.js -function transition_default() { - var name = this._name, id0 = this._id, id1 = newId(); - for (var groups2 = this._groups, m = groups2.length, j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, node, i = 0; i < n; ++i) { - if (node = group2[i]) { - var inherit3 = get2(node, id0); - schedule_default(node, name, id1, i, group2, { - time: inherit3.time + inherit3.delay + inherit3.duration, - delay: 0, - duration: inherit3.duration, - ease: inherit3.ease - }); - } - } - } - return new Transition(groups2, this._parents, name, id1); -} - -// node_modules/d3-transition/src/transition/end.js -function end_default() { - var on0, on1, that = this, id2 = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = { value: reject }, end = { value: function() { - if (--size === 0) resolve(); - } }; - that.each(function() { - var schedule = set2(this, id2), on = schedule.on; - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - schedule.on = on1; - }); - if (size === 0) resolve(); - }); -} - -// node_modules/d3-transition/src/transition/index.js -var id = 0; -function Transition(groups2, parents, name, id2) { - this._groups = groups2; - this._parents = parents; - this._name = name; - this._id = id2; -} -function transition(name) { - return selection_default().transition(name); -} -function newId() { - return ++id; -} -var selection_prototype = selection_default.prototype; -Transition.prototype = transition.prototype = { - constructor: Transition, - select: select_default3, - selectAll: selectAll_default2, - selectChild: selection_prototype.selectChild, - selectChildren: selection_prototype.selectChildren, - filter: filter_default2, - merge: merge_default2, - selection: selection_default2, - transition: transition_default, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: on_default2, - attr: attr_default2, - attrTween: attrTween_default, - style: style_default2, - styleTween: styleTween_default, - text: text_default2, - textTween: textTween_default, - remove: remove_default2, - tween: tween_default, - delay: delay_default, - duration: duration_default, - ease: ease_default, - easeVarying: easeVarying_default, - end: end_default, - [Symbol.iterator]: selection_prototype[Symbol.iterator] -}; - -// node_modules/d3-ease/src/cubic.js -function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; -} - -// node_modules/d3-transition/src/selection/transition.js -var defaultTiming = { - time: null, - // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut -}; -function inherit(node, id2) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id2])) { - if (!(node = node.parentNode)) { - throw new Error(`transition ${id2} not found`); - } - } - return timing; -} -function transition_default2(name) { - var id2, timing; - if (name instanceof Transition) { - id2 = name._id, name = name._name; - } else { - id2 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; - } - for (var groups2 = this._groups, m = groups2.length, j = 0; j < m; ++j) { - for (var group2 = groups2[j], n = group2.length, node, i = 0; i < n; ++i) { - if (node = group2[i]) { - schedule_default(node, name, id2, i, group2, timing || inherit(node, id2)); - } - } - } - return new Transition(groups2, this._parents, name, id2); -} - -// node_modules/d3-transition/src/selection/index.js -selection_default.prototype.interrupt = interrupt_default2; -selection_default.prototype.transition = transition_default2; - -// node_modules/d3-brush/src/brush.js -var { abs, max: max2, min: min2 } = Math; -function number1(e) { - return [+e[0], +e[1]]; -} -function number22(e) { - return [number1(e[0]), number1(e[1])]; -} -var X = { - name: "x", - handles: ["w", "e"].map(type), - input: function(x2, e) { - return x2 == null ? null : [[+x2[0], e[0][1]], [+x2[1], e[1][1]]]; - }, - output: function(xy) { - return xy && [xy[0][0], xy[1][0]]; - } -}; -var Y = { - name: "y", - handles: ["n", "s"].map(type), - input: function(y2, e) { - return y2 == null ? null : [[e[0][0], +y2[0]], [e[1][0], +y2[1]]]; - }, - output: function(xy) { - return xy && [xy[0][1], xy[1][1]]; - } -}; -var XY = { - name: "xy", - handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type), - input: function(xy) { - return xy == null ? null : number22(xy); - }, - output: function(xy) { - return xy; - } -}; -function type(t) { - return { type: t }; -} - -// node_modules/d3-path/src/path.js -var pi = Math.PI; -var tau = 2 * pi; -var epsilon2 = 1e-6; -var tauEpsilon = tau - epsilon2; -function append(strings) { - this._ += strings[0]; - for (let i = 1, n = strings.length; i < n; ++i) { - this._ += arguments[i] + strings[i]; - } -} -function appendRound(digits) { - let d = Math.floor(digits); - if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`); - if (d > 15) return append; - const k2 = 10 ** d; - return function(strings) { - this._ += strings[0]; - for (let i = 1, n = strings.length; i < n; ++i) { - this._ += Math.round(arguments[i] * k2) / k2 + strings[i]; - } - }; -} -var Path = class { - constructor(digits) { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; - this._ = ""; - this._append = digits == null ? append : appendRound(digits); - } - moveTo(x2, y2) { - this._append`M${this._x0 = this._x1 = +x2},${this._y0 = this._y1 = +y2}`; - } - closePath() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._append`Z`; - } - } - lineTo(x2, y2) { - this._append`L${this._x1 = +x2},${this._y1 = +y2}`; - } - quadraticCurveTo(x12, y12, x2, y2) { - this._append`Q${+x12},${+y12},${this._x1 = +x2},${this._y1 = +y2}`; - } - bezierCurveTo(x12, y12, x2, y2, x3, y3) { - this._append`C${+x12},${+y12},${+x2},${+y2},${this._x1 = +x3},${this._y1 = +y3}`; - } - arcTo(x12, y12, x2, y2, r) { - x12 = +x12, y12 = +y12, x2 = +x2, y2 = +y2, r = +r; - if (r < 0) throw new Error(`negative radius: ${r}`); - let x05 = this._x1, y05 = this._y1, x21 = x2 - x12, y21 = y2 - y12, x01 = x05 - x12, y01 = y05 - y12, l01_2 = x01 * x01 + y01 * y01; - if (this._x1 === null) { - this._append`M${this._x1 = x12},${this._y1 = y12}`; - } else if (!(l01_2 > epsilon2)) ; - else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon2) || !r) { - this._append`L${this._x1 = x12},${this._y1 = y12}`; - } else { - let x20 = x2 - x05, y20 = y2 - y05, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l / l01, t21 = l / l21; - if (Math.abs(t01 - 1) > epsilon2) { - this._append`L${x12 + t01 * x01},${y12 + t01 * y01}`; - } - this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x12 + t21 * x21},${this._y1 = y12 + t21 * y21}`; - } - } - arc(x2, y2, r, a0, a1, ccw) { - x2 = +x2, y2 = +y2, r = +r, ccw = !!ccw; - if (r < 0) throw new Error(`negative radius: ${r}`); - let dx = r * Math.cos(a0), dy = r * Math.sin(a0), x05 = x2 + dx, y05 = y2 + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0; - if (this._x1 === null) { - this._append`M${x05},${y05}`; - } else if (Math.abs(this._x1 - x05) > epsilon2 || Math.abs(this._y1 - y05) > epsilon2) { - this._append`L${x05},${y05}`; - } - if (!r) return; - if (da < 0) da = da % tau + tau; - if (da > tauEpsilon) { - this._append`A${r},${r},0,1,${cw},${x2 - dx},${y2 - dy}A${r},${r},0,1,${cw},${this._x1 = x05},${this._y1 = y05}`; - } else if (da > epsilon2) { - this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x2 + r * Math.cos(a1)},${this._y1 = y2 + r * Math.sin(a1)}`; - } - } - rect(x2, y2, w, h) { - this._append`M${this._x0 = this._x1 = +x2},${this._y0 = this._y1 = +y2}h${w = +w}v${+h}h${-w}Z`; - } - toString() { - return this._; - } -}; -function path() { - return new Path(); -} -path.prototype = Path.prototype; -function pathRound(digits = 3) { - return new Path(+digits); -} - -// node_modules/d3-format/src/formatDecimal.js -function formatDecimal_default(x2) { - return Math.abs(x2 = Math.round(x2)) >= 1e21 ? x2.toLocaleString("en").replace(/,/g, "") : x2.toString(10); -} -function formatDecimalParts(x2, p) { - if (!isFinite(x2) || x2 === 0) return null; - var i = (x2 = p ? x2.toExponential(p - 1) : x2.toExponential()).indexOf("e"), coefficient = x2.slice(0, i); - return [ - coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, - +x2.slice(i + 1) - ]; -} - -// node_modules/d3-format/src/exponent.js -function exponent_default(x2) { - return x2 = formatDecimalParts(Math.abs(x2)), x2 ? x2[1] : NaN; -} - -// node_modules/d3-format/src/formatGroup.js -function formatGroup_default(grouping, thousands) { - return function(value, width) { - var i = value.length, t = [], j = 0, g = grouping[0], length3 = 0; - while (i > 0 && g > 0) { - if (length3 + g + 1 > width) g = Math.max(1, width - length3); - t.push(value.substring(i -= g, i + g)); - if ((length3 += g + 1) > width) break; - g = grouping[j = (j + 1) % grouping.length]; - } - return t.reverse().join(thousands); - }; -} - -// node_modules/d3-format/src/formatNumerals.js -function formatNumerals_default(numerals) { - return function(value) { - return value.replace(/[0-9]/g, function(i) { - return numerals[+i]; - }); - }; -} - -// node_modules/d3-format/src/formatSpecifier.js -var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; -function formatSpecifier(specifier) { - if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); - var match; - return new FormatSpecifier({ - fill: match[1], - align: match[2], - sign: match[3], - symbol: match[4], - zero: match[5], - width: match[6], - comma: match[7], - precision: match[8] && match[8].slice(1), - trim: match[9], - type: match[10] - }); -} -formatSpecifier.prototype = FormatSpecifier.prototype; -function FormatSpecifier(specifier) { - this.fill = specifier.fill === void 0 ? " " : specifier.fill + ""; - this.align = specifier.align === void 0 ? ">" : specifier.align + ""; - this.sign = specifier.sign === void 0 ? "-" : specifier.sign + ""; - this.symbol = specifier.symbol === void 0 ? "" : specifier.symbol + ""; - this.zero = !!specifier.zero; - this.width = specifier.width === void 0 ? void 0 : +specifier.width; - this.comma = !!specifier.comma; - this.precision = specifier.precision === void 0 ? void 0 : +specifier.precision; - this.trim = !!specifier.trim; - this.type = specifier.type === void 0 ? "" : specifier.type + ""; -} -FormatSpecifier.prototype.toString = function() { - return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (this.width === void 0 ? "" : Math.max(1, this.width | 0)) + (this.comma ? "," : "") + (this.precision === void 0 ? "" : "." + Math.max(0, this.precision | 0)) + (this.trim ? "~" : "") + this.type; -}; - -// node_modules/d3-format/src/formatTrim.js -function formatTrim_default(s2) { - out: for (var n = s2.length, i = 1, i0 = -1, i1; i < n; ++i) { - switch (s2[i]) { - case ".": - i0 = i1 = i; - break; - case "0": - if (i0 === 0) i0 = i; - i1 = i; - break; - default: - if (!+s2[i]) break out; - if (i0 > 0) i0 = 0; - break; - } - } - return i0 > 0 ? s2.slice(0, i0) + s2.slice(i1 + 1) : s2; -} - -// node_modules/d3-format/src/formatPrefixAuto.js -var prefixExponent; -function formatPrefixAuto_default(x2, p) { - var d = formatDecimalParts(x2, p); - if (!d) return prefixExponent = void 0, x2.toPrecision(p); - var coefficient = d[0], exponent = d[1], i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, n = coefficient.length; - return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join("0") : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) : "0." + new Array(1 - i).join("0") + formatDecimalParts(x2, Math.max(0, p + i - 1))[0]; -} - -// node_modules/d3-format/src/formatRounded.js -function formatRounded_default(x2, p) { - var d = formatDecimalParts(x2, p); - if (!d) return x2 + ""; - var coefficient = d[0], exponent = d[1]; - return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join("0"); -} - -// node_modules/d3-format/src/formatTypes.js -var formatTypes_default = { - "%": (x2, p) => (x2 * 100).toFixed(p), - "b": (x2) => Math.round(x2).toString(2), - "c": (x2) => x2 + "", - "d": formatDecimal_default, - "e": (x2, p) => x2.toExponential(p), - "f": (x2, p) => x2.toFixed(p), - "g": (x2, p) => x2.toPrecision(p), - "o": (x2) => Math.round(x2).toString(8), - "p": (x2, p) => formatRounded_default(x2 * 100, p), - "r": formatRounded_default, - "s": formatPrefixAuto_default, - "X": (x2) => Math.round(x2).toString(16).toUpperCase(), - "x": (x2) => Math.round(x2).toString(16) -}; - -// node_modules/d3-format/src/identity.js -function identity_default2(x2) { - return x2; -} - -// node_modules/d3-format/src/locale.js -var map3 = Array.prototype.map; -var prefixes = ["y", "z", "a", "f", "p", "n", "\xB5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"]; -function locale_default(locale3) { - var group2 = locale3.grouping === void 0 || locale3.thousands === void 0 ? identity_default2 : formatGroup_default(map3.call(locale3.grouping, Number), locale3.thousands + ""), currencyPrefix = locale3.currency === void 0 ? "" : locale3.currency[0] + "", currencySuffix = locale3.currency === void 0 ? "" : locale3.currency[1] + "", decimal = locale3.decimal === void 0 ? "." : locale3.decimal + "", numerals = locale3.numerals === void 0 ? identity_default2 : formatNumerals_default(map3.call(locale3.numerals, String)), percent = locale3.percent === void 0 ? "%" : locale3.percent + "", minus = locale3.minus === void 0 ? "\u2212" : locale3.minus + "", nan = locale3.nan === void 0 ? "NaN" : locale3.nan + ""; - function newFormat(specifier, options) { - specifier = formatSpecifier(specifier); - var fill = specifier.fill, align = specifier.align, sign3 = specifier.sign, symbol2 = specifier.symbol, zero3 = specifier.zero, width = specifier.width, comma = specifier.comma, precision = specifier.precision, trim = specifier.trim, type2 = specifier.type; - if (type2 === "n") comma = true, type2 = "g"; - else if (!formatTypes_default[type2]) precision === void 0 && (precision = 12), trim = true, type2 = "g"; - if (zero3 || fill === "0" && align === "=") zero3 = true, fill = "0", align = "="; - var prefix = (options && options.prefix !== void 0 ? options.prefix : "") + (symbol2 === "$" ? currencyPrefix : symbol2 === "#" && /[boxX]/.test(type2) ? "0" + type2.toLowerCase() : ""), suffix = (symbol2 === "$" ? currencySuffix : /[%p]/.test(type2) ? percent : "") + (options && options.suffix !== void 0 ? options.suffix : ""); - var formatType = formatTypes_default[type2], maybeSuffix = /[defgprs%]/.test(type2); - precision = precision === void 0 ? 6 : /[gprs]/.test(type2) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision)); - function format3(value) { - var valuePrefix = prefix, valueSuffix = suffix, i, n, c4; - if (type2 === "c") { - valueSuffix = formatType(value) + valueSuffix; - value = ""; - } else { - value = +value; - var valueNegative = value < 0 || 1 / value < 0; - value = isNaN(value) ? nan : formatType(Math.abs(value), precision); - if (trim) value = formatTrim_default(value); - if (valueNegative && +value === 0 && sign3 !== "+") valueNegative = false; - valuePrefix = (valueNegative ? sign3 === "(" ? sign3 : minus : sign3 === "-" || sign3 === "(" ? "" : sign3) + valuePrefix; - valueSuffix = (type2 === "s" && !isNaN(value) && prefixExponent !== void 0 ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign3 === "(" ? ")" : ""); - if (maybeSuffix) { - i = -1, n = value.length; - while (++i < n) { - if (c4 = value.charCodeAt(i), 48 > c4 || c4 > 57) { - valueSuffix = (c4 === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; - value = value.slice(0, i); - break; - } - } - } - } - if (comma && !zero3) value = group2(value, Infinity); - var length3 = valuePrefix.length + value.length + valueSuffix.length, padding = length3 < width ? new Array(width - length3 + 1).join(fill) : ""; - if (comma && zero3) value = group2(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; - switch (align) { - case "<": - value = valuePrefix + value + valueSuffix + padding; - break; - case "=": - value = valuePrefix + padding + value + valueSuffix; - break; - case "^": - value = padding.slice(0, length3 = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length3); - break; - default: - value = padding + valuePrefix + value + valueSuffix; - break; - } - return numerals(value); - } - format3.toString = function() { - return specifier + ""; - }; - return format3; - } - function formatPrefix2(specifier, value) { - var e = Math.max(-8, Math.min(8, Math.floor(exponent_default(value) / 3))) * 3, k2 = Math.pow(10, -e), f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier), { suffix: prefixes[8 + e / 3] }); - return function(value2) { - return f(k2 * value2); - }; - } - return { - format: newFormat, - formatPrefix: formatPrefix2 - }; -} - -// node_modules/d3-format/src/defaultLocale.js -var locale; -var format; -var formatPrefix; -defaultLocale({ - thousands: ",", - grouping: [3], - currency: ["$", ""] -}); -function defaultLocale(definition) { - locale = locale_default(definition); - format = locale.format; - formatPrefix = locale.formatPrefix; - return locale; -} - -// node_modules/d3-format/src/precisionFixed.js -function precisionFixed_default(step) { - return Math.max(0, -exponent_default(Math.abs(step))); -} - -// node_modules/d3-format/src/precisionPrefix.js -function precisionPrefix_default(step, value) { - return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent_default(value) / 3))) * 3 - exponent_default(Math.abs(step))); -} - -// node_modules/d3-format/src/precisionRound.js -function precisionRound_default(step, max3) { - step = Math.abs(step), max3 = Math.abs(max3) - step; - return Math.max(0, exponent_default(max3) - exponent_default(step)) + 1; -} - -// node_modules/d3-geo/src/math.js -var epsilon3 = 1e-6; -var epsilon22 = 1e-12; -var pi2 = Math.PI; -var halfPi = pi2 / 2; -var quarterPi = pi2 / 4; -var tau2 = pi2 * 2; -var degrees3 = 180 / pi2; -var radians2 = pi2 / 180; -var abs2 = Math.abs; -var atan = Math.atan; -var atan2 = Math.atan2; -var cos = Math.cos; -var exp = Math.exp; -var log = Math.log; -var pow = Math.pow; -var sin = Math.sin; -var sign = Math.sign || function(x2) { - return x2 > 0 ? 1 : x2 < 0 ? -1 : 0; -}; -var sqrt = Math.sqrt; -var tan = Math.tan; -function acos(x2) { - return x2 > 1 ? 0 : x2 < -1 ? pi2 : Math.acos(x2); -} -function asin(x2) { - return x2 > 1 ? halfPi : x2 < -1 ? -halfPi : Math.asin(x2); -} - -// node_modules/d3-geo/src/noop.js -function noop2() { -} - -// node_modules/d3-geo/src/stream.js -function streamGeometry(geometry, stream) { - if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { - streamGeometryType[geometry.type](geometry, stream); - } -} -var streamObjectType = { - Feature: function(object, stream) { - streamGeometry(object.geometry, stream); - }, - FeatureCollection: function(object, stream) { - var features = object.features, i = -1, n = features.length; - while (++i < n) streamGeometry(features[i].geometry, stream); - } -}; -var streamGeometryType = { - Sphere: function(object, stream) { - stream.sphere(); - }, - Point: function(object, stream) { - object = object.coordinates; - stream.point(object[0], object[1], object[2]); - }, - MultiPoint: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); - }, - LineString: function(object, stream) { - streamLine(object.coordinates, stream, 0); - }, - MultiLineString: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamLine(coordinates[i], stream, 0); - }, - Polygon: function(object, stream) { - streamPolygon(object.coordinates, stream); - }, - MultiPolygon: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamPolygon(coordinates[i], stream); - }, - GeometryCollection: function(object, stream) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) streamGeometry(geometries[i], stream); - } -}; -function streamLine(coordinates, stream, closed) { - var i = -1, n = coordinates.length - closed, coordinate; - stream.lineStart(); - while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); - stream.lineEnd(); -} -function streamPolygon(coordinates, stream) { - var i = -1, n = coordinates.length; - stream.polygonStart(); - while (++i < n) streamLine(coordinates[i], stream, 1); - stream.polygonEnd(); -} -function stream_default(object, stream) { - if (object && streamObjectType.hasOwnProperty(object.type)) { - streamObjectType[object.type](object, stream); - } else { - streamGeometry(object, stream); - } -} - -// node_modules/d3-geo/src/cartesian.js -function spherical(cartesian2) { - return [atan2(cartesian2[1], cartesian2[0]), asin(cartesian2[2])]; -} -function cartesian(spherical2) { - var lambda = spherical2[0], phi = spherical2[1], cosPhi = cos(phi); - return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)]; -} -function cartesianDot(a2, b) { - return a2[0] * b[0] + a2[1] * b[1] + a2[2] * b[2]; -} -function cartesianCross(a2, b) { - return [a2[1] * b[2] - a2[2] * b[1], a2[2] * b[0] - a2[0] * b[2], a2[0] * b[1] - a2[1] * b[0]]; -} -function cartesianAddInPlace(a2, b) { - a2[0] += b[0], a2[1] += b[1], a2[2] += b[2]; -} -function cartesianScale(vector, k2) { - return [vector[0] * k2, vector[1] * k2, vector[2] * k2]; -} -function cartesianNormalizeInPlace(d) { - var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); - d[0] /= l, d[1] /= l, d[2] /= l; -} - -// node_modules/d3-geo/src/compose.js -function compose_default(a2, b) { - function compose(x2, y2) { - return x2 = a2(x2, y2), b(x2[0], x2[1]); - } - if (a2.invert && b.invert) compose.invert = function(x2, y2) { - return x2 = b.invert(x2, y2), x2 && a2.invert(x2[0], x2[1]); - }; - return compose; -} - -// node_modules/d3-geo/src/rotation.js -function rotationIdentity(lambda, phi) { - if (abs2(lambda) > pi2) lambda -= Math.round(lambda / tau2) * tau2; - return [lambda, phi]; -} -rotationIdentity.invert = rotationIdentity; -function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { - return (deltaLambda %= tau2) ? deltaPhi || deltaGamma ? compose_default(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) : rotationLambda(deltaLambda) : deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) : rotationIdentity; -} -function forwardRotationLambda(deltaLambda) { - return function(lambda, phi) { - lambda += deltaLambda; - if (abs2(lambda) > pi2) lambda -= Math.round(lambda / tau2) * tau2; - return [lambda, phi]; - }; -} -function rotationLambda(deltaLambda) { - var rotation = forwardRotationLambda(deltaLambda); - rotation.invert = forwardRotationLambda(-deltaLambda); - return rotation; -} -function rotationPhiGamma(deltaPhi, deltaGamma) { - var cosDeltaPhi = cos(deltaPhi), sinDeltaPhi = sin(deltaPhi), cosDeltaGamma = cos(deltaGamma), sinDeltaGamma = sin(deltaGamma); - function rotation(lambda, phi) { - var cosPhi = cos(phi), x2 = cos(lambda) * cosPhi, y2 = sin(lambda) * cosPhi, z = sin(phi), k2 = z * cosDeltaPhi + x2 * sinDeltaPhi; - return [ - atan2(y2 * cosDeltaGamma - k2 * sinDeltaGamma, x2 * cosDeltaPhi - z * sinDeltaPhi), - asin(k2 * cosDeltaGamma + y2 * sinDeltaGamma) - ]; - } - rotation.invert = function(lambda, phi) { - var cosPhi = cos(phi), x2 = cos(lambda) * cosPhi, y2 = sin(lambda) * cosPhi, z = sin(phi), k2 = z * cosDeltaGamma - y2 * sinDeltaGamma; - return [ - atan2(y2 * cosDeltaGamma + z * sinDeltaGamma, x2 * cosDeltaPhi + k2 * sinDeltaPhi), - asin(k2 * cosDeltaPhi - x2 * sinDeltaPhi) - ]; - }; - return rotation; -} -function rotation_default(rotate) { - rotate = rotateRadians(rotate[0] * radians2, rotate[1] * radians2, rotate.length > 2 ? rotate[2] * radians2 : 0); - function forward(coordinates) { - coordinates = rotate(coordinates[0] * radians2, coordinates[1] * radians2); - return coordinates[0] *= degrees3, coordinates[1] *= degrees3, coordinates; - } - forward.invert = function(coordinates) { - coordinates = rotate.invert(coordinates[0] * radians2, coordinates[1] * radians2); - return coordinates[0] *= degrees3, coordinates[1] *= degrees3, coordinates; - }; - return forward; -} - -// node_modules/d3-geo/src/circle.js -function circleStream(stream, radius2, delta, direction, t03, t13) { - if (!delta) return; - var cosRadius = cos(radius2), sinRadius = sin(radius2), step = direction * delta; - if (t03 == null) { - t03 = radius2 + direction * tau2; - t13 = radius2 - step / 2; - } else { - t03 = circleRadius(cosRadius, t03); - t13 = circleRadius(cosRadius, t13); - if (direction > 0 ? t03 < t13 : t03 > t13) t03 += direction * tau2; - } - for (var point6, t = t03; direction > 0 ? t > t13 : t < t13; t -= step) { - point6 = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]); - stream.point(point6[0], point6[1]); - } -} -function circleRadius(cosRadius, point6) { - point6 = cartesian(point6), point6[0] -= cosRadius; - cartesianNormalizeInPlace(point6); - var radius2 = acos(-point6[1]); - return ((-point6[2] < 0 ? -radius2 : radius2) + tau2 - epsilon3) % tau2; -} - -// node_modules/d3-geo/src/clip/buffer.js -function buffer_default() { - var lines = [], line2; - return { - point: function(x2, y2, m) { - line2.push([x2, y2, m]); - }, - lineStart: function() { - lines.push(line2 = []); - }, - lineEnd: noop2, - rejoin: function() { - if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); - }, - result: function() { - var result = lines; - lines = []; - line2 = null; - return result; - } - }; -} - -// node_modules/d3-geo/src/pointEqual.js -function pointEqual_default(a2, b) { - return abs2(a2[0] - b[0]) < epsilon3 && abs2(a2[1] - b[1]) < epsilon3; -} - -// node_modules/d3-geo/src/clip/rejoin.js -function Intersection(point6, points, other, entry) { - this.x = point6; - this.z = points; - this.o = other; - this.e = entry; - this.v = false; - this.n = this.p = null; -} -function rejoin_default(segments, compareIntersection2, startInside, interpolate, stream) { - var subject = [], clip = [], i, n; - segments.forEach(function(segment) { - if ((n2 = segment.length - 1) <= 0) return; - var n2, p0 = segment[0], p1 = segment[n2], x2; - if (pointEqual_default(p0, p1)) { - if (!p0[2] && !p1[2]) { - stream.lineStart(); - for (i = 0; i < n2; ++i) stream.point((p0 = segment[i])[0], p0[1]); - stream.lineEnd(); - return; - } - p1[0] += 2 * epsilon3; - } - subject.push(x2 = new Intersection(p0, segment, null, true)); - clip.push(x2.o = new Intersection(p0, null, x2, false)); - subject.push(x2 = new Intersection(p1, segment, null, false)); - clip.push(x2.o = new Intersection(p1, null, x2, true)); - }); - if (!subject.length) return; - clip.sort(compareIntersection2); - link(subject); - link(clip); - for (i = 0, n = clip.length; i < n; ++i) { - clip[i].e = startInside = !startInside; - } - var start2 = subject[0], points, point6; - while (1) { - var current = start2, isSubject = true; - while (current.v) if ((current = current.n) === start2) return; - points = current.z; - stream.lineStart(); - do { - current.v = current.o.v = true; - if (current.e) { - if (isSubject) { - for (i = 0, n = points.length; i < n; ++i) stream.point((point6 = points[i])[0], point6[1]); - } else { - interpolate(current.x, current.n.x, 1, stream); - } - current = current.n; - } else { - if (isSubject) { - points = current.p.z; - for (i = points.length - 1; i >= 0; --i) stream.point((point6 = points[i])[0], point6[1]); - } else { - interpolate(current.x, current.p.x, -1, stream); - } - current = current.p; - } - current = current.o; - points = current.z; - isSubject = !isSubject; - } while (!current.v); - stream.lineEnd(); - } -} -function link(array2) { - if (!(n = array2.length)) return; - var n, i = 0, a2 = array2[0], b; - while (++i < n) { - a2.n = b = array2[i]; - b.p = a2; - a2 = b; - } - a2.n = b = array2[0]; - b.p = a2; -} - -// node_modules/d3-geo/src/polygonContains.js -function longitude(point6) { - return abs2(point6[0]) <= pi2 ? point6[0] : sign(point6[0]) * ((abs2(point6[0]) + pi2) % tau2 - pi2); -} -function polygonContains_default(polygon, point6) { - var lambda = longitude(point6), phi = point6[1], sinPhi = sin(phi), normal = [sin(lambda), -cos(lambda), 0], angle = 0, winding = 0; - var sum2 = new Adder(); - if (sinPhi === 1) phi = halfPi + epsilon3; - else if (sinPhi === -1) phi = -halfPi - epsilon3; - for (var i = 0, n = polygon.length; i < n; ++i) { - if (!(m = (ring = polygon[i]).length)) continue; - var ring, m, point0 = ring[m - 1], lambda0 = longitude(point0), phi0 = point0[1] / 2 + quarterPi, sinPhi0 = sin(phi0), cosPhi0 = cos(phi0); - for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { - var point1 = ring[j], lambda1 = longitude(point1), phi1 = point1[1] / 2 + quarterPi, sinPhi1 = sin(phi1), cosPhi1 = cos(phi1), delta = lambda1 - lambda0, sign3 = delta >= 0 ? 1 : -1, absDelta = sign3 * delta, antimeridian = absDelta > pi2, k2 = sinPhi0 * sinPhi1; - sum2.add(atan2(k2 * sign3 * sin(absDelta), cosPhi0 * cosPhi1 + k2 * cos(absDelta))); - angle += antimeridian ? delta + sign3 * tau2 : delta; - if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { - var arc = cartesianCross(cartesian(point0), cartesian(point1)); - cartesianNormalizeInPlace(arc); - var intersection = cartesianCross(normal, arc); - cartesianNormalizeInPlace(intersection); - var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]); - if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { - winding += antimeridian ^ delta >= 0 ? 1 : -1; - } - } - } - } - return (angle < -epsilon3 || angle < epsilon3 && sum2 < -epsilon22) ^ winding & 1; -} - -// node_modules/d3-geo/src/clip/index.js -function clip_default(pointVisible, clipLine, interpolate, start2) { - return function(sink) { - var line2 = clipLine(sink), ringBuffer = buffer_default(), ringSink = clipLine(ringBuffer), polygonStarted = false, polygon, segments, ring; - var clip = { - point: point6, - lineStart, - lineEnd, - polygonStart: function() { - clip.point = pointRing; - clip.lineStart = ringStart; - clip.lineEnd = ringEnd; - segments = []; - polygon = []; - }, - polygonEnd: function() { - clip.point = point6; - clip.lineStart = lineStart; - clip.lineEnd = lineEnd; - segments = merge(segments); - var startInside = polygonContains_default(polygon, start2); - if (segments.length) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - rejoin_default(segments, compareIntersection, startInside, interpolate, sink); - } else if (startInside) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - } - if (polygonStarted) sink.polygonEnd(), polygonStarted = false; - segments = polygon = null; - }, - sphere: function() { - sink.polygonStart(); - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - sink.polygonEnd(); - } - }; - function point6(lambda, phi) { - if (pointVisible(lambda, phi)) sink.point(lambda, phi); - } - function pointLine(lambda, phi) { - line2.point(lambda, phi); - } - function lineStart() { - clip.point = pointLine; - line2.lineStart(); - } - function lineEnd() { - clip.point = point6; - line2.lineEnd(); - } - function pointRing(lambda, phi) { - ring.push([lambda, phi]); - ringSink.point(lambda, phi); - } - function ringStart() { - ringSink.lineStart(); - ring = []; - } - function ringEnd() { - pointRing(ring[0][0], ring[0][1]); - ringSink.lineEnd(); - var clean = ringSink.clean(), ringSegments = ringBuffer.result(), i, n = ringSegments.length, m, segment, point7; - ring.pop(); - polygon.push(ring); - ring = null; - if (!n) return; - if (clean & 1) { - segment = ringSegments[0]; - if ((m = segment.length - 1) > 0) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - for (i = 0; i < m; ++i) sink.point((point7 = segment[i])[0], point7[1]); - sink.lineEnd(); - } - return; - } - if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); - segments.push(ringSegments.filter(validSegment)); - } - return clip; - }; -} -function validSegment(segment) { - return segment.length > 1; -} -function compareIntersection(a2, b) { - return ((a2 = a2.x)[0] < 0 ? a2[1] - halfPi - epsilon3 : halfPi - a2[1]) - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon3 : halfPi - b[1]); -} - -// node_modules/d3-geo/src/clip/antimeridian.js -var antimeridian_default = clip_default( - function() { - return true; - }, - clipAntimeridianLine, - clipAntimeridianInterpolate, - [-pi2, -halfPi] -); -function clipAntimeridianLine(stream) { - var lambda0 = NaN, phi0 = NaN, sign0 = NaN, clean; - return { - lineStart: function() { - stream.lineStart(); - clean = 1; - }, - point: function(lambda1, phi1) { - var sign1 = lambda1 > 0 ? pi2 : -pi2, delta = abs2(lambda1 - lambda0); - if (abs2(delta - pi2) < epsilon3) { - stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - stream.point(lambda1, phi0); - clean = 0; - } else if (sign0 !== sign1 && delta >= pi2) { - if (abs2(lambda0 - sign0) < epsilon3) lambda0 -= sign0 * epsilon3; - if (abs2(lambda1 - sign1) < epsilon3) lambda1 -= sign1 * epsilon3; - phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - clean = 0; - } - stream.point(lambda0 = lambda1, phi0 = phi1); - sign0 = sign1; - }, - lineEnd: function() { - stream.lineEnd(); - lambda0 = phi0 = NaN; - }, - clean: function() { - return 2 - clean; - } - }; -} -function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { - var cosPhi0, cosPhi1, sinLambda0Lambda1 = sin(lambda0 - lambda1); - return abs2(sinLambda0Lambda1) > epsilon3 ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1) - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0)) / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) : (phi0 + phi1) / 2; -} -function clipAntimeridianInterpolate(from, to, direction, stream) { - var phi; - if (from == null) { - phi = direction * halfPi; - stream.point(-pi2, phi); - stream.point(0, phi); - stream.point(pi2, phi); - stream.point(pi2, 0); - stream.point(pi2, -phi); - stream.point(0, -phi); - stream.point(-pi2, -phi); - stream.point(-pi2, 0); - stream.point(-pi2, phi); - } else if (abs2(from[0] - to[0]) > epsilon3) { - var lambda = from[0] < to[0] ? pi2 : -pi2; - phi = direction * lambda / 2; - stream.point(-lambda, phi); - stream.point(0, phi); - stream.point(lambda, phi); - } else { - stream.point(to[0], to[1]); - } -} - -// node_modules/d3-geo/src/clip/circle.js -function circle_default(radius2) { - var cr = cos(radius2), delta = 2 * radians2, smallRadius = cr > 0, notHemisphere = abs2(cr) > epsilon3; - function interpolate(from, to, direction, stream) { - circleStream(stream, radius2, delta, direction, from, to); - } - function visible(lambda, phi) { - return cos(lambda) * cos(phi) > cr; - } - function clipLine(stream) { - var point0, c0, v0, v00, clean; - return { - lineStart: function() { - v00 = v0 = false; - clean = 1; - }, - point: function(lambda, phi) { - var point1 = [lambda, phi], point22, v = visible(lambda, phi), c4 = smallRadius ? v ? 0 : code(lambda, phi) : v ? code(lambda + (lambda < 0 ? pi2 : -pi2), phi) : 0; - if (!point0 && (v00 = v0 = v)) stream.lineStart(); - if (v !== v0) { - point22 = intersect(point0, point1); - if (!point22 || pointEqual_default(point0, point22) || pointEqual_default(point1, point22)) - point1[2] = 1; - } - if (v !== v0) { - clean = 0; - if (v) { - stream.lineStart(); - point22 = intersect(point1, point0); - stream.point(point22[0], point22[1]); - } else { - point22 = intersect(point0, point1); - stream.point(point22[0], point22[1], 2); - stream.lineEnd(); - } - point0 = point22; - } else if (notHemisphere && point0 && smallRadius ^ v) { - var t; - if (!(c4 & c0) && (t = intersect(point1, point0, true))) { - clean = 0; - if (smallRadius) { - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - } else { - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - stream.lineStart(); - stream.point(t[0][0], t[0][1], 3); - } - } - } - if (v && (!point0 || !pointEqual_default(point0, point1))) { - stream.point(point1[0], point1[1]); - } - point0 = point1, v0 = v, c0 = c4; - }, - lineEnd: function() { - if (v0) stream.lineEnd(); - point0 = null; - }, - // Rejoin first and last segments if there were intersections and the first - // and last points were visible. - clean: function() { - return clean | (v00 && v0) << 1; - } - }; - } - function intersect(a2, b, two) { - var pa = cartesian(a2), pb = cartesian(b); - var n1 = [1, 0, 0], n2 = cartesianCross(pa, pb), n2n2 = cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2; - if (!determinant) return !two && a2; - var c1 = cr * n2n2 / determinant, c22 = -cr * n1n2 / determinant, n1xn2 = cartesianCross(n1, n2), A5 = cartesianScale(n1, c1), B2 = cartesianScale(n2, c22); - cartesianAddInPlace(A5, B2); - var u = n1xn2, w = cartesianDot(A5, u), uu = cartesianDot(u, u), t22 = w * w - uu * (cartesianDot(A5, A5) - 1); - if (t22 < 0) return; - var t = sqrt(t22), q = cartesianScale(u, (-w - t) / uu); - cartesianAddInPlace(q, A5); - q = spherical(q); - if (!two) return q; - var lambda0 = a2[0], lambda1 = b[0], phi0 = a2[1], phi1 = b[1], z; - if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; - var delta2 = lambda1 - lambda0, polar = abs2(delta2 - pi2) < epsilon3, meridian = polar || delta2 < epsilon3; - if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; - if (meridian ? polar ? phi0 + phi1 > 0 ^ q[1] < (abs2(q[0] - lambda0) < epsilon3 ? phi0 : phi1) : phi0 <= q[1] && q[1] <= phi1 : delta2 > pi2 ^ (lambda0 <= q[0] && q[0] <= lambda1)) { - var q1 = cartesianScale(u, (-w + t) / uu); - cartesianAddInPlace(q1, A5); - return [q, spherical(q1)]; - } - } - function code(lambda, phi) { - var r = smallRadius ? radius2 : pi2 - radius2, code2 = 0; - if (lambda < -r) code2 |= 1; - else if (lambda > r) code2 |= 2; - if (phi < -r) code2 |= 4; - else if (phi > r) code2 |= 8; - return code2; - } - return clip_default(visible, clipLine, interpolate, smallRadius ? [0, -radius2] : [-pi2, radius2 - pi2]); -} - -// node_modules/d3-geo/src/clip/line.js -function line_default(a2, b, x05, y05, x12, y12) { - var ax = a2[0], ay = a2[1], bx = b[0], by = b[1], t03 = 0, t13 = 1, dx = bx - ax, dy = by - ay, r; - r = x05 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t03) return; - if (r < t13) t13 = r; - } else if (dx > 0) { - if (r > t13) return; - if (r > t03) t03 = r; - } - r = x12 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t13) return; - if (r > t03) t03 = r; - } else if (dx > 0) { - if (r < t03) return; - if (r < t13) t13 = r; - } - r = y05 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t03) return; - if (r < t13) t13 = r; - } else if (dy > 0) { - if (r > t13) return; - if (r > t03) t03 = r; - } - r = y12 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t13) return; - if (r > t03) t03 = r; - } else if (dy > 0) { - if (r < t03) return; - if (r < t13) t13 = r; - } - if (t03 > 0) a2[0] = ax + t03 * dx, a2[1] = ay + t03 * dy; - if (t13 < 1) b[0] = ax + t13 * dx, b[1] = ay + t13 * dy; - return true; -} - -// node_modules/d3-geo/src/clip/rectangle.js -var clipMax = 1e9; -var clipMin = -clipMax; -function clipRectangle(x05, y05, x12, y12) { - function visible(x2, y2) { - return x05 <= x2 && x2 <= x12 && y05 <= y2 && y2 <= y12; - } - function interpolate(from, to, direction, stream) { - var a2 = 0, a1 = 0; - if (from == null || (a2 = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoint(from, to) < 0 ^ direction > 0) { - do - stream.point(a2 === 0 || a2 === 3 ? x05 : x12, a2 > 1 ? y12 : y05); - while ((a2 = (a2 + direction + 4) % 4) !== a1); - } else { - stream.point(to[0], to[1]); - } - } - function corner(p, direction) { - return abs2(p[0] - x05) < epsilon3 ? direction > 0 ? 0 : 3 : abs2(p[0] - x12) < epsilon3 ? direction > 0 ? 2 : 1 : abs2(p[1] - y05) < epsilon3 ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; - } - function compareIntersection2(a2, b) { - return comparePoint(a2.x, b.x); - } - function comparePoint(a2, b) { - var ca = corner(a2, 1), cb = corner(b, 1); - return ca !== cb ? ca - cb : ca === 0 ? b[1] - a2[1] : ca === 1 ? a2[0] - b[0] : ca === 2 ? a2[1] - b[1] : b[0] - a2[0]; - } - return function(stream) { - var activeStream = stream, bufferStream = buffer_default(), segments, polygon, ring, x__, y__, v__, x_, y_, v_, first2, clean; - var clipStream = { - point: point6, - lineStart, - lineEnd, - polygonStart, - polygonEnd - }; - function point6(x2, y2) { - if (visible(x2, y2)) activeStream.point(x2, y2); - } - function polygonInside() { - var winding = 0; - for (var i = 0, n = polygon.length; i < n; ++i) { - for (var ring2 = polygon[i], j = 1, m = ring2.length, point7 = ring2[0], a0, a1, b0 = point7[0], b1 = point7[1]; j < m; ++j) { - a0 = b0, a1 = b1, point7 = ring2[j], b0 = point7[0], b1 = point7[1]; - if (a1 <= y12) { - if (b1 > y12 && (b0 - a0) * (y12 - a1) > (b1 - a1) * (x05 - a0)) ++winding; - } else { - if (b1 <= y12 && (b0 - a0) * (y12 - a1) < (b1 - a1) * (x05 - a0)) --winding; - } - } - } - return winding; - } - function polygonStart() { - activeStream = bufferStream, segments = [], polygon = [], clean = true; - } - function polygonEnd() { - var startInside = polygonInside(), cleanInside = clean && startInside, visible2 = (segments = merge(segments)).length; - if (cleanInside || visible2) { - stream.polygonStart(); - if (cleanInside) { - stream.lineStart(); - interpolate(null, null, 1, stream); - stream.lineEnd(); - } - if (visible2) { - rejoin_default(segments, compareIntersection2, startInside, interpolate, stream); - } - stream.polygonEnd(); - } - activeStream = stream, segments = polygon = ring = null; - } - function lineStart() { - clipStream.point = linePoint; - if (polygon) polygon.push(ring = []); - first2 = true; - v_ = false; - x_ = y_ = NaN; - } - function lineEnd() { - if (segments) { - linePoint(x__, y__); - if (v__ && v_) bufferStream.rejoin(); - segments.push(bufferStream.result()); - } - clipStream.point = point6; - if (v_) activeStream.lineEnd(); - } - function linePoint(x2, y2) { - var v = visible(x2, y2); - if (polygon) ring.push([x2, y2]); - if (first2) { - x__ = x2, y__ = y2, v__ = v; - first2 = false; - if (v) { - activeStream.lineStart(); - activeStream.point(x2, y2); - } - } else { - if (v && v_) activeStream.point(x2, y2); - else { - var a2 = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], b = [x2 = Math.max(clipMin, Math.min(clipMax, x2)), y2 = Math.max(clipMin, Math.min(clipMax, y2))]; - if (line_default(a2, b, x05, y05, x12, y12)) { - if (!v_) { - activeStream.lineStart(); - activeStream.point(a2[0], a2[1]); - } - activeStream.point(b[0], b[1]); - if (!v) activeStream.lineEnd(); - clean = false; - } else if (v) { - activeStream.lineStart(); - activeStream.point(x2, y2); - clean = false; - } - } - } - x_ = x2, y_ = y2, v_ = v; - } - return clipStream; - }; -} - -// node_modules/d3-geo/src/identity.js -var identity_default3 = (x2) => x2; - -// node_modules/d3-geo/src/path/area.js -var areaSum = new Adder(); -var areaRingSum = new Adder(); -var x00; -var y00; -var x0; -var y0; -var areaStream = { - point: noop2, - lineStart: noop2, - lineEnd: noop2, - polygonStart: function() { - areaStream.lineStart = areaRingStart; - areaStream.lineEnd = areaRingEnd; - }, - polygonEnd: function() { - areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop2; - areaSum.add(abs2(areaRingSum)); - areaRingSum = new Adder(); - }, - result: function() { - var area = areaSum / 2; - areaSum = new Adder(); - return area; - } -}; -function areaRingStart() { - areaStream.point = areaPointFirst; -} -function areaPointFirst(x2, y2) { - areaStream.point = areaPoint; - x00 = x0 = x2, y00 = y0 = y2; -} -function areaPoint(x2, y2) { - areaRingSum.add(y0 * x2 - x0 * y2); - x0 = x2, y0 = y2; -} -function areaRingEnd() { - areaPoint(x00, y00); -} -var area_default = areaStream; - -// node_modules/d3-geo/src/path/bounds.js -var x02 = Infinity; -var y02 = x02; -var x1 = -x02; -var y1 = x1; -var boundsStream = { - point: boundsPoint, - lineStart: noop2, - lineEnd: noop2, - polygonStart: noop2, - polygonEnd: noop2, - result: function() { - var bounds = [[x02, y02], [x1, y1]]; - x1 = y1 = -(y02 = x02 = Infinity); - return bounds; - } -}; -function boundsPoint(x2, y2) { - if (x2 < x02) x02 = x2; - if (x2 > x1) x1 = x2; - if (y2 < y02) y02 = y2; - if (y2 > y1) y1 = y2; -} -var bounds_default = boundsStream; - -// node_modules/d3-geo/src/path/centroid.js -var X0 = 0; -var Y0 = 0; -var Z0 = 0; -var X1 = 0; -var Y1 = 0; -var Z1 = 0; -var X2 = 0; -var Y2 = 0; -var Z2 = 0; -var x002; -var y002; -var x03; -var y03; -var centroidStream = { - point: centroidPoint, - lineStart: centroidLineStart, - lineEnd: centroidLineEnd, - polygonStart: function() { - centroidStream.lineStart = centroidRingStart; - centroidStream.lineEnd = centroidRingEnd; - }, - polygonEnd: function() { - centroidStream.point = centroidPoint; - centroidStream.lineStart = centroidLineStart; - centroidStream.lineEnd = centroidLineEnd; - }, - result: function() { - var centroid = Z2 ? [X2 / Z2, Y2 / Z2] : Z1 ? [X1 / Z1, Y1 / Z1] : Z0 ? [X0 / Z0, Y0 / Z0] : [NaN, NaN]; - X0 = Y0 = Z0 = X1 = Y1 = Z1 = X2 = Y2 = Z2 = 0; - return centroid; - } -}; -function centroidPoint(x2, y2) { - X0 += x2; - Y0 += y2; - ++Z0; -} -function centroidLineStart() { - centroidStream.point = centroidPointFirstLine; -} -function centroidPointFirstLine(x2, y2) { - centroidStream.point = centroidPointLine; - centroidPoint(x03 = x2, y03 = y2); -} -function centroidPointLine(x2, y2) { - var dx = x2 - x03, dy = y2 - y03, z = sqrt(dx * dx + dy * dy); - X1 += z * (x03 + x2) / 2; - Y1 += z * (y03 + y2) / 2; - Z1 += z; - centroidPoint(x03 = x2, y03 = y2); -} -function centroidLineEnd() { - centroidStream.point = centroidPoint; -} -function centroidRingStart() { - centroidStream.point = centroidPointFirstRing; -} -function centroidRingEnd() { - centroidPointRing(x002, y002); -} -function centroidPointFirstRing(x2, y2) { - centroidStream.point = centroidPointRing; - centroidPoint(x002 = x03 = x2, y002 = y03 = y2); -} -function centroidPointRing(x2, y2) { - var dx = x2 - x03, dy = y2 - y03, z = sqrt(dx * dx + dy * dy); - X1 += z * (x03 + x2) / 2; - Y1 += z * (y03 + y2) / 2; - Z1 += z; - z = y03 * x2 - x03 * y2; - X2 += z * (x03 + x2); - Y2 += z * (y03 + y2); - Z2 += z * 3; - centroidPoint(x03 = x2, y03 = y2); -} -var centroid_default = centroidStream; - -// node_modules/d3-geo/src/path/context.js -function PathContext(context) { - this._context = context; -} -PathContext.prototype = { - _radius: 4.5, - pointRadius: function(_) { - return this._radius = _, this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._context.closePath(); - this._point = NaN; - }, - point: function(x2, y2) { - switch (this._point) { - case 0: { - this._context.moveTo(x2, y2); - this._point = 1; - break; - } - case 1: { - this._context.lineTo(x2, y2); - break; - } - default: { - this._context.moveTo(x2 + this._radius, y2); - this._context.arc(x2, y2, this._radius, 0, tau2); - break; - } - } - }, - result: noop2 -}; - -// node_modules/d3-geo/src/path/measure.js -var lengthSum = new Adder(); -var lengthRing; -var x003; -var y003; -var x04; -var y04; -var lengthStream = { - point: noop2, - lineStart: function() { - lengthStream.point = lengthPointFirst; - }, - lineEnd: function() { - if (lengthRing) lengthPoint(x003, y003); - lengthStream.point = noop2; - }, - polygonStart: function() { - lengthRing = true; - }, - polygonEnd: function() { - lengthRing = null; - }, - result: function() { - var length3 = +lengthSum; - lengthSum = new Adder(); - return length3; - } -}; -function lengthPointFirst(x2, y2) { - lengthStream.point = lengthPoint; - x003 = x04 = x2, y003 = y04 = y2; -} -function lengthPoint(x2, y2) { - x04 -= x2, y04 -= y2; - lengthSum.add(sqrt(x04 * x04 + y04 * y04)); - x04 = x2, y04 = y2; -} -var measure_default = lengthStream; - -// node_modules/d3-geo/src/path/string.js -var cacheDigits; -var cacheAppend; -var cacheRadius; -var cacheCircle; -var PathString = class { - constructor(digits) { - this._append = digits == null ? append2 : appendRound2(digits); - this._radius = 4.5; - this._ = ""; - } - pointRadius(_) { - this._radius = +_; - return this; - } - polygonStart() { - this._line = 0; - } - polygonEnd() { - this._line = NaN; - } - lineStart() { - this._point = 0; - } - lineEnd() { - if (this._line === 0) this._ += "Z"; - this._point = NaN; - } - point(x2, y2) { - switch (this._point) { - case 0: { - this._append`M${x2},${y2}`; - this._point = 1; - break; - } - case 1: { - this._append`L${x2},${y2}`; - break; - } - default: { - this._append`M${x2},${y2}`; - if (this._radius !== cacheRadius || this._append !== cacheAppend) { - const r = this._radius; - const s2 = this._; - this._ = ""; - this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`; - cacheRadius = r; - cacheAppend = this._append; - cacheCircle = this._; - this._ = s2; - } - this._ += cacheCircle; - break; - } - } - } - result() { - const result = this._; - this._ = ""; - return result.length ? result : null; - } -}; -function append2(strings) { - let i = 1; - this._ += strings[0]; - for (const j = strings.length; i < j; ++i) { - this._ += arguments[i] + strings[i]; - } -} -function appendRound2(digits) { - const d = Math.floor(digits); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`); - if (d > 15) return append2; - if (d !== cacheDigits) { - const k2 = 10 ** d; - cacheDigits = d; - cacheAppend = function append3(strings) { - let i = 1; - this._ += strings[0]; - for (const j = strings.length; i < j; ++i) { - this._ += Math.round(arguments[i] * k2) / k2 + strings[i]; - } - }; - } - return cacheAppend; -} - -// node_modules/d3-geo/src/path/index.js -function path_default(projection3, context) { - let digits = 3, pointRadius = 4.5, projectionStream, contextStream; - function path2(object) { - if (object) { - if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); - stream_default(object, projectionStream(contextStream)); - } - return contextStream.result(); - } - path2.area = function(object) { - stream_default(object, projectionStream(area_default)); - return area_default.result(); - }; - path2.measure = function(object) { - stream_default(object, projectionStream(measure_default)); - return measure_default.result(); - }; - path2.bounds = function(object) { - stream_default(object, projectionStream(bounds_default)); - return bounds_default.result(); - }; - path2.centroid = function(object) { - stream_default(object, projectionStream(centroid_default)); - return centroid_default.result(); - }; - path2.projection = function(_) { - if (!arguments.length) return projection3; - projectionStream = _ == null ? (projection3 = null, identity_default3) : (projection3 = _).stream; - return path2; - }; - path2.context = function(_) { - if (!arguments.length) return context; - contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _); - if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); - return path2; - }; - path2.pointRadius = function(_) { - if (!arguments.length) return pointRadius; - pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); - return path2; - }; - path2.digits = function(_) { - if (!arguments.length) return digits; - if (_ == null) digits = null; - else { - const d = Math.floor(_); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`); - digits = d; - } - if (context === null) contextStream = new PathString(digits); - return path2; - }; - return path2.projection(projection3).digits(digits).context(context); -} - -// node_modules/d3-geo/src/transform.js -function transform_default(methods) { - return { - stream: transformer(methods) - }; -} -function transformer(methods) { - return function(stream) { - var s2 = new TransformStream(); - for (var key in methods) s2[key] = methods[key]; - s2.stream = stream; - return s2; - }; -} -function TransformStream() { -} -TransformStream.prototype = { - constructor: TransformStream, - point: function(x2, y2) { - this.stream.point(x2, y2); - }, - sphere: function() { - this.stream.sphere(); - }, - lineStart: function() { - this.stream.lineStart(); - }, - lineEnd: function() { - this.stream.lineEnd(); - }, - polygonStart: function() { - this.stream.polygonStart(); - }, - polygonEnd: function() { - this.stream.polygonEnd(); - } -}; - -// node_modules/d3-geo/src/projection/fit.js -function fit(projection3, fitBounds, object) { - var clip = projection3.clipExtent && projection3.clipExtent(); - projection3.scale(150).translate([0, 0]); - if (clip != null) projection3.clipExtent(null); - stream_default(object, projection3.stream(bounds_default)); - fitBounds(bounds_default.result()); - if (clip != null) projection3.clipExtent(clip); - return projection3; -} -function fitExtent(projection3, extent3, object) { - return fit(projection3, function(b) { - var w = extent3[1][0] - extent3[0][0], h = extent3[1][1] - extent3[0][1], k2 = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), x2 = +extent3[0][0] + (w - k2 * (b[1][0] + b[0][0])) / 2, y2 = +extent3[0][1] + (h - k2 * (b[1][1] + b[0][1])) / 2; - projection3.scale(150 * k2).translate([x2, y2]); - }, object); -} -function fitSize(projection3, size, object) { - return fitExtent(projection3, [[0, 0], size], object); -} -function fitWidth(projection3, width, object) { - return fit(projection3, function(b) { - var w = +width, k2 = w / (b[1][0] - b[0][0]), x2 = (w - k2 * (b[1][0] + b[0][0])) / 2, y2 = -k2 * b[0][1]; - projection3.scale(150 * k2).translate([x2, y2]); - }, object); -} -function fitHeight(projection3, height, object) { - return fit(projection3, function(b) { - var h = +height, k2 = h / (b[1][1] - b[0][1]), x2 = -k2 * b[0][0], y2 = (h - k2 * (b[1][1] + b[0][1])) / 2; - projection3.scale(150 * k2).translate([x2, y2]); - }, object); -} - -// node_modules/d3-geo/src/projection/resample.js -var maxDepth = 16; -var cosMinDistance = cos(30 * radians2); -function resample_default(project2, delta2) { - return +delta2 ? resample(project2, delta2) : resampleNone(project2); -} -function resampleNone(project2) { - return transformer({ - point: function(x2, y2) { - x2 = project2(x2, y2); - this.stream.point(x2[0], x2[1]); - } - }); -} -function resample(project2, delta2) { - function resampleLineTo(x05, y05, lambda0, a0, b0, c0, x12, y12, lambda1, a1, b1, c1, depth, stream) { - var dx = x12 - x05, dy = y12 - y05, d2 = dx * dx + dy * dy; - if (d2 > 4 * delta2 && depth--) { - var a2 = a0 + a1, b = b0 + b1, c4 = c0 + c1, m = sqrt(a2 * a2 + b * b + c4 * c4), phi2 = asin(c4 /= m), lambda2 = abs2(abs2(c4) - 1) < epsilon3 || abs2(lambda0 - lambda1) < epsilon3 ? (lambda0 + lambda1) / 2 : atan2(b, a2), p = project2(lambda2, phi2), x2 = p[0], y2 = p[1], dx2 = x2 - x05, dy2 = y2 - y05, dz = dy * dx2 - dx * dy2; - if (dz * dz / d2 > delta2 || abs2((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { - resampleLineTo(x05, y05, lambda0, a0, b0, c0, x2, y2, lambda2, a2 /= m, b /= m, c4, depth, stream); - stream.point(x2, y2); - resampleLineTo(x2, y2, lambda2, a2, b, c4, x12, y12, lambda1, a1, b1, c1, depth, stream); - } - } - } - return function(stream) { - var lambda00, x004, y004, a00, b00, c00, lambda0, x05, y05, a0, b0, c0; - var resampleStream = { - point: point6, - lineStart, - lineEnd, - polygonStart: function() { - stream.polygonStart(); - resampleStream.lineStart = ringStart; - }, - polygonEnd: function() { - stream.polygonEnd(); - resampleStream.lineStart = lineStart; - } - }; - function point6(x2, y2) { - x2 = project2(x2, y2); - stream.point(x2[0], x2[1]); - } - function lineStart() { - x05 = NaN; - resampleStream.point = linePoint; - stream.lineStart(); - } - function linePoint(lambda, phi) { - var c4 = cartesian([lambda, phi]), p = project2(lambda, phi); - resampleLineTo(x05, y05, lambda0, a0, b0, c0, x05 = p[0], y05 = p[1], lambda0 = lambda, a0 = c4[0], b0 = c4[1], c0 = c4[2], maxDepth, stream); - stream.point(x05, y05); - } - function lineEnd() { - resampleStream.point = point6; - stream.lineEnd(); - } - function ringStart() { - lineStart(); - resampleStream.point = ringPoint; - resampleStream.lineEnd = ringEnd; - } - function ringPoint(lambda, phi) { - linePoint(lambda00 = lambda, phi), x004 = x05, y004 = y05, a00 = a0, b00 = b0, c00 = c0; - resampleStream.point = linePoint; - } - function ringEnd() { - resampleLineTo(x05, y05, lambda0, a0, b0, c0, x004, y004, lambda00, a00, b00, c00, maxDepth, stream); - resampleStream.lineEnd = lineEnd; - lineEnd(); - } - return resampleStream; - }; -} - -// node_modules/d3-geo/src/projection/index.js -var transformRadians = transformer({ - point: function(x2, y2) { - this.stream.point(x2 * radians2, y2 * radians2); - } -}); -function transformRotate(rotate) { - return transformer({ - point: function(x2, y2) { - var r = rotate(x2, y2); - return this.stream.point(r[0], r[1]); - } - }); -} -function scaleTranslate(k2, dx, dy, sx, sy) { - function transform2(x2, y2) { - x2 *= sx; - y2 *= sy; - return [dx + k2 * x2, dy - k2 * y2]; - } - transform2.invert = function(x2, y2) { - return [(x2 - dx) / k2 * sx, (dy - y2) / k2 * sy]; - }; - return transform2; -} -function scaleTranslateRotate(k2, dx, dy, sx, sy, alpha) { - if (!alpha) return scaleTranslate(k2, dx, dy, sx, sy); - var cosAlpha = cos(alpha), sinAlpha = sin(alpha), a2 = cosAlpha * k2, b = sinAlpha * k2, ai = cosAlpha / k2, bi = sinAlpha / k2, ci = (sinAlpha * dy - cosAlpha * dx) / k2, fi = (sinAlpha * dx + cosAlpha * dy) / k2; - function transform2(x2, y2) { - x2 *= sx; - y2 *= sy; - return [a2 * x2 - b * y2 + dx, dy - b * x2 - a2 * y2]; - } - transform2.invert = function(x2, y2) { - return [sx * (ai * x2 - bi * y2 + ci), sy * (fi - bi * x2 - ai * y2)]; - }; - return transform2; -} -function projection(project2) { - return projectionMutator(function() { - return project2; - })(); -} -function projectionMutator(projectAt) { - var project2, k2 = 150, x2 = 480, y2 = 250, lambda = 0, phi = 0, deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, alpha = 0, sx = 1, sy = 1, theta = null, preclip = antimeridian_default, x05 = null, y05, x12, y12, postclip = identity_default3, delta2 = 0.5, projectResample, projectTransform, projectRotateTransform, cache, cacheStream; - function projection3(point6) { - return projectRotateTransform(point6[0] * radians2, point6[1] * radians2); - } - function invert(point6) { - point6 = projectRotateTransform.invert(point6[0], point6[1]); - return point6 && [point6[0] * degrees3, point6[1] * degrees3]; - } - projection3.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); - }; - projection3.preclip = function(_) { - return arguments.length ? (preclip = _, theta = void 0, reset()) : preclip; - }; - projection3.postclip = function(_) { - return arguments.length ? (postclip = _, x05 = y05 = x12 = y12 = null, reset()) : postclip; - }; - projection3.clipAngle = function(_) { - return arguments.length ? (preclip = +_ ? circle_default(theta = _ * radians2) : (theta = null, antimeridian_default), reset()) : theta * degrees3; - }; - projection3.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x05 = y05 = x12 = y12 = null, identity_default3) : clipRectangle(x05 = +_[0][0], y05 = +_[0][1], x12 = +_[1][0], y12 = +_[1][1]), reset()) : x05 == null ? null : [[x05, y05], [x12, y12]]; - }; - projection3.scale = function(_) { - return arguments.length ? (k2 = +_, recenter()) : k2; - }; - projection3.translate = function(_) { - return arguments.length ? (x2 = +_[0], y2 = +_[1], recenter()) : [x2, y2]; - }; - projection3.center = function(_) { - return arguments.length ? (lambda = _[0] % 360 * radians2, phi = _[1] % 360 * radians2, recenter()) : [lambda * degrees3, phi * degrees3]; - }; - projection3.rotate = function(_) { - return arguments.length ? (deltaLambda = _[0] % 360 * radians2, deltaPhi = _[1] % 360 * radians2, deltaGamma = _.length > 2 ? _[2] % 360 * radians2 : 0, recenter()) : [deltaLambda * degrees3, deltaPhi * degrees3, deltaGamma * degrees3]; - }; - projection3.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians2, recenter()) : alpha * degrees3; - }; - projection3.reflectX = function(_) { - return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0; - }; - projection3.reflectY = function(_) { - return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0; - }; - projection3.precision = function(_) { - return arguments.length ? (projectResample = resample_default(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2); - }; - projection3.fitExtent = function(extent3, object) { - return fitExtent(projection3, extent3, object); - }; - projection3.fitSize = function(size, object) { - return fitSize(projection3, size, object); - }; - projection3.fitWidth = function(width, object) { - return fitWidth(projection3, width, object); - }; - projection3.fitHeight = function(height, object) { - return fitHeight(projection3, height, object); - }; - function recenter() { - var center2 = scaleTranslateRotate(k2, 0, 0, sx, sy, alpha).apply(null, project2(lambda, phi)), transform2 = scaleTranslateRotate(k2, x2 - center2[0], y2 - center2[1], sx, sy, alpha); - rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); - projectTransform = compose_default(project2, transform2); - projectRotateTransform = compose_default(rotate, projectTransform); - projectResample = resample_default(projectTransform, delta2); - return reset(); - } - function reset() { - cache = cacheStream = null; - return projection3; - } - return function() { - project2 = projectAt.apply(this, arguments); - projection3.invert = project2.invert && invert; - return recenter(); - }; -} - -// node_modules/d3-geo/src/projection/conic.js -function conicProjection(projectAt) { - var phi0 = 0, phi1 = pi2 / 3, m = projectionMutator(projectAt), p = m(phi0, phi1); - p.parallels = function(_) { - return arguments.length ? m(phi0 = _[0] * radians2, phi1 = _[1] * radians2) : [phi0 * degrees3, phi1 * degrees3]; - }; - return p; -} - -// node_modules/d3-geo/src/projection/cylindricalEqualArea.js -function cylindricalEqualAreaRaw(phi0) { - var cosPhi0 = cos(phi0); - function forward(lambda, phi) { - return [lambda * cosPhi0, sin(phi) / cosPhi0]; - } - forward.invert = function(x2, y2) { - return [x2 / cosPhi0, asin(y2 * cosPhi0)]; - }; - return forward; -} - -// node_modules/d3-geo/src/projection/conicEqualArea.js -function conicEqualAreaRaw(y05, y12) { - var sy0 = sin(y05), n = (sy0 + sin(y12)) / 2; - if (abs2(n) < epsilon3) return cylindricalEqualAreaRaw(y05); - var c4 = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c4) / n; - function project2(x2, y2) { - var r = sqrt(c4 - 2 * n * sin(y2)) / n; - return [r * sin(x2 *= n), r0 - r * cos(x2)]; - } - project2.invert = function(x2, y2) { - var r0y = r0 - y2, l = atan2(x2, abs2(r0y)) * sign(r0y); - if (r0y * n < 0) - l -= pi2 * sign(x2) * sign(r0y); - return [l / n, asin((c4 - (x2 * x2 + r0y * r0y) * n * n) / (2 * n))]; - }; - return project2; -} -function conicEqualArea_default() { - return conicProjection(conicEqualAreaRaw).scale(155.424).center([0, 33.6442]); -} - -// node_modules/d3-geo/src/projection/albers.js -function albers_default() { - return conicEqualArea_default().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-0.6, 38.7]); -} - -// node_modules/d3-geo/src/projection/albersUsa.js -function multiplex(streams) { - var n = streams.length; - return { - point: function(x2, y2) { - var i = -1; - while (++i < n) streams[i].point(x2, y2); - }, - sphere: function() { - var i = -1; - while (++i < n) streams[i].sphere(); - }, - lineStart: function() { - var i = -1; - while (++i < n) streams[i].lineStart(); - }, - lineEnd: function() { - var i = -1; - while (++i < n) streams[i].lineEnd(); - }, - polygonStart: function() { - var i = -1; - while (++i < n) streams[i].polygonStart(); - }, - polygonEnd: function() { - var i = -1; - while (++i < n) streams[i].polygonEnd(); - } - }; -} -function albersUsa_default() { - var cache, cacheStream, lower48 = albers_default(), lower48Point, alaska = conicEqualArea_default().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, hawaii = conicEqualArea_default().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, point6, pointStream = { point: function(x2, y2) { - point6 = [x2, y2]; - } }; - function albersUsa(coordinates) { - var x2 = coordinates[0], y2 = coordinates[1]; - return point6 = null, (lower48Point.point(x2, y2), point6) || (alaskaPoint.point(x2, y2), point6) || (hawaiiPoint.point(x2, y2), point6); - } - albersUsa.invert = function(coordinates) { - var k2 = lower48.scale(), t = lower48.translate(), x2 = (coordinates[0] - t[0]) / k2, y2 = (coordinates[1] - t[1]) / k2; - return (y2 >= 0.12 && y2 < 0.234 && x2 >= -0.425 && x2 < -0.214 ? alaska : y2 >= 0.166 && y2 < 0.234 && x2 >= -0.214 && x2 < -0.115 ? hawaii : lower48).invert(coordinates); - }; - albersUsa.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); - }; - albersUsa.precision = function(_) { - if (!arguments.length) return lower48.precision(); - lower48.precision(_), alaska.precision(_), hawaii.precision(_); - return reset(); - }; - albersUsa.scale = function(_) { - if (!arguments.length) return lower48.scale(); - lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); - return albersUsa.translate(lower48.translate()); - }; - albersUsa.translate = function(_) { - if (!arguments.length) return lower48.translate(); - var k2 = lower48.scale(), x2 = +_[0], y2 = +_[1]; - lower48Point = lower48.translate(_).clipExtent([[x2 - 0.455 * k2, y2 - 0.238 * k2], [x2 + 0.455 * k2, y2 + 0.238 * k2]]).stream(pointStream); - alaskaPoint = alaska.translate([x2 - 0.307 * k2, y2 + 0.201 * k2]).clipExtent([[x2 - 0.425 * k2 + epsilon3, y2 + 0.12 * k2 + epsilon3], [x2 - 0.214 * k2 - epsilon3, y2 + 0.234 * k2 - epsilon3]]).stream(pointStream); - hawaiiPoint = hawaii.translate([x2 - 0.205 * k2, y2 + 0.212 * k2]).clipExtent([[x2 - 0.214 * k2 + epsilon3, y2 + 0.166 * k2 + epsilon3], [x2 - 0.115 * k2 - epsilon3, y2 + 0.234 * k2 - epsilon3]]).stream(pointStream); - return reset(); - }; - albersUsa.fitExtent = function(extent3, object) { - return fitExtent(albersUsa, extent3, object); - }; - albersUsa.fitSize = function(size, object) { - return fitSize(albersUsa, size, object); - }; - albersUsa.fitWidth = function(width, object) { - return fitWidth(albersUsa, width, object); - }; - albersUsa.fitHeight = function(height, object) { - return fitHeight(albersUsa, height, object); - }; - function reset() { - cache = cacheStream = null; - return albersUsa; - } - return albersUsa.scale(1070); -} - -// node_modules/d3-geo/src/projection/azimuthal.js -function azimuthalRaw(scale) { - return function(x2, y2) { - var cx = cos(x2), cy = cos(y2), k2 = scale(cx * cy); - if (k2 === Infinity) return [2, 0]; - return [ - k2 * cy * sin(x2), - k2 * sin(y2) - ]; - }; -} -function azimuthalInvert(angle) { - return function(x2, y2) { - var z = sqrt(x2 * x2 + y2 * y2), c4 = angle(z), sc = sin(c4), cc = cos(c4); - return [ - atan2(x2 * sc, z * cc), - asin(z && y2 * sc / z) - ]; - }; -} - -// node_modules/d3-geo/src/projection/azimuthalEqualArea.js -var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { - return sqrt(2 / (1 + cxcy)); -}); -azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { - return 2 * asin(z / 2); -}); -function azimuthalEqualArea_default() { - return projection(azimuthalEqualAreaRaw).scale(124.75).clipAngle(180 - 1e-3); -} - -// node_modules/d3-geo/src/projection/azimuthalEquidistant.js -var azimuthalEquidistantRaw = azimuthalRaw(function(c4) { - return (c4 = acos(c4)) && c4 / sin(c4); -}); -azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { - return z; -}); -function azimuthalEquidistant_default() { - return projection(azimuthalEquidistantRaw).scale(79.4188).clipAngle(180 - 1e-3); -} - -// node_modules/d3-geo/src/projection/mercator.js -function mercatorRaw(lambda, phi) { - return [lambda, log(tan((halfPi + phi) / 2))]; -} -mercatorRaw.invert = function(x2, y2) { - return [x2, 2 * atan(exp(y2)) - halfPi]; -}; -function mercator_default() { - return mercatorProjection(mercatorRaw).scale(961 / tau2); -} -function mercatorProjection(project2) { - var m = projection(project2), center2 = m.center, scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, x05 = null, y05, x12, y12; - m.scale = function(_) { - return arguments.length ? (scale(_), reclip()) : scale(); - }; - m.translate = function(_) { - return arguments.length ? (translate(_), reclip()) : translate(); - }; - m.center = function(_) { - return arguments.length ? (center2(_), reclip()) : center2(); - }; - m.clipExtent = function(_) { - return arguments.length ? (_ == null ? x05 = y05 = x12 = y12 = null : (x05 = +_[0][0], y05 = +_[0][1], x12 = +_[1][0], y12 = +_[1][1]), reclip()) : x05 == null ? null : [[x05, y05], [x12, y12]]; - }; - function reclip() { - var k2 = pi2 * scale(), t = m(rotation_default(m.rotate()).invert([0, 0])); - return clipExtent(x05 == null ? [[t[0] - k2, t[1] - k2], [t[0] + k2, t[1] + k2]] : project2 === mercatorRaw ? [[Math.max(t[0] - k2, x05), y05], [Math.min(t[0] + k2, x12), y12]] : [[x05, Math.max(t[1] - k2, y05)], [x12, Math.min(t[1] + k2, y12)]]); - } - return reclip(); -} - -// node_modules/d3-geo/src/projection/conicConformal.js -function tany(y2) { - return tan((halfPi + y2) / 2); -} -function conicConformalRaw(y05, y12) { - var cy0 = cos(y05), n = y05 === y12 ? sin(y05) : log(cy0 / cos(y12)) / log(tany(y12) / tany(y05)), f = cy0 * pow(tany(y05), n) / n; - if (!n) return mercatorRaw; - function project2(x2, y2) { - if (f > 0) { - if (y2 < -halfPi + epsilon3) y2 = -halfPi + epsilon3; - } else { - if (y2 > halfPi - epsilon3) y2 = halfPi - epsilon3; - } - var r = f / pow(tany(y2), n); - return [r * sin(n * x2), f - r * cos(n * x2)]; - } - project2.invert = function(x2, y2) { - var fy = f - y2, r = sign(n) * sqrt(x2 * x2 + fy * fy), l = atan2(x2, abs2(fy)) * sign(fy); - if (fy * n < 0) - l -= pi2 * sign(x2) * sign(fy); - return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi]; - }; - return project2; -} -function conicConformal_default() { - return conicProjection(conicConformalRaw).scale(109.5).parallels([30, 30]); -} - -// node_modules/d3-geo/src/projection/equirectangular.js -function equirectangularRaw(lambda, phi) { - return [lambda, phi]; -} -equirectangularRaw.invert = equirectangularRaw; -function equirectangular_default() { - return projection(equirectangularRaw).scale(152.63); -} - -// node_modules/d3-geo/src/projection/conicEquidistant.js -function conicEquidistantRaw(y05, y12) { - var cy0 = cos(y05), n = y05 === y12 ? sin(y05) : (cy0 - cos(y12)) / (y12 - y05), g = cy0 / n + y05; - if (abs2(n) < epsilon3) return equirectangularRaw; - function project2(x2, y2) { - var gy = g - y2, nx = n * x2; - return [gy * sin(nx), g - gy * cos(nx)]; - } - project2.invert = function(x2, y2) { - var gy = g - y2, l = atan2(x2, abs2(gy)) * sign(gy); - if (gy * n < 0) - l -= pi2 * sign(x2) * sign(gy); - return [l / n, g - sign(n) * sqrt(x2 * x2 + gy * gy)]; - }; - return project2; -} -function conicEquidistant_default() { - return conicProjection(conicEquidistantRaw).scale(131.154).center([0, 13.9389]); -} - -// node_modules/d3-geo/src/projection/equalEarth.js -var A1 = 1.340264; -var A2 = -0.081106; -var A3 = 893e-6; -var A4 = 3796e-6; -var M = sqrt(3) / 2; -var iterations = 12; -function equalEarthRaw(lambda, phi) { - var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2; - return [ - lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), - l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - ]; -} -equalEarthRaw.invert = function(x2, y2) { - var l = y2, l2 = l * l, l6 = l2 * l2 * l2; - for (var i = 0, delta, fy, fpy; i < iterations; ++i) { - fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y2; - fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); - l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; - if (abs2(delta) < epsilon22) break; - } - return [ - M * x2 * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l), - asin(sin(l) / M) - ]; -}; -function equalEarth_default() { - return projection(equalEarthRaw).scale(177.158); -} - -// node_modules/d3-geo/src/projection/gnomonic.js -function gnomonicRaw(x2, y2) { - var cy = cos(y2), k2 = cos(x2) * cy; - return [cy * sin(x2) / k2, sin(y2) / k2]; -} -gnomonicRaw.invert = azimuthalInvert(atan); -function gnomonic_default() { - return projection(gnomonicRaw).scale(144.049).clipAngle(60); -} - -// node_modules/d3-geo/src/projection/orthographic.js -function orthographicRaw(x2, y2) { - return [cos(y2) * sin(x2), sin(y2)]; -} -orthographicRaw.invert = azimuthalInvert(asin); -function orthographic_default() { - return projection(orthographicRaw).scale(249.5).clipAngle(90 + epsilon3); -} - -// node_modules/d3-geo/src/projection/stereographic.js -function stereographicRaw(x2, y2) { - var cy = cos(y2), k2 = 1 + cos(x2) * cy; - return [cy * sin(x2) / k2, sin(y2) / k2]; -} -stereographicRaw.invert = azimuthalInvert(function(z) { - return 2 * atan(z); -}); -function stereographic_default() { - return projection(stereographicRaw).scale(250).clipAngle(142); -} - -// node_modules/d3-geo/src/projection/transverseMercator.js -function transverseMercatorRaw(lambda, phi) { - return [log(tan((halfPi + phi) / 2)), -lambda]; -} -transverseMercatorRaw.invert = function(x2, y2) { - return [-y2, 2 * atan(exp(x2)) - halfPi]; -}; -function transverseMercator_default() { - var m = mercatorProjection(transverseMercatorRaw), center2 = m.center, rotate = m.rotate; - m.center = function(_) { - return arguments.length ? center2([-_[1], _[0]]) : (_ = center2(), [_[1], -_[0]]); - }; - m.rotate = function(_) { - return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); - }; - return rotate([0, 0, 90]).scale(159.155); -} - -// node_modules/d3-scale/src/init.js -function initRange(domain, range3) { - switch (arguments.length) { - case 0: - break; - case 1: - this.range(domain); - break; - default: - this.range(range3).domain(domain); - break; - } - return this; -} -function initInterpolator(domain, interpolator) { - switch (arguments.length) { - case 0: - break; - case 1: { - if (typeof domain === "function") this.interpolator(domain); - else this.range(domain); - break; - } - default: { - this.domain(domain); - if (typeof interpolator === "function") this.interpolator(interpolator); - else this.range(interpolator); - break; - } - } - return this; -} - -// node_modules/d3-scale/src/ordinal.js -var implicit = Symbol("implicit"); -function ordinal() { - var index2 = new InternMap(), domain = [], range3 = [], unknown = implicit; - function scale(d) { - let i = index2.get(d); - if (i === void 0) { - if (unknown !== implicit) return unknown; - index2.set(d, i = domain.push(d) - 1); - } - return range3[i % range3.length]; - } - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index2 = new InternMap(); - for (const value of _) { - if (index2.has(value)) continue; - index2.set(value, domain.push(value) - 1); - } - return scale; - }; - scale.range = function(_) { - return arguments.length ? (range3 = Array.from(_), scale) : range3.slice(); - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - scale.copy = function() { - return ordinal(domain, range3).unknown(unknown); - }; - initRange.apply(scale, arguments); - return scale; -} - -// node_modules/d3-scale/src/band.js -function band() { - var scale = ordinal().unknown(void 0), domain = scale.domain, ordinalRange2 = scale.range, r0 = 0, r1 = 1, step, bandwidth, round = false, paddingInner = 0, paddingOuter = 0, align = 0.5; - delete scale.unknown; - function rescale() { - var n = domain().length, reverse2 = r1 < r0, start2 = reverse2 ? r1 : r0, stop = reverse2 ? r0 : r1; - step = (stop - start2) / Math.max(1, n - paddingInner + paddingOuter * 2); - if (round) step = Math.floor(step); - start2 += (stop - start2 - step * (n - paddingInner)) * align; - bandwidth = step * (1 - paddingInner); - if (round) start2 = Math.round(start2), bandwidth = Math.round(bandwidth); - var values2 = range(n).map(function(i) { - return start2 + step * i; - }); - return ordinalRange2(reverse2 ? values2.reverse() : values2); - } - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - scale.range = function(_) { - return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1]; - }; - scale.rangeRound = function(_) { - return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale(); - }; - scale.bandwidth = function() { - return bandwidth; - }; - scale.step = function() { - return step; - }; - scale.round = function(_) { - return arguments.length ? (round = !!_, rescale()) : round; - }; - scale.padding = function(_) { - return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; - }; - scale.paddingInner = function(_) { - return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; - }; - scale.paddingOuter = function(_) { - return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; - }; - scale.align = function(_) { - return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; - }; - scale.copy = function() { - return band(domain(), [r0, r1]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align); - }; - return initRange.apply(rescale(), arguments); -} -function pointish(scale) { - var copy3 = scale.copy; - scale.padding = scale.paddingOuter; - delete scale.paddingInner; - delete scale.paddingOuter; - scale.copy = function() { - return pointish(copy3()); - }; - return scale; -} -function point() { - return pointish(band.apply(null, arguments).paddingInner(1)); -} - -// node_modules/d3-scale/src/constant.js -function constants(x2) { - return function() { - return x2; - }; -} - -// node_modules/d3-scale/src/number.js -function number3(x2) { - return +x2; -} - -// node_modules/d3-scale/src/continuous.js -var unit = [0, 1]; -function identity3(x2) { - return x2; -} -function normalize(a2, b) { - return (b -= a2 = +a2) ? function(x2) { - return (x2 - a2) / b; - } : constants(isNaN(b) ? NaN : 0.5); -} -function clamper(a2, b) { - var t; - if (a2 > b) t = a2, a2 = b, b = t; - return function(x2) { - return Math.max(a2, Math.min(b, x2)); - }; -} -function bimap(domain, range3, interpolate) { - var d0 = domain[0], d1 = domain[1], r0 = range3[0], r1 = range3[1]; - if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); - else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); - return function(x2) { - return r0(d0(x2)); - }; -} -function polymap(domain, range3, interpolate) { - var j = Math.min(domain.length, range3.length) - 1, d = new Array(j), r = new Array(j), i = -1; - if (domain[j] < domain[0]) { - domain = domain.slice().reverse(); - range3 = range3.slice().reverse(); - } - while (++i < j) { - d[i] = normalize(domain[i], domain[i + 1]); - r[i] = interpolate(range3[i], range3[i + 1]); - } - return function(x2) { - var i2 = bisect_default(domain, x2, 1, j) - 1; - return r[i2](d[i2](x2)); - }; -} -function copy(source, target) { - return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown()); -} -function transformer2() { - var domain = unit, range3 = unit, interpolate = value_default, transform2, untransform, unknown, clamp = identity3, piecewise2, output, input; - function rescale() { - var n = Math.min(domain.length, range3.length); - if (clamp !== identity3) clamp = clamper(domain[0], domain[n - 1]); - piecewise2 = n > 2 ? polymap : bimap; - output = input = null; - return scale; - } - function scale(x2) { - return x2 == null || isNaN(x2 = +x2) ? unknown : (output || (output = piecewise2(domain.map(transform2), range3, interpolate)))(transform2(clamp(x2))); - } - scale.invert = function(y2) { - return clamp(untransform((input || (input = piecewise2(range3, domain.map(transform2), number_default)))(y2))); - }; - scale.domain = function(_) { - return arguments.length ? (domain = Array.from(_, number3), rescale()) : domain.slice(); - }; - scale.range = function(_) { - return arguments.length ? (range3 = Array.from(_), rescale()) : range3.slice(); - }; - scale.rangeRound = function(_) { - return range3 = Array.from(_), interpolate = round_default, rescale(); - }; - scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? true : identity3, rescale()) : clamp !== identity3; - }; - scale.interpolate = function(_) { - return arguments.length ? (interpolate = _, rescale()) : interpolate; - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - return function(t, u) { - transform2 = t, untransform = u; - return rescale(); - }; -} -function continuous() { - return transformer2()(identity3, identity3); -} - -// node_modules/d3-scale/src/tickFormat.js -function tickFormat(start2, stop, count, specifier) { - var step = tickStep(start2, stop, count), precision; - specifier = formatSpecifier(specifier == null ? ",f" : specifier); - switch (specifier.type) { - case "s": { - var value = Math.max(Math.abs(start2), Math.abs(stop)); - if (specifier.precision == null && !isNaN(precision = precisionPrefix_default(step, value))) specifier.precision = precision; - return formatPrefix(specifier, value); - } - case "": - case "e": - case "g": - case "p": - case "r": { - if (specifier.precision == null && !isNaN(precision = precisionRound_default(step, Math.max(Math.abs(start2), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); - break; - } - case "f": - case "%": { - if (specifier.precision == null && !isNaN(precision = precisionFixed_default(step))) specifier.precision = precision - (specifier.type === "%") * 2; - break; - } - } - return format(specifier); -} - -// node_modules/d3-scale/src/linear.js -function linearish(scale) { - var domain = scale.domain; - scale.ticks = function(count) { - var d = domain(); - return ticks(d[0], d[d.length - 1], count == null ? 10 : count); - }; - scale.tickFormat = function(count, specifier) { - var d = domain(); - return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); - }; - scale.nice = function(count) { - if (count == null) count = 10; - var d = domain(); - var i0 = 0; - var i1 = d.length - 1; - var start2 = d[i0]; - var stop = d[i1]; - var prestep; - var step; - var maxIter = 10; - if (stop < start2) { - step = start2, start2 = stop, stop = step; - step = i0, i0 = i1, i1 = step; - } - while (maxIter-- > 0) { - step = tickIncrement(start2, stop, count); - if (step === prestep) { - d[i0] = start2; - d[i1] = stop; - return domain(d); - } else if (step > 0) { - start2 = Math.floor(start2 / step) * step; - stop = Math.ceil(stop / step) * step; - } else if (step < 0) { - start2 = Math.ceil(start2 * step) / step; - stop = Math.floor(stop * step) / step; - } else { - break; - } - prestep = step; - } - return scale; - }; - return scale; -} -function linear2() { - var scale = continuous(); - scale.copy = function() { - return copy(scale, linear2()); - }; - initRange.apply(scale, arguments); - return linearish(scale); -} - -// node_modules/d3-scale/src/identity.js -function identity4(domain) { - var unknown; - function scale(x2) { - return x2 == null || isNaN(x2 = +x2) ? unknown : x2; - } - scale.invert = scale; - scale.domain = scale.range = function(_) { - return arguments.length ? (domain = Array.from(_, number3), scale) : domain.slice(); - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - scale.copy = function() { - return identity4(domain).unknown(unknown); - }; - domain = arguments.length ? Array.from(domain, number3) : [0, 1]; - return linearish(scale); -} - -// node_modules/d3-scale/src/nice.js -function nice(domain, interval2) { - domain = domain.slice(); - var i0 = 0, i1 = domain.length - 1, x05 = domain[i0], x12 = domain[i1], t; - if (x12 < x05) { - t = i0, i0 = i1, i1 = t; - t = x05, x05 = x12, x12 = t; - } - domain[i0] = interval2.floor(x05); - domain[i1] = interval2.ceil(x12); - return domain; -} - -// node_modules/d3-scale/src/log.js -function transformLog(x2) { - return Math.log(x2); -} -function transformExp(x2) { - return Math.exp(x2); -} -function transformLogn(x2) { - return -Math.log(-x2); -} -function transformExpn(x2) { - return -Math.exp(-x2); -} -function pow10(x2) { - return isFinite(x2) ? +("1e" + x2) : x2 < 0 ? 0 : x2; -} -function powp(base) { - return base === 10 ? pow10 : base === Math.E ? Math.exp : (x2) => Math.pow(base, x2); -} -function logp(base) { - return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), (x2) => Math.log(x2) / base); -} -function reflect(f) { - return (x2, k2) => -f(-x2, k2); -} -function loggish(transform2) { - const scale = transform2(transformLog, transformExp); - const domain = scale.domain; - let base = 10; - let logs; - let pows; - function rescale() { - logs = logp(base), pows = powp(base); - if (domain()[0] < 0) { - logs = reflect(logs), pows = reflect(pows); - transform2(transformLogn, transformExpn); - } else { - transform2(transformLog, transformExp); - } - return scale; - } - scale.base = function(_) { - return arguments.length ? (base = +_, rescale()) : base; - }; - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - scale.ticks = (count) => { - const d = domain(); - let u = d[0]; - let v = d[d.length - 1]; - const r = v < u; - if (r) [u, v] = [v, u]; - let i = logs(u); - let j = logs(v); - let k2; - let t; - const n = count == null ? 10 : +count; - let z = []; - if (!(base % 1) && j - i < n) { - i = Math.floor(i), j = Math.ceil(j); - if (u > 0) for (; i <= j; ++i) { - for (k2 = 1; k2 < base; ++k2) { - t = i < 0 ? k2 / pows(-i) : k2 * pows(i); - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } - else for (; i <= j; ++i) { - for (k2 = base - 1; k2 >= 1; --k2) { - t = i > 0 ? k2 / pows(-i) : k2 * pows(i); - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } - if (z.length * 2 < n) z = ticks(u, v, n); - } else { - z = ticks(i, j, Math.min(j - i, n)).map(pows); - } - return r ? z.reverse() : z; - }; - scale.tickFormat = (count, specifier) => { - if (count == null) count = 10; - if (specifier == null) specifier = base === 10 ? "s" : ","; - if (typeof specifier !== "function") { - if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true; - specifier = format(specifier); - } - if (count === Infinity) return specifier; - const k2 = Math.max(1, base * count / scale.ticks().length); - return (d) => { - let i = d / pows(Math.round(logs(d))); - if (i * base < base - 0.5) i *= base; - return i <= k2 ? specifier(d) : ""; - }; - }; - scale.nice = () => { - return domain(nice(domain(), { - floor: (x2) => pows(Math.floor(logs(x2))), - ceil: (x2) => pows(Math.ceil(logs(x2))) - })); - }; - return scale; -} -function log2() { - const scale = loggish(transformer2()).domain([1, 10]); - scale.copy = () => copy(scale, log2()).base(scale.base()); - initRange.apply(scale, arguments); - return scale; -} - -// node_modules/d3-scale/src/symlog.js -function transformSymlog(c4) { - return function(x2) { - return Math.sign(x2) * Math.log1p(Math.abs(x2 / c4)); - }; -} -function transformSymexp(c4) { - return function(x2) { - return Math.sign(x2) * Math.expm1(Math.abs(x2)) * c4; - }; -} -function symlogish(transform2) { - var c4 = 1, scale = transform2(transformSymlog(c4), transformSymexp(c4)); - scale.constant = function(_) { - return arguments.length ? transform2(transformSymlog(c4 = +_), transformSymexp(c4)) : c4; - }; - return linearish(scale); -} -function symlog() { - var scale = symlogish(transformer2()); - scale.copy = function() { - return copy(scale, symlog()).constant(scale.constant()); - }; - return initRange.apply(scale, arguments); -} - -// node_modules/d3-scale/src/pow.js -function transformPow(exponent) { - return function(x2) { - return x2 < 0 ? -Math.pow(-x2, exponent) : Math.pow(x2, exponent); - }; -} -function transformSqrt(x2) { - return x2 < 0 ? -Math.sqrt(-x2) : Math.sqrt(x2); -} -function transformSquare(x2) { - return x2 < 0 ? -x2 * x2 : x2 * x2; -} -function powish(transform2) { - var scale = transform2(identity3, identity3), exponent = 1; - function rescale() { - return exponent === 1 ? transform2(identity3, identity3) : exponent === 0.5 ? transform2(transformSqrt, transformSquare) : transform2(transformPow(exponent), transformPow(1 / exponent)); - } - scale.exponent = function(_) { - return arguments.length ? (exponent = +_, rescale()) : exponent; - }; - return linearish(scale); -} -function pow2() { - var scale = powish(transformer2()); - scale.copy = function() { - return copy(scale, pow2()).exponent(scale.exponent()); - }; - initRange.apply(scale, arguments); - return scale; -} - -// node_modules/d3-scale/src/quantile.js -function quantile2() { - var domain = [], range3 = [], thresholds = [], unknown; - function rescale() { - var i = 0, n = Math.max(1, range3.length); - thresholds = new Array(n - 1); - while (++i < n) thresholds[i - 1] = quantileSorted(domain, i / n); - return scale; - } - function scale(x2) { - return x2 == null || isNaN(x2 = +x2) ? unknown : range3[bisect_default(thresholds, x2)]; - } - scale.invertExtent = function(y2) { - var i = range3.indexOf(y2); - return i < 0 ? [NaN, NaN] : [ - i > 0 ? thresholds[i - 1] : domain[0], - i < thresholds.length ? thresholds[i] : domain[domain.length - 1] - ]; - }; - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending); - return rescale(); - }; - scale.range = function(_) { - return arguments.length ? (range3 = Array.from(_), rescale()) : range3.slice(); - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - scale.quantiles = function() { - return thresholds.slice(); - }; - scale.copy = function() { - return quantile2().domain(domain).range(range3).unknown(unknown); - }; - return initRange.apply(scale, arguments); -} - -// node_modules/d3-scale/src/threshold.js -function threshold() { - var domain = [0.5], range3 = [0, 1], unknown, n = 1; - function scale(x2) { - return x2 != null && x2 <= x2 ? range3[bisect_default(domain, x2, 0, n)] : unknown; - } - scale.domain = function(_) { - return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range3.length - 1), scale) : domain.slice(); - }; - scale.range = function(_) { - return arguments.length ? (range3 = Array.from(_), n = Math.min(domain.length, range3.length - 1), scale) : range3.slice(); - }; - scale.invertExtent = function(y2) { - var i = range3.indexOf(y2); - return [domain[i - 1], domain[i]]; - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - scale.copy = function() { - return threshold().domain(domain).range(range3).unknown(unknown); - }; - return initRange.apply(scale, arguments); -} - -// node_modules/d3-time/src/interval.js -var t02 = /* @__PURE__ */ new Date(); -var t12 = /* @__PURE__ */ new Date(); -function timeInterval(floori, offseti, count, field2) { - function interval2(date2) { - return floori(date2 = arguments.length === 0 ? /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date(+date2)), date2; - } - interval2.floor = (date2) => { - return floori(date2 = /* @__PURE__ */ new Date(+date2)), date2; - }; - interval2.ceil = (date2) => { - return floori(date2 = new Date(date2 - 1)), offseti(date2, 1), floori(date2), date2; - }; - interval2.round = (date2) => { - const d0 = interval2(date2), d1 = interval2.ceil(date2); - return date2 - d0 < d1 - date2 ? d0 : d1; - }; - interval2.offset = (date2, step) => { - return offseti(date2 = /* @__PURE__ */ new Date(+date2), step == null ? 1 : Math.floor(step)), date2; - }; - interval2.range = (start2, stop, step) => { - const range3 = []; - start2 = interval2.ceil(start2); - step = step == null ? 1 : Math.floor(step); - if (!(start2 < stop) || !(step > 0)) return range3; - let previous; - do - range3.push(previous = /* @__PURE__ */ new Date(+start2)), offseti(start2, step), floori(start2); - while (previous < start2 && start2 < stop); - return range3; - }; - interval2.filter = (test) => { - return timeInterval((date2) => { - if (date2 >= date2) while (floori(date2), !test(date2)) date2.setTime(date2 - 1); - }, (date2, step) => { - if (date2 >= date2) { - if (step < 0) while (++step <= 0) { - while (offseti(date2, -1), !test(date2)) { - } - } - else while (--step >= 0) { - while (offseti(date2, 1), !test(date2)) { - } - } - } - }); - }; - if (count) { - interval2.count = (start2, end) => { - t02.setTime(+start2), t12.setTime(+end); - floori(t02), floori(t12); - return Math.floor(count(t02, t12)); - }; - interval2.every = (step) => { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval2 : interval2.filter(field2 ? (d) => field2(d) % step === 0 : (d) => interval2.count(0, d) % step === 0); - }; - } - return interval2; -} - -// node_modules/d3-time/src/millisecond.js -var millisecond = timeInterval(() => { -}, (date2, step) => { - date2.setTime(+date2 + step); -}, (start2, end) => { - return end - start2; -}); -millisecond.every = (k2) => { - k2 = Math.floor(k2); - if (!isFinite(k2) || !(k2 > 0)) return null; - if (!(k2 > 1)) return millisecond; - return timeInterval((date2) => { - date2.setTime(Math.floor(date2 / k2) * k2); - }, (date2, step) => { - date2.setTime(+date2 + step * k2); - }, (start2, end) => { - return (end - start2) / k2; - }); -}; -var milliseconds = millisecond.range; - -// node_modules/d3-time/src/duration.js -var durationSecond = 1e3; -var durationMinute = durationSecond * 60; -var durationHour = durationMinute * 60; -var durationDay = durationHour * 24; -var durationWeek = durationDay * 7; -var durationMonth = durationDay * 30; -var durationYear = durationDay * 365; - -// node_modules/d3-time/src/second.js -var second = timeInterval((date2) => { - date2.setTime(date2 - date2.getMilliseconds()); -}, (date2, step) => { - date2.setTime(+date2 + step * durationSecond); -}, (start2, end) => { - return (end - start2) / durationSecond; -}, (date2) => { - return date2.getUTCSeconds(); -}); -var seconds = second.range; - -// node_modules/d3-time/src/minute.js -var timeMinute = timeInterval((date2) => { - date2.setTime(date2 - date2.getMilliseconds() - date2.getSeconds() * durationSecond); -}, (date2, step) => { - date2.setTime(+date2 + step * durationMinute); -}, (start2, end) => { - return (end - start2) / durationMinute; -}, (date2) => { - return date2.getMinutes(); -}); -var timeMinutes = timeMinute.range; -var utcMinute = timeInterval((date2) => { - date2.setUTCSeconds(0, 0); -}, (date2, step) => { - date2.setTime(+date2 + step * durationMinute); -}, (start2, end) => { - return (end - start2) / durationMinute; -}, (date2) => { - return date2.getUTCMinutes(); -}); -var utcMinutes = utcMinute.range; - -// node_modules/d3-time/src/hour.js -var timeHour = timeInterval((date2) => { - date2.setTime(date2 - date2.getMilliseconds() - date2.getSeconds() * durationSecond - date2.getMinutes() * durationMinute); -}, (date2, step) => { - date2.setTime(+date2 + step * durationHour); -}, (start2, end) => { - return (end - start2) / durationHour; -}, (date2) => { - return date2.getHours(); -}); -var timeHours = timeHour.range; -var utcHour = timeInterval((date2) => { - date2.setUTCMinutes(0, 0, 0); -}, (date2, step) => { - date2.setTime(+date2 + step * durationHour); -}, (start2, end) => { - return (end - start2) / durationHour; -}, (date2) => { - return date2.getUTCHours(); -}); -var utcHours = utcHour.range; - -// node_modules/d3-time/src/day.js -var timeDay = timeInterval( - (date2) => date2.setHours(0, 0, 0, 0), - (date2, step) => date2.setDate(date2.getDate() + step), - (start2, end) => (end - start2 - (end.getTimezoneOffset() - start2.getTimezoneOffset()) * durationMinute) / durationDay, - (date2) => date2.getDate() - 1 -); -var timeDays = timeDay.range; -var utcDay = timeInterval((date2) => { - date2.setUTCHours(0, 0, 0, 0); -}, (date2, step) => { - date2.setUTCDate(date2.getUTCDate() + step); -}, (start2, end) => { - return (end - start2) / durationDay; -}, (date2) => { - return date2.getUTCDate() - 1; -}); -var utcDays = utcDay.range; -var unixDay = timeInterval((date2) => { - date2.setUTCHours(0, 0, 0, 0); -}, (date2, step) => { - date2.setUTCDate(date2.getUTCDate() + step); -}, (start2, end) => { - return (end - start2) / durationDay; -}, (date2) => { - return Math.floor(date2 / durationDay); -}); -var unixDays = unixDay.range; - -// node_modules/d3-time/src/week.js -function timeWeekday(i) { - return timeInterval((date2) => { - date2.setDate(date2.getDate() - (date2.getDay() + 7 - i) % 7); - date2.setHours(0, 0, 0, 0); - }, (date2, step) => { - date2.setDate(date2.getDate() + step * 7); - }, (start2, end) => { - return (end - start2 - (end.getTimezoneOffset() - start2.getTimezoneOffset()) * durationMinute) / durationWeek; - }); -} -var timeSunday = timeWeekday(0); -var timeMonday = timeWeekday(1); -var timeTuesday = timeWeekday(2); -var timeWednesday = timeWeekday(3); -var timeThursday = timeWeekday(4); -var timeFriday = timeWeekday(5); -var timeSaturday = timeWeekday(6); -var timeSundays = timeSunday.range; -var timeMondays = timeMonday.range; -var timeTuesdays = timeTuesday.range; -var timeWednesdays = timeWednesday.range; -var timeThursdays = timeThursday.range; -var timeFridays = timeFriday.range; -var timeSaturdays = timeSaturday.range; -function utcWeekday(i) { - return timeInterval((date2) => { - date2.setUTCDate(date2.getUTCDate() - (date2.getUTCDay() + 7 - i) % 7); - date2.setUTCHours(0, 0, 0, 0); - }, (date2, step) => { - date2.setUTCDate(date2.getUTCDate() + step * 7); - }, (start2, end) => { - return (end - start2) / durationWeek; - }); -} -var utcSunday = utcWeekday(0); -var utcMonday = utcWeekday(1); -var utcTuesday = utcWeekday(2); -var utcWednesday = utcWeekday(3); -var utcThursday = utcWeekday(4); -var utcFriday = utcWeekday(5); -var utcSaturday = utcWeekday(6); -var utcSundays = utcSunday.range; -var utcMondays = utcMonday.range; -var utcTuesdays = utcTuesday.range; -var utcWednesdays = utcWednesday.range; -var utcThursdays = utcThursday.range; -var utcFridays = utcFriday.range; -var utcSaturdays = utcSaturday.range; - -// node_modules/d3-time/src/month.js -var timeMonth = timeInterval((date2) => { - date2.setDate(1); - date2.setHours(0, 0, 0, 0); -}, (date2, step) => { - date2.setMonth(date2.getMonth() + step); -}, (start2, end) => { - return end.getMonth() - start2.getMonth() + (end.getFullYear() - start2.getFullYear()) * 12; -}, (date2) => { - return date2.getMonth(); -}); -var timeMonths = timeMonth.range; -var utcMonth = timeInterval((date2) => { - date2.setUTCDate(1); - date2.setUTCHours(0, 0, 0, 0); -}, (date2, step) => { - date2.setUTCMonth(date2.getUTCMonth() + step); -}, (start2, end) => { - return end.getUTCMonth() - start2.getUTCMonth() + (end.getUTCFullYear() - start2.getUTCFullYear()) * 12; -}, (date2) => { - return date2.getUTCMonth(); -}); -var utcMonths = utcMonth.range; - -// node_modules/d3-time/src/year.js -var timeYear = timeInterval((date2) => { - date2.setMonth(0, 1); - date2.setHours(0, 0, 0, 0); -}, (date2, step) => { - date2.setFullYear(date2.getFullYear() + step); -}, (start2, end) => { - return end.getFullYear() - start2.getFullYear(); -}, (date2) => { - return date2.getFullYear(); -}); -timeYear.every = (k2) => { - return !isFinite(k2 = Math.floor(k2)) || !(k2 > 0) ? null : timeInterval((date2) => { - date2.setFullYear(Math.floor(date2.getFullYear() / k2) * k2); - date2.setMonth(0, 1); - date2.setHours(0, 0, 0, 0); - }, (date2, step) => { - date2.setFullYear(date2.getFullYear() + step * k2); - }); -}; -var timeYears = timeYear.range; -var utcYear = timeInterval((date2) => { - date2.setUTCMonth(0, 1); - date2.setUTCHours(0, 0, 0, 0); -}, (date2, step) => { - date2.setUTCFullYear(date2.getUTCFullYear() + step); -}, (start2, end) => { - return end.getUTCFullYear() - start2.getUTCFullYear(); -}, (date2) => { - return date2.getUTCFullYear(); -}); -utcYear.every = (k2) => { - return !isFinite(k2 = Math.floor(k2)) || !(k2 > 0) ? null : timeInterval((date2) => { - date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / k2) * k2); - date2.setUTCMonth(0, 1); - date2.setUTCHours(0, 0, 0, 0); - }, (date2, step) => { - date2.setUTCFullYear(date2.getUTCFullYear() + step * k2); - }); -}; -var utcYears = utcYear.range; - -// node_modules/d3-time/src/ticks.js -function ticker(year, month, week, day, hour, minute) { - const tickIntervals2 = [ - [second, 1, durationSecond], - [second, 5, 5 * durationSecond], - [second, 15, 15 * durationSecond], - [second, 30, 30 * durationSecond], - [minute, 1, durationMinute], - [minute, 5, 5 * durationMinute], - [minute, 15, 15 * durationMinute], - [minute, 30, 30 * durationMinute], - [hour, 1, durationHour], - [hour, 3, 3 * durationHour], - [hour, 6, 6 * durationHour], - [hour, 12, 12 * durationHour], - [day, 1, durationDay], - [day, 2, 2 * durationDay], - [week, 1, durationWeek], - [month, 1, durationMonth], - [month, 3, 3 * durationMonth], - [year, 1, durationYear] - ]; - function ticks2(start2, stop, count) { - const reverse2 = stop < start2; - if (reverse2) [start2, stop] = [stop, start2]; - const interval2 = count && typeof count.range === "function" ? count : tickInterval(start2, stop, count); - const ticks3 = interval2 ? interval2.range(start2, +stop + 1) : []; - return reverse2 ? ticks3.reverse() : ticks3; - } - function tickInterval(start2, stop, count) { - const target = Math.abs(stop - start2) / count; - const i = bisector(([, , step2]) => step2).right(tickIntervals2, target); - if (i === tickIntervals2.length) return year.every(tickStep(start2 / durationYear, stop / durationYear, count)); - if (i === 0) return millisecond.every(Math.max(tickStep(start2, stop, count), 1)); - const [t, step] = tickIntervals2[target / tickIntervals2[i - 1][2] < tickIntervals2[i][2] / target ? i - 1 : i]; - return t.every(step); - } - return [ticks2, tickInterval]; -} -var [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute); -var [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute); - -// node_modules/d3-time-format/src/locale.js -function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date2 = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date2.setFullYear(d.y); - return date2; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); -} -function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date2 = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date2.setUTCFullYear(d.y); - return date2; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); -} -function newDate(y2, m, d) { - return { y: y2, m, d, H: 0, M: 0, S: 0, L: 0 }; -} -function formatLocale(locale3) { - var locale_dateTime = locale3.dateTime, locale_date = locale3.date, locale_time = locale3.time, locale_periods = locale3.periods, locale_weekdays = locale3.days, locale_shortWeekdays = locale3.shortDays, locale_months = locale3.months, locale_shortMonths = locale3.shortMonths; - var periodRe = formatRe(locale_periods), periodLookup = formatLookup(locale_periods), weekdayRe = formatRe(locale_weekdays), weekdayLookup = formatLookup(locale_weekdays), shortWeekdayRe = formatRe(locale_shortWeekdays), shortWeekdayLookup = formatLookup(locale_shortWeekdays), monthRe = formatRe(locale_months), monthLookup = formatLookup(locale_months), shortMonthRe = formatRe(locale_shortMonths), shortMonthLookup = formatLookup(locale_shortMonths); - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "g": formatYearISO, - "G": formatFullYearISO, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "g": formatUTCYearISO, - "G": formatUTCFullYearISO, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "g": parseYear, - "G": parseFullYear, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - function newFormat(specifier, formats2) { - return function(date2) { - var string2 = [], i = -1, j = 0, n = specifier.length, c4, pad3, format3; - if (!(date2 instanceof Date)) date2 = /* @__PURE__ */ new Date(+date2); - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string2.push(specifier.slice(j, i)); - if ((pad3 = pads[c4 = specifier.charAt(++i)]) != null) c4 = specifier.charAt(++i); - else pad3 = c4 === "e" ? " " : "0"; - if (format3 = formats2[c4]) c4 = format3(date2, pad3); - string2.push(c4); - j = i + 1; - } - } - string2.push(specifier.slice(j, i)); - return string2.join(""); - }; - } - function newParse(specifier, Z) { - return function(string2) { - var d = newDate(1900, void 0, 1), i = parseSpecifier(d, specifier, string2 += "", 0), week, day; - if (i != string2.length) return null; - if ("Q" in d) return new Date(d.Q); - if ("s" in d) return new Date(d.s * 1e3 + ("L" in d ? d.L : 0)); - if (Z && !("Z" in d)) d.Z = 0; - if ("p" in d) d.H = d.H % 12 + d.p * 12; - if (d.m === void 0) d.m = "q" in d ? d.q : 0; - if ("V" in d) { - if (d.V < 1 || d.V > 53) return null; - if (!("w" in d)) d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay(); - week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week); - week = utcDay.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day = week.getDay(); - week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week); - week = timeDay.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; - } - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - return localDate(d); - }; - } - function parseSpecifier(d, specifier, string2, j) { - var i = 0, n = specifier.length, m = string2.length, c4, parse2; - while (i < n) { - if (j >= m) return -1; - c4 = specifier.charCodeAt(i++); - if (c4 === 37) { - c4 = specifier.charAt(i++); - parse2 = parses[c4 in pads ? specifier.charAt(i++) : c4]; - if (!parse2 || (j = parse2(d, string2, j)) < 0) return -1; - } else if (c4 != string2.charCodeAt(j++)) { - return -1; - } - } - return j; - } - function parsePeriod(d, string2, i) { - var n = periodRe.exec(string2.slice(i)); - return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseShortWeekday(d, string2, i) { - var n = shortWeekdayRe.exec(string2.slice(i)); - return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseWeekday(d, string2, i) { - var n = weekdayRe.exec(string2.slice(i)); - return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseShortMonth(d, string2, i) { - var n = shortMonthRe.exec(string2.slice(i)); - return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseMonth(d, string2, i) { - var n = monthRe.exec(string2.slice(i)); - return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - function parseLocaleDateTime(d, string2, i) { - return parseSpecifier(d, locale_dateTime, string2, i); - } - function parseLocaleDate(d, string2, i) { - return parseSpecifier(d, locale_date, string2, i); - } - function parseLocaleTime(d, string2, i) { - return parseSpecifier(d, locale_time, string2, i); - } - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { - return specifier; - }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { - return specifier; - }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { - return specifier; - }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { - return specifier; - }; - return p; - } - }; -} -var pads = { "-": "", "_": " ", "0": "0" }; -var numberRe = /^\s*\d+/; -var percentRe = /^%/; -var requoteRe = /[\\^$*+?|[\]().{}]/g; -function pad(value, fill, width) { - var sign3 = value < 0 ? "-" : "", string2 = (sign3 ? -value : value) + "", length3 = string2.length; - return sign3 + (length3 < width ? new Array(width - length3 + 1).join(fill) + string2 : string2); -} -function requote(s2) { - return s2.replace(requoteRe, "\\$&"); -} -function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); -} -function formatLookup(names) { - return new Map(names.map((name, i) => [name.toLowerCase(), i])); -} -function parseWeekdayNumberSunday(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; -} -function parseWeekdayNumberMonday(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; -} -function parseWeekNumberSunday(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; -} -function parseWeekNumberISO(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; -} -function parseWeekNumberMonday(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; -} -function parseFullYear(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; -} -function parseYear(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2e3), i + n[0].length) : -1; -} -function parseZone(d, string2, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string2.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; -} -function parseQuarter(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; -} -function parseMonthNumber(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; -} -function parseDayOfMonth(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; -} -function parseDayOfYear(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; -} -function parseHour24(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; -} -function parseMinutes(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; -} -function parseSeconds(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; -} -function parseMilliseconds(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; -} -function parseMicroseconds(d, string2, i) { - var n = numberRe.exec(string2.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1e3), i + n[0].length) : -1; -} -function parseLiteralPercent(d, string2, i) { - var n = percentRe.exec(string2.slice(i, i + 1)); - return n ? i + n[0].length : -1; -} -function parseUnixTimestamp(d, string2, i) { - var n = numberRe.exec(string2.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; -} -function parseUnixTimestampSeconds(d, string2, i) { - var n = numberRe.exec(string2.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; -} -function formatDayOfMonth(d, p) { - return pad(d.getDate(), p, 2); -} -function formatHour24(d, p) { - return pad(d.getHours(), p, 2); -} -function formatHour12(d, p) { - return pad(d.getHours() % 12 || 12, p, 2); -} -function formatDayOfYear(d, p) { - return pad(1 + timeDay.count(timeYear(d), d), p, 3); -} -function formatMilliseconds(d, p) { - return pad(d.getMilliseconds(), p, 3); -} -function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; -} -function formatMonthNumber(d, p) { - return pad(d.getMonth() + 1, p, 2); -} -function formatMinutes(d, p) { - return pad(d.getMinutes(), p, 2); -} -function formatSeconds(d, p) { - return pad(d.getSeconds(), p, 2); -} -function formatWeekdayNumberMonday(d) { - var day = d.getDay(); - return day === 0 ? 7 : day; -} -function formatWeekNumberSunday(d, p) { - return pad(timeSunday.count(timeYear(d) - 1, d), p, 2); -} -function dISO(d) { - var day = d.getDay(); - return day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d); -} -function formatWeekNumberISO(d, p) { - d = dISO(d); - return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2); -} -function formatWeekdayNumberSunday(d) { - return d.getDay(); -} -function formatWeekNumberMonday(d, p) { - return pad(timeMonday.count(timeYear(d) - 1, d), p, 2); -} -function formatYear(d, p) { - return pad(d.getFullYear() % 100, p, 2); -} -function formatYearISO(d, p) { - d = dISO(d); - return pad(d.getFullYear() % 100, p, 2); -} -function formatFullYear(d, p) { - return pad(d.getFullYear() % 1e4, p, 4); -} -function formatFullYearISO(d, p) { - var day = d.getDay(); - d = day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d); - return pad(d.getFullYear() % 1e4, p, 4); -} -function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) + pad(z / 60 | 0, "0", 2) + pad(z % 60, "0", 2); -} -function formatUTCDayOfMonth(d, p) { - return pad(d.getUTCDate(), p, 2); -} -function formatUTCHour24(d, p) { - return pad(d.getUTCHours(), p, 2); -} -function formatUTCHour12(d, p) { - return pad(d.getUTCHours() % 12 || 12, p, 2); -} -function formatUTCDayOfYear(d, p) { - return pad(1 + utcDay.count(utcYear(d), d), p, 3); -} -function formatUTCMilliseconds(d, p) { - return pad(d.getUTCMilliseconds(), p, 3); -} -function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; -} -function formatUTCMonthNumber(d, p) { - return pad(d.getUTCMonth() + 1, p, 2); -} -function formatUTCMinutes(d, p) { - return pad(d.getUTCMinutes(), p, 2); -} -function formatUTCSeconds(d, p) { - return pad(d.getUTCSeconds(), p, 2); -} -function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; -} -function formatUTCWeekNumberSunday(d, p) { - return pad(utcSunday.count(utcYear(d) - 1, d), p, 2); -} -function UTCdISO(d) { - var day = d.getUTCDay(); - return day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d); -} -function formatUTCWeekNumberISO(d, p) { - d = UTCdISO(d); - return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2); -} -function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); -} -function formatUTCWeekNumberMonday(d, p) { - return pad(utcMonday.count(utcYear(d) - 1, d), p, 2); -} -function formatUTCYear(d, p) { - return pad(d.getUTCFullYear() % 100, p, 2); -} -function formatUTCYearISO(d, p) { - d = UTCdISO(d); - return pad(d.getUTCFullYear() % 100, p, 2); -} -function formatUTCFullYear(d, p) { - return pad(d.getUTCFullYear() % 1e4, p, 4); -} -function formatUTCFullYearISO(d, p) { - var day = d.getUTCDay(); - d = day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d); - return pad(d.getUTCFullYear() % 1e4, p, 4); -} -function formatUTCZone() { - return "+0000"; -} -function formatLiteralPercent() { - return "%"; -} -function formatUnixTimestamp(d) { - return +d; -} -function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1e3); -} - -// node_modules/d3-time-format/src/defaultLocale.js -var locale2; -var timeFormat; -var timeParse; -var utcFormat; -var utcParse; -defaultLocale2({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] -}); -function defaultLocale2(definition) { - locale2 = formatLocale(definition); - timeFormat = locale2.format; - timeParse = locale2.parse; - utcFormat = locale2.utcFormat; - utcParse = locale2.utcParse; - return locale2; -} - -// node_modules/d3-scale/src/time.js -function date(t) { - return new Date(t); -} -function number4(t) { - return t instanceof Date ? +t : +/* @__PURE__ */ new Date(+t); -} -function calendar(ticks2, tickInterval, year, month, week, day, hour, minute, second3, format3) { - var scale = continuous(), invert = scale.invert, domain = scale.domain; - var formatMillisecond = format3(".%L"), formatSecond = format3(":%S"), formatMinute = format3("%I:%M"), formatHour = format3("%I %p"), formatDay = format3("%a %d"), formatWeek = format3("%b %d"), formatMonth = format3("%B"), formatYear3 = format3("%Y"); - function tickFormat2(date2) { - return (second3(date2) < date2 ? formatMillisecond : minute(date2) < date2 ? formatSecond : hour(date2) < date2 ? formatMinute : day(date2) < date2 ? formatHour : month(date2) < date2 ? week(date2) < date2 ? formatDay : formatWeek : year(date2) < date2 ? formatMonth : formatYear3)(date2); - } - scale.invert = function(y2) { - return new Date(invert(y2)); - }; - scale.domain = function(_) { - return arguments.length ? domain(Array.from(_, number4)) : domain().map(date); - }; - scale.ticks = function(interval2) { - var d = domain(); - return ticks2(d[0], d[d.length - 1], interval2 == null ? 10 : interval2); - }; - scale.tickFormat = function(count, specifier) { - return specifier == null ? tickFormat2 : format3(specifier); - }; - scale.nice = function(interval2) { - var d = domain(); - if (!interval2 || typeof interval2.range !== "function") interval2 = tickInterval(d[0], d[d.length - 1], interval2 == null ? 10 : interval2); - return interval2 ? domain(nice(d, interval2)) : scale; - }; - scale.copy = function() { - return copy(scale, calendar(ticks2, tickInterval, year, month, week, day, hour, minute, second3, format3)); - }; - return scale; -} -function time() { - return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute, second, timeFormat).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]), arguments); -} - -// node_modules/d3-scale/src/utcTime.js -function utcTime() { - return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, utcFormat).domain([Date.UTC(2e3, 0, 1), Date.UTC(2e3, 0, 2)]), arguments); -} - -// node_modules/d3-scale/src/sequential.js -function copy2(source, target) { - return target.domain(source.domain()).interpolator(source.interpolator()).clamp(source.clamp()).unknown(source.unknown()); -} - -// node_modules/d3-scale/src/diverging.js -function transformer3() { - var x05 = 0, x12 = 0.5, x2 = 1, s2 = 1, t03, t13, t22, k10, k21, interpolator = identity3, transform2, clamp = false, unknown; - function scale(x3) { - return isNaN(x3 = +x3) ? unknown : (x3 = 0.5 + ((x3 = +transform2(x3)) - t13) * (s2 * x3 < s2 * t13 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x3)) : x3)); - } - scale.domain = function(_) { - return arguments.length ? ([x05, x12, x2] = _, t03 = transform2(x05 = +x05), t13 = transform2(x12 = +x12), t22 = transform2(x2 = +x2), k10 = t03 === t13 ? 0 : 0.5 / (t13 - t03), k21 = t13 === t22 ? 0 : 0.5 / (t22 - t13), s2 = t13 < t03 ? -1 : 1, scale) : [x05, x12, x2]; - }; - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - function range3(interpolate) { - return function(_) { - var r0, r1, r2; - return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)]; - }; - } - scale.range = range3(value_default); - scale.rangeRound = range3(round_default); - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - return function(t) { - transform2 = t, t03 = t(x05), t13 = t(x12), t22 = t(x2), k10 = t03 === t13 ? 0 : 0.5 / (t13 - t03), k21 = t13 === t22 ? 0 : 0.5 / (t22 - t13), s2 = t13 < t03 ? -1 : 1; - return scale; - }; -} -function diverging() { - var scale = linearish(transformer3()(identity3)); - scale.copy = function() { - return copy2(scale, diverging()); - }; - return initInterpolator.apply(scale, arguments); -} -function divergingLog() { - var scale = loggish(transformer3()).domain([0.1, 1, 10]); - scale.copy = function() { - return copy2(scale, divergingLog()).base(scale.base()); - }; - return initInterpolator.apply(scale, arguments); -} -function divergingSymlog() { - var scale = symlogish(transformer3()); - scale.copy = function() { - return copy2(scale, divergingSymlog()).constant(scale.constant()); - }; - return initInterpolator.apply(scale, arguments); -} -function divergingPow() { - var scale = powish(transformer3()); - scale.copy = function() { - return copy2(scale, divergingPow()).exponent(scale.exponent()); - }; - return initInterpolator.apply(scale, arguments); -} - -// node_modules/d3-scale-chromatic/src/colors.js -function colors_default(specifier) { - var n = specifier.length / 6 | 0, colors = new Array(n), i = 0; - while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6); - return colors; -} - -// node_modules/d3-scale-chromatic/src/categorical/category10.js -var category10_default = colors_default("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); - -// node_modules/d3-scale-chromatic/src/categorical/Accent.js -var Accent_default = colors_default("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"); - -// node_modules/d3-scale-chromatic/src/categorical/Dark2.js -var Dark2_default = colors_default("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"); - -// node_modules/d3-scale-chromatic/src/categorical/observable10.js -var observable10_default = colors_default("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"); - -// node_modules/d3-scale-chromatic/src/categorical/Paired.js -var Paired_default = colors_default("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"); - -// node_modules/d3-scale-chromatic/src/categorical/Pastel1.js -var Pastel1_default = colors_default("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"); - -// node_modules/d3-scale-chromatic/src/categorical/Pastel2.js -var Pastel2_default = colors_default("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"); - -// node_modules/d3-scale-chromatic/src/categorical/Set1.js -var Set1_default = colors_default("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"); - -// node_modules/d3-scale-chromatic/src/categorical/Set2.js -var Set2_default = colors_default("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"); - -// node_modules/d3-scale-chromatic/src/categorical/Set3.js -var Set3_default = colors_default("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"); - -// node_modules/d3-scale-chromatic/src/categorical/Tableau10.js -var Tableau10_default = colors_default("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"); - -// node_modules/d3-scale-chromatic/src/ramp.js -var ramp_default = (scheme28) => rgbBasis(scheme28[scheme28.length - 1]); - -// node_modules/d3-scale-chromatic/src/diverging/BrBG.js -var scheme = new Array(3).concat( - "d8b365f5f5f55ab4ac", - "a6611adfc27d80cdc1018571", - "a6611adfc27df5f5f580cdc1018571", - "8c510ad8b365f6e8c3c7eae55ab4ac01665e", - "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", - "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", - "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", - "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", - "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30" -).map(colors_default); -var BrBG_default = ramp_default(scheme); - -// node_modules/d3-scale-chromatic/src/diverging/PRGn.js -var scheme2 = new Array(3).concat( - "af8dc3f7f7f77fbf7b", - "7b3294c2a5cfa6dba0008837", - "7b3294c2a5cff7f7f7a6dba0008837", - "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", - "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", - "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", - "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", - "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", - "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b" -).map(colors_default); -var PRGn_default = ramp_default(scheme2); - -// node_modules/d3-scale-chromatic/src/diverging/PiYG.js -var scheme3 = new Array(3).concat( - "e9a3c9f7f7f7a1d76a", - "d01c8bf1b6dab8e1864dac26", - "d01c8bf1b6daf7f7f7b8e1864dac26", - "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", - "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", - "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", - "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", - "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", - "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419" -).map(colors_default); -var PiYG_default = ramp_default(scheme3); - -// node_modules/d3-scale-chromatic/src/diverging/PuOr.js -var scheme4 = new Array(3).concat( - "998ec3f7f7f7f1a340", - "5e3c99b2abd2fdb863e66101", - "5e3c99b2abd2f7f7f7fdb863e66101", - "542788998ec3d8daebfee0b6f1a340b35806", - "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", - "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", - "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", - "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", - "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08" -).map(colors_default); -var PuOr_default = ramp_default(scheme4); - -// node_modules/d3-scale-chromatic/src/diverging/RdBu.js -var scheme5 = new Array(3).concat( - "ef8a62f7f7f767a9cf", - "ca0020f4a58292c5de0571b0", - "ca0020f4a582f7f7f792c5de0571b0", - "b2182bef8a62fddbc7d1e5f067a9cf2166ac", - "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", - "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", - "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", - "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", - "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061" -).map(colors_default); -var RdBu_default = ramp_default(scheme5); - -// node_modules/d3-scale-chromatic/src/diverging/RdGy.js -var scheme6 = new Array(3).concat( - "ef8a62ffffff999999", - "ca0020f4a582bababa404040", - "ca0020f4a582ffffffbababa404040", - "b2182bef8a62fddbc7e0e0e09999994d4d4d", - "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", - "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", - "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", - "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", - "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a" -).map(colors_default); -var RdGy_default = ramp_default(scheme6); - -// node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js -var scheme7 = new Array(3).concat( - "fc8d59ffffbf91bfdb", - "d7191cfdae61abd9e92c7bb6", - "d7191cfdae61ffffbfabd9e92c7bb6", - "d73027fc8d59fee090e0f3f891bfdb4575b4", - "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", - "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", - "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", - "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", - "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695" -).map(colors_default); -var RdYlBu_default = ramp_default(scheme7); - -// node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js -var scheme8 = new Array(3).concat( - "fc8d59ffffbf91cf60", - "d7191cfdae61a6d96a1a9641", - "d7191cfdae61ffffbfa6d96a1a9641", - "d73027fc8d59fee08bd9ef8b91cf601a9850", - "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", - "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", - "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", - "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", - "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837" -).map(colors_default); -var RdYlGn_default = ramp_default(scheme8); - -// node_modules/d3-scale-chromatic/src/diverging/Spectral.js -var scheme9 = new Array(3).concat( - "fc8d59ffffbf99d594", - "d7191cfdae61abdda42b83ba", - "d7191cfdae61ffffbfabdda42b83ba", - "d53e4ffc8d59fee08be6f59899d5943288bd", - "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", - "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", - "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", - "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", - "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2" -).map(colors_default); -var Spectral_default = ramp_default(scheme9); - -// node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js -var scheme10 = new Array(3).concat( - "e5f5f999d8c92ca25f", - "edf8fbb2e2e266c2a4238b45", - "edf8fbb2e2e266c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b" -).map(colors_default); -var BuGn_default = ramp_default(scheme10); - -// node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js -var scheme11 = new Array(3).concat( - "e0ecf49ebcda8856a7", - "edf8fbb3cde38c96c688419d", - "edf8fbb3cde38c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b" -).map(colors_default); -var BuPu_default = ramp_default(scheme11); - -// node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js -var scheme12 = new Array(3).concat( - "e0f3dba8ddb543a2ca", - "f0f9e8bae4bc7bccc42b8cbe", - "f0f9e8bae4bc7bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081" -).map(colors_default); -var GnBu_default = ramp_default(scheme12); - -// node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js -var scheme13 = new Array(3).concat( - "fee8c8fdbb84e34a33", - "fef0d9fdcc8afc8d59d7301f", - "fef0d9fdcc8afc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000" -).map(colors_default); -var OrRd_default = ramp_default(scheme13); - -// node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js -var scheme14 = new Array(3).concat( - "ece2f0a6bddb1c9099", - "f6eff7bdc9e167a9cf02818a", - "f6eff7bdc9e167a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636" -).map(colors_default); -var PuBuGn_default = ramp_default(scheme14); - -// node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js -var scheme15 = new Array(3).concat( - "ece7f2a6bddb2b8cbe", - "f1eef6bdc9e174a9cf0570b0", - "f1eef6bdc9e174a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858" -).map(colors_default); -var PuBu_default = ramp_default(scheme15); - -// node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js -var scheme16 = new Array(3).concat( - "e7e1efc994c7dd1c77", - "f1eef6d7b5d8df65b0ce1256", - "f1eef6d7b5d8df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f" -).map(colors_default); -var PuRd_default = ramp_default(scheme16); - -// node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js -var scheme17 = new Array(3).concat( - "fde0ddfa9fb5c51b8a", - "feebe2fbb4b9f768a1ae017e", - "feebe2fbb4b9f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a" -).map(colors_default); -var RdPu_default = ramp_default(scheme17); - -// node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js -var scheme18 = new Array(3).concat( - "edf8b17fcdbb2c7fb8", - "ffffcca1dab441b6c4225ea8", - "ffffcca1dab441b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58" -).map(colors_default); -var YlGnBu_default = ramp_default(scheme18); - -// node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js -var scheme19 = new Array(3).concat( - "f7fcb9addd8e31a354", - "ffffccc2e69978c679238443", - "ffffccc2e69978c67931a354006837", - "ffffccd9f0a3addd8e78c67931a354006837", - "ffffccd9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529" -).map(colors_default); -var YlGn_default = ramp_default(scheme19); - -// node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js -var scheme20 = new Array(3).concat( - "fff7bcfec44fd95f0e", - "ffffd4fed98efe9929cc4c02", - "ffffd4fed98efe9929d95f0e993404", - "ffffd4fee391fec44ffe9929d95f0e993404", - "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506" -).map(colors_default); -var YlOrBr_default = ramp_default(scheme20); - -// node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js -var scheme21 = new Array(3).concat( - "ffeda0feb24cf03b20", - "ffffb2fecc5cfd8d3ce31a1c", - "ffffb2fecc5cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026" -).map(colors_default); -var YlOrRd_default = ramp_default(scheme21); - -// node_modules/d3-scale-chromatic/src/sequential-single/Blues.js -var scheme22 = new Array(3).concat( - "deebf79ecae13182bd", - "eff3ffbdd7e76baed62171b5", - "eff3ffbdd7e76baed63182bd08519c", - "eff3ffc6dbef9ecae16baed63182bd08519c", - "eff3ffc6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b" -).map(colors_default); -var Blues_default = ramp_default(scheme22); - -// node_modules/d3-scale-chromatic/src/sequential-single/Greens.js -var scheme23 = new Array(3).concat( - "e5f5e0a1d99b31a354", - "edf8e9bae4b374c476238b45", - "edf8e9bae4b374c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b" -).map(colors_default); -var Greens_default = ramp_default(scheme23); - -// node_modules/d3-scale-chromatic/src/sequential-single/Greys.js -var scheme24 = new Array(3).concat( - "f0f0f0bdbdbd636363", - "f7f7f7cccccc969696525252", - "f7f7f7cccccc969696636363252525", - "f7f7f7d9d9d9bdbdbd969696636363252525", - "f7f7f7d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000" -).map(colors_default); -var Greys_default = ramp_default(scheme24); - -// node_modules/d3-scale-chromatic/src/sequential-single/Purples.js -var scheme25 = new Array(3).concat( - "efedf5bcbddc756bb1", - "f2f0f7cbc9e29e9ac86a51a3", - "f2f0f7cbc9e29e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d" -).map(colors_default); -var Purples_default = ramp_default(scheme25); - -// node_modules/d3-scale-chromatic/src/sequential-single/Reds.js -var scheme26 = new Array(3).concat( - "fee0d2fc9272de2d26", - "fee5d9fcae91fb6a4acb181d", - "fee5d9fcae91fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d" -).map(colors_default); -var Reds_default = ramp_default(scheme26); - -// node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js -var scheme27 = new Array(3).concat( - "fee6cefdae6be6550d", - "feeddefdbe85fd8d3cd94701", - "feeddefdbe85fd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704" -).map(colors_default); -var Oranges_default = ramp_default(scheme27); - -// node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js -function cividis_default(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + ", " + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + ", " + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67))))))) + ")"; -} - -// node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js -var cubehelix_default2 = cubehelixLong(cubehelix(300, 0.5, 0), cubehelix(-240, 0.5, 1)); - -// node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js -var warm = cubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.5, 0.8)); -var cool = cubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.5, 0.8)); -var c = cubehelix(); -function rainbow_default(t) { - if (t < 0 || t > 1) t -= Math.floor(t); - var ts = Math.abs(t - 0.5); - c.h = 360 * t - 100; - c.s = 1.5 - 1.5 * ts; - c.l = 0.8 - 0.9 * ts; - return c + ""; -} - -// node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js -var c2 = rgb(); -var pi_1_3 = Math.PI / 3; -var pi_2_3 = Math.PI * 2 / 3; -function sinebow_default(t) { - var x2; - t = (0.5 - t) * Math.PI; - c2.r = 255 * (x2 = Math.sin(t)) * x2; - c2.g = 255 * (x2 = Math.sin(t + pi_1_3)) * x2; - c2.b = 255 * (x2 = Math.sin(t + pi_2_3)) * x2; - return c2 + ""; -} - -// node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js -function turbo_default(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + ", " + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + ", " + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66))))))) + ")"; -} - -// node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js -function ramp(range3) { - var n = range3.length; - return function(t) { - return range3[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} -var viridis_default = ramp(colors_default("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")); -var magma = ramp(colors_default("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")); -var inferno = ramp(colors_default("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")); -var plasma = ramp(colors_default("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")); - -// node_modules/d3-shape/src/constant.js -function constant_default4(x2) { - return function constant2() { - return x2; - }; -} - -// node_modules/d3-shape/src/math.js -var cos2 = Math.cos; -var min3 = Math.min; -var sin2 = Math.sin; -var sqrt3 = Math.sqrt; -var epsilon4 = 1e-12; -var pi3 = Math.PI; -var halfPi2 = pi3 / 2; -var tau3 = 2 * pi3; - -// node_modules/d3-shape/src/path.js -function withPath(shape) { - let digits = 3; - shape.digits = function(_) { - if (!arguments.length) return digits; - if (_ == null) { - digits = null; - } else { - const d = Math.floor(_); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`); - digits = d; - } - return shape; - }; - return () => new Path(digits); -} - -// node_modules/d3-shape/src/array.js -var slice = Array.prototype.slice; -function array_default(x2) { - return typeof x2 === "object" && "length" in x2 ? x2 : Array.from(x2); -} - -// node_modules/d3-shape/src/curve/linear.js -function Linear(context) { - this._context = context; -} -Linear.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: - this._point = 1; - this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); - break; - case 1: - this._point = 2; - // falls through - default: - this._context.lineTo(x2, y2); - break; - } - } -}; -function linear_default(context) { - return new Linear(context); -} - -// node_modules/d3-shape/src/point.js -function x(p) { - return p[0]; -} -function y(p) { - return p[1]; -} - -// node_modules/d3-shape/src/line.js -function line_default2(x2, y2) { - var defined2 = constant_default4(true), context = null, curve = linear_default, output = null, path2 = withPath(line2); - x2 = typeof x2 === "function" ? x2 : x2 === void 0 ? x : constant_default4(x2); - y2 = typeof y2 === "function" ? y2 : y2 === void 0 ? y : constant_default4(y2); - function line2(data) { - var i, n = (data = array_default(data)).length, d, defined0 = false, buffer; - if (context == null) output = curve(buffer = path2()); - for (i = 0; i <= n; ++i) { - if (!(i < n && defined2(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) output.lineStart(); - else output.lineEnd(); - } - if (defined0) output.point(+x2(d, i, data), +y2(d, i, data)); - } - if (buffer) return output = null, buffer + "" || null; - } - line2.x = function(_) { - return arguments.length ? (x2 = typeof _ === "function" ? _ : constant_default4(+_), line2) : x2; - }; - line2.y = function(_) { - return arguments.length ? (y2 = typeof _ === "function" ? _ : constant_default4(+_), line2) : y2; - }; - line2.defined = function(_) { - return arguments.length ? (defined2 = typeof _ === "function" ? _ : constant_default4(!!_), line2) : defined2; - }; - line2.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), line2) : curve; - }; - line2.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line2) : context; - }; - return line2; -} - -// node_modules/d3-shape/src/curve/bump.js -var Bump = class { - constructor(context, x2) { - this._context = context; - this._x = x2; - } - areaStart() { - this._line = 0; - } - areaEnd() { - this._line = NaN; - } - lineStart() { - this._point = 0; - } - lineEnd() { - if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); - this._line = 1 - this._line; - } - point(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: { - this._point = 1; - if (this._line) this._context.lineTo(x2, y2); - else this._context.moveTo(x2, y2); - break; - } - case 1: - this._point = 2; - // falls through - default: { - if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x2) / 2, this._y0, this._x0, y2, x2, y2); - else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y2) / 2, x2, this._y0, x2, y2); - break; - } - } - this._x0 = x2, this._y0 = y2; - } -}; -function bumpX(context) { - return new Bump(context, true); -} -function bumpY(context) { - return new Bump(context, false); -} - -// node_modules/d3-shape/src/symbol/asterisk.js -var sqrt32 = sqrt3(3); -var asterisk_default = { - draw(context, size) { - const r = sqrt3(size + min3(size / 28, 0.75)) * 0.59436; - const t = r / 2; - const u = t * sqrt32; - context.moveTo(0, r); - context.lineTo(0, -r); - context.moveTo(-u, -t); - context.lineTo(u, t); - context.moveTo(-u, t); - context.lineTo(u, -t); - } -}; - -// node_modules/d3-shape/src/symbol/circle.js -var circle_default2 = { - draw(context, size) { - const r = sqrt3(size / pi3); - context.moveTo(r, 0); - context.arc(0, 0, r, 0, tau3); - } -}; - -// node_modules/d3-shape/src/symbol/cross.js -var cross_default = { - draw(context, size) { - const r = sqrt3(size / 5) / 2; - context.moveTo(-3 * r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, -3 * r); - context.lineTo(r, -3 * r); - context.lineTo(r, -r); - context.lineTo(3 * r, -r); - context.lineTo(3 * r, r); - context.lineTo(r, r); - context.lineTo(r, 3 * r); - context.lineTo(-r, 3 * r); - context.lineTo(-r, r); - context.lineTo(-3 * r, r); - context.closePath(); - } -}; - -// node_modules/d3-shape/src/symbol/diamond.js -var tan30 = sqrt3(1 / 3); -var tan30_2 = tan30 * 2; -var diamond_default = { - draw(context, size) { - const y2 = sqrt3(size / tan30_2); - const x2 = y2 * tan30; - context.moveTo(0, -y2); - context.lineTo(x2, 0); - context.lineTo(0, y2); - context.lineTo(-x2, 0); - context.closePath(); - } -}; - -// node_modules/d3-shape/src/symbol/diamond2.js -var diamond2_default = { - draw(context, size) { - const r = sqrt3(size) * 0.62625; - context.moveTo(0, -r); - context.lineTo(r, 0); - context.lineTo(0, r); - context.lineTo(-r, 0); - context.closePath(); - } -}; - -// node_modules/d3-shape/src/symbol/plus.js -var plus_default = { - draw(context, size) { - const r = sqrt3(size - min3(size / 7, 2)) * 0.87559; - context.moveTo(-r, 0); - context.lineTo(r, 0); - context.moveTo(0, r); - context.lineTo(0, -r); - } -}; - -// node_modules/d3-shape/src/symbol/square.js -var square_default = { - draw(context, size) { - const w = sqrt3(size); - const x2 = -w / 2; - context.rect(x2, x2, w, w); - } -}; - -// node_modules/d3-shape/src/symbol/square2.js -var square2_default = { - draw(context, size) { - const r = sqrt3(size) * 0.4431; - context.moveTo(r, r); - context.lineTo(r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, r); - context.closePath(); - } -}; - -// node_modules/d3-shape/src/symbol/star.js -var ka = 0.8908130915292852; -var kr = sin2(pi3 / 10) / sin2(7 * pi3 / 10); -var kx = sin2(tau3 / 10) * kr; -var ky = -cos2(tau3 / 10) * kr; -var star_default = { - draw(context, size) { - const r = sqrt3(size * ka); - const x2 = kx * r; - const y2 = ky * r; - context.moveTo(0, -r); - context.lineTo(x2, y2); - for (let i = 1; i < 5; ++i) { - const a2 = tau3 * i / 5; - const c4 = cos2(a2); - const s2 = sin2(a2); - context.lineTo(s2 * r, -c4 * r); - context.lineTo(c4 * x2 - s2 * y2, s2 * x2 + c4 * y2); - } - context.closePath(); - } -}; - -// node_modules/d3-shape/src/symbol/triangle.js -var sqrt33 = sqrt3(3); -var triangle_default = { - draw(context, size) { - const y2 = -sqrt3(size / (sqrt33 * 3)); - context.moveTo(0, y2 * 2); - context.lineTo(-sqrt33 * y2, -y2); - context.lineTo(sqrt33 * y2, -y2); - context.closePath(); - } -}; - -// node_modules/d3-shape/src/symbol/triangle2.js -var sqrt34 = sqrt3(3); -var triangle2_default = { - draw(context, size) { - const s2 = sqrt3(size) * 0.6824; - const t = s2 / 2; - const u = s2 * sqrt34 / 2; - context.moveTo(0, -s2); - context.lineTo(u, t); - context.lineTo(-u, t); - context.closePath(); - } -}; - -// node_modules/d3-shape/src/symbol/wye.js -var c3 = -0.5; -var s = sqrt3(3) / 2; -var k = 1 / sqrt3(12); -var a = (k / 2 + 1) * 3; -var wye_default = { - draw(context, size) { - const r = sqrt3(size / a); - const x05 = r / 2, y05 = r * k; - const x12 = x05, y12 = r * k + r; - const x2 = -x12, y2 = y12; - context.moveTo(x05, y05); - context.lineTo(x12, y12); - context.lineTo(x2, y2); - context.lineTo(c3 * x05 - s * y05, s * x05 + c3 * y05); - context.lineTo(c3 * x12 - s * y12, s * x12 + c3 * y12); - context.lineTo(c3 * x2 - s * y2, s * x2 + c3 * y2); - context.lineTo(c3 * x05 + s * y05, c3 * y05 - s * x05); - context.lineTo(c3 * x12 + s * y12, c3 * y12 - s * x12); - context.lineTo(c3 * x2 + s * y2, c3 * y2 - s * x2); - context.closePath(); - } -}; - -// node_modules/d3-shape/src/symbol/times.js -var times_default = { - draw(context, size) { - const r = sqrt3(size - min3(size / 6, 1.7)) * 0.6189; - context.moveTo(-r, -r); - context.lineTo(r, r); - context.moveTo(-r, r); - context.lineTo(r, -r); - } -}; - -// node_modules/d3-shape/src/symbol.js -var symbolsFill = [ - circle_default2, - cross_default, - diamond_default, - square_default, - star_default, - triangle_default, - wye_default -]; -var symbolsStroke = [ - circle_default2, - plus_default, - times_default, - triangle2_default, - asterisk_default, - square2_default, - diamond2_default -]; - -// node_modules/d3-shape/src/noop.js -function noop_default() { -} - -// node_modules/d3-shape/src/curve/basis.js -function point2(that, x2, y2) { - that._context.bezierCurveTo( - (2 * that._x0 + that._x1) / 3, - (2 * that._y0 + that._y1) / 3, - (that._x0 + 2 * that._x1) / 3, - (that._y0 + 2 * that._y1) / 3, - (that._x0 + 4 * that._x1 + x2) / 6, - (that._y0 + 4 * that._y1 + y2) / 6 - ); -} -function Basis(context) { - this._context = context; -} -Basis.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 3: - point2(this, this._x1, this._y1); - // falls through - case 2: - this._context.lineTo(this._x1, this._y1); - break; - } - if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: - this._point = 1; - this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); - break; - case 1: - this._point = 2; - break; - case 2: - this._point = 3; - this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); - // falls through - default: - point2(this, x2, y2); - break; - } - this._x0 = this._x1, this._x1 = x2; - this._y0 = this._y1, this._y1 = y2; - } -}; -function basis_default2(context) { - return new Basis(context); -} - -// node_modules/d3-shape/src/curve/basisClosed.js -function BasisClosed(context) { - this._context = context; -} -BasisClosed.prototype = { - areaStart: noop_default, - areaEnd: noop_default, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x2, this._y2); - this._context.closePath(); - break; - } - case 2: { - this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); - this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x2, this._y2); - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - break; - } - } - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: - this._point = 1; - this._x2 = x2, this._y2 = y2; - break; - case 1: - this._point = 2; - this._x3 = x2, this._y3 = y2; - break; - case 2: - this._point = 3; - this._x4 = x2, this._y4 = y2; - this._context.moveTo((this._x0 + 4 * this._x1 + x2) / 6, (this._y0 + 4 * this._y1 + y2) / 6); - break; - default: - point2(this, x2, y2); - break; - } - this._x0 = this._x1, this._x1 = x2; - this._y0 = this._y1, this._y1 = y2; - } -}; -function basisClosed_default2(context) { - return new BasisClosed(context); -} - -// node_modules/d3-shape/src/curve/basisOpen.js -function BasisOpen(context) { - this._context = context; -} -BasisOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: - this._point = 1; - break; - case 1: - this._point = 2; - break; - case 2: - this._point = 3; - var x05 = (this._x0 + 4 * this._x1 + x2) / 6, y05 = (this._y0 + 4 * this._y1 + y2) / 6; - this._line ? this._context.lineTo(x05, y05) : this._context.moveTo(x05, y05); - break; - case 3: - this._point = 4; - // falls through - default: - point2(this, x2, y2); - break; - } - this._x0 = this._x1, this._x1 = x2; - this._y0 = this._y1, this._y1 = y2; - } -}; -function basisOpen_default(context) { - return new BasisOpen(context); -} - -// node_modules/d3-shape/src/curve/bundle.js -function Bundle(context, beta) { - this._basis = new Basis(context); - this._beta = beta; -} -Bundle.prototype = { - lineStart: function() { - this._x = []; - this._y = []; - this._basis.lineStart(); - }, - lineEnd: function() { - var x2 = this._x, y2 = this._y, j = x2.length - 1; - if (j > 0) { - var x05 = x2[0], y05 = y2[0], dx = x2[j] - x05, dy = y2[j] - y05, i = -1, t; - while (++i <= j) { - t = i / j; - this._basis.point( - this._beta * x2[i] + (1 - this._beta) * (x05 + t * dx), - this._beta * y2[i] + (1 - this._beta) * (y05 + t * dy) - ); - } - } - this._x = this._y = null; - this._basis.lineEnd(); - }, - point: function(x2, y2) { - this._x.push(+x2); - this._y.push(+y2); - } -}; -var bundle_default = (function custom(beta) { - function bundle(context) { - return beta === 1 ? new Basis(context) : new Bundle(context, beta); - } - bundle.beta = function(beta2) { - return custom(+beta2); - }; - return bundle; -})(0.85); - -// node_modules/d3-shape/src/curve/cardinal.js -function point3(that, x2, y2) { - that._context.bezierCurveTo( - that._x1 + that._k * (that._x2 - that._x0), - that._y1 + that._k * (that._y2 - that._y0), - that._x2 + that._k * (that._x1 - x2), - that._y2 + that._k * (that._y1 - y2), - that._x2, - that._y2 - ); -} -function Cardinal(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} -Cardinal.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: - this._context.lineTo(this._x2, this._y2); - break; - case 3: - point3(this, this._x1, this._y1); - break; - } - if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: - this._point = 1; - this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); - break; - case 1: - this._point = 2; - this._x1 = x2, this._y1 = y2; - break; - case 2: - this._point = 3; - // falls through - default: - point3(this, x2, y2); - break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x2; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y2; - } -}; -var cardinal_default = (function custom2(tension) { - function cardinal(context) { - return new Cardinal(context, tension); - } - cardinal.tension = function(tension2) { - return custom2(+tension2); - }; - return cardinal; -})(0); - -// node_modules/d3-shape/src/curve/cardinalClosed.js -function CardinalClosed(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} -CardinalClosed.prototype = { - areaStart: noop_default, - areaEnd: noop_default, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: - this._point = 1; - this._x3 = x2, this._y3 = y2; - break; - case 1: - this._point = 2; - this._context.moveTo(this._x4 = x2, this._y4 = y2); - break; - case 2: - this._point = 3; - this._x5 = x2, this._y5 = y2; - break; - default: - point3(this, x2, y2); - break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x2; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y2; - } -}; -var cardinalClosed_default = (function custom3(tension) { - function cardinal(context) { - return new CardinalClosed(context, tension); - } - cardinal.tension = function(tension2) { - return custom3(+tension2); - }; - return cardinal; -})(0); - -// node_modules/d3-shape/src/curve/cardinalOpen.js -function CardinalOpen(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} -CardinalOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: - this._point = 1; - break; - case 1: - this._point = 2; - break; - case 2: - this._point = 3; - this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); - break; - case 3: - this._point = 4; - // falls through - default: - point3(this, x2, y2); - break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x2; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y2; - } -}; -var cardinalOpen_default = (function custom4(tension) { - function cardinal(context) { - return new CardinalOpen(context, tension); - } - cardinal.tension = function(tension2) { - return custom4(+tension2); - }; - return cardinal; -})(0); - -// node_modules/d3-shape/src/curve/catmullRom.js -function point4(that, x2, y2) { - var x12 = that._x1, y12 = that._y1, x22 = that._x2, y22 = that._y2; - if (that._l01_a > epsilon4) { - var a2 = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, n = 3 * that._l01_a * (that._l01_a + that._l12_a); - x12 = (x12 * a2 - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; - y12 = (y12 * a2 - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; - } - if (that._l23_a > epsilon4) { - var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, m = 3 * that._l23_a * (that._l23_a + that._l12_a); - x22 = (x22 * b + that._x1 * that._l23_2a - x2 * that._l12_2a) / m; - y22 = (y22 * b + that._y1 * that._l23_2a - y2 * that._l12_2a) / m; - } - that._context.bezierCurveTo(x12, y12, x22, y22, that._x2, that._y2); -} -function CatmullRom(context, alpha) { - this._context = context; - this._alpha = alpha; -} -CatmullRom.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: - this._context.lineTo(this._x2, this._y2); - break; - case 3: - this.point(this._x2, this._y2); - break; - } - if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - if (this._point) { - var x23 = this._x2 - x2, y23 = this._y2 - y2; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - switch (this._point) { - case 0: - this._point = 1; - this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); - break; - case 1: - this._point = 2; - break; - case 2: - this._point = 3; - // falls through - default: - point4(this, x2, y2); - break; - } - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x2; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y2; - } -}; -var catmullRom_default = (function custom5(alpha) { - function catmullRom(context) { - return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); - } - catmullRom.alpha = function(alpha2) { - return custom5(+alpha2); - }; - return catmullRom; -})(0.5); - -// node_modules/d3-shape/src/curve/catmullRomClosed.js -function CatmullRomClosed(context, alpha) { - this._context = context; - this._alpha = alpha; -} -CatmullRomClosed.prototype = { - areaStart: noop_default, - areaEnd: noop_default, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - if (this._point) { - var x23 = this._x2 - x2, y23 = this._y2 - y2; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - switch (this._point) { - case 0: - this._point = 1; - this._x3 = x2, this._y3 = y2; - break; - case 1: - this._point = 2; - this._context.moveTo(this._x4 = x2, this._y4 = y2); - break; - case 2: - this._point = 3; - this._x5 = x2, this._y5 = y2; - break; - default: - point4(this, x2, y2); - break; - } - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x2; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y2; - } -}; -var catmullRomClosed_default = (function custom6(alpha) { - function catmullRom(context) { - return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); - } - catmullRom.alpha = function(alpha2) { - return custom6(+alpha2); - }; - return catmullRom; -})(0.5); - -// node_modules/d3-shape/src/curve/catmullRomOpen.js -function CatmullRomOpen(context, alpha) { - this._context = context; - this._alpha = alpha; -} -CatmullRomOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; - }, - lineEnd: function() { - if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - if (this._point) { - var x23 = this._x2 - x2, y23 = this._y2 - y2; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - switch (this._point) { - case 0: - this._point = 1; - break; - case 1: - this._point = 2; - break; - case 2: - this._point = 3; - this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); - break; - case 3: - this._point = 4; - // falls through - default: - point4(this, x2, y2); - break; - } - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x2; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y2; - } -}; -var catmullRomOpen_default = (function custom7(alpha) { - function catmullRom(context) { - return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); - } - catmullRom.alpha = function(alpha2) { - return custom7(+alpha2); - }; - return catmullRom; -})(0.5); - -// node_modules/d3-shape/src/curve/linearClosed.js -function LinearClosed(context) { - this._context = context; -} -LinearClosed.prototype = { - areaStart: noop_default, - areaEnd: noop_default, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._point) this._context.closePath(); - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - if (this._point) this._context.lineTo(x2, y2); - else this._point = 1, this._context.moveTo(x2, y2); - } -}; -function linearClosed_default(context) { - return new LinearClosed(context); -} - -// node_modules/d3-shape/src/curve/monotone.js -function sign2(x2) { - return x2 < 0 ? -1 : 1; -} -function slope3(that, x2, y2) { - var h0 = that._x1 - that._x0, h1 = x2 - that._x1, s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), p = (s0 * h1 + s1 * h0) / (h0 + h1); - return (sign2(s0) + sign2(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; -} -function slope2(that, t) { - var h = that._x1 - that._x0; - return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; -} -function point5(that, t03, t13) { - var x05 = that._x0, y05 = that._y0, x12 = that._x1, y12 = that._y1, dx = (x12 - x05) / 3; - that._context.bezierCurveTo(x05 + dx, y05 + dx * t03, x12 - dx, y12 - dx * t13, x12, y12); -} -function MonotoneX(context) { - this._context = context; -} -MonotoneX.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: - this._context.lineTo(this._x1, this._y1); - break; - case 3: - point5(this, this._t0, slope2(this, this._t0)); - break; - } - if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x2, y2) { - var t13 = NaN; - x2 = +x2, y2 = +y2; - if (x2 === this._x1 && y2 === this._y1) return; - switch (this._point) { - case 0: - this._point = 1; - this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); - break; - case 1: - this._point = 2; - break; - case 2: - this._point = 3; - point5(this, slope2(this, t13 = slope3(this, x2, y2)), t13); - break; - default: - point5(this, this._t0, t13 = slope3(this, x2, y2)); - break; - } - this._x0 = this._x1, this._x1 = x2; - this._y0 = this._y1, this._y1 = y2; - this._t0 = t13; - } -}; -function MonotoneY(context) { - this._context = new ReflectContext(context); -} -(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x2, y2) { - MonotoneX.prototype.point.call(this, y2, x2); -}; -function ReflectContext(context) { - this._context = context; -} -ReflectContext.prototype = { - moveTo: function(x2, y2) { - this._context.moveTo(y2, x2); - }, - closePath: function() { - this._context.closePath(); - }, - lineTo: function(x2, y2) { - this._context.lineTo(y2, x2); - }, - bezierCurveTo: function(x12, y12, x2, y2, x3, y3) { - this._context.bezierCurveTo(y12, x12, y2, x2, y3, x3); - } -}; -function monotoneX(context) { - return new MonotoneX(context); -} -function monotoneY(context) { - return new MonotoneY(context); -} - -// node_modules/d3-shape/src/curve/natural.js -function Natural(context) { - this._context = context; -} -Natural.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = []; - this._y = []; - }, - lineEnd: function() { - var x2 = this._x, y2 = this._y, n = x2.length; - if (n) { - this._line ? this._context.lineTo(x2[0], y2[0]) : this._context.moveTo(x2[0], y2[0]); - if (n === 2) { - this._context.lineTo(x2[1], y2[1]); - } else { - var px = controlPoints(x2), py = controlPoints(y2); - for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { - this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x2[i1], y2[i1]); - } - } - } - if (this._line || this._line !== 0 && n === 1) this._context.closePath(); - this._line = 1 - this._line; - this._x = this._y = null; - }, - point: function(x2, y2) { - this._x.push(+x2); - this._y.push(+y2); - } -}; -function controlPoints(x2) { - var i, n = x2.length - 1, m, a2 = new Array(n), b = new Array(n), r = new Array(n); - a2[0] = 0, b[0] = 2, r[0] = x2[0] + 2 * x2[1]; - for (i = 1; i < n - 1; ++i) a2[i] = 1, b[i] = 4, r[i] = 4 * x2[i] + 2 * x2[i + 1]; - a2[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x2[n - 1] + x2[n]; - for (i = 1; i < n; ++i) m = a2[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; - a2[n - 1] = r[n - 1] / b[n - 1]; - for (i = n - 2; i >= 0; --i) a2[i] = (r[i] - a2[i + 1]) / b[i]; - b[n - 1] = (x2[n] + a2[n - 1]) / 2; - for (i = 0; i < n - 1; ++i) b[i] = 2 * x2[i + 1] - a2[i + 1]; - return [a2, b]; -} -function natural_default(context) { - return new Natural(context); -} - -// node_modules/d3-shape/src/curve/step.js -function Step(context, t) { - this._context = context; - this._t = t; -} -Step.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = this._y = NaN; - this._point = 0; - }, - lineEnd: function() { - if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); - if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); - if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; - }, - point: function(x2, y2) { - x2 = +x2, y2 = +y2; - switch (this._point) { - case 0: - this._point = 1; - this._line ? this._context.lineTo(x2, y2) : this._context.moveTo(x2, y2); - break; - case 1: - this._point = 2; - // falls through - default: { - if (this._t <= 0) { - this._context.lineTo(this._x, y2); - this._context.lineTo(x2, y2); - } else { - var x12 = this._x * (1 - this._t) + x2 * this._t; - this._context.lineTo(x12, this._y); - this._context.lineTo(x12, y2); - } - break; - } - } - this._x = x2, this._y = y2; - } -}; -function step_default(context) { - return new Step(context, 0.5); -} -function stepBefore(context) { - return new Step(context, 0); -} -function stepAfter(context) { - return new Step(context, 1); -} - -// node_modules/d3-zoom/src/transform.js -function Transform2(k2, x2, y2) { - this.k = k2; - this.x = x2; - this.y = y2; -} -Transform2.prototype = { - constructor: Transform2, - scale: function(k2) { - return k2 === 1 ? this : new Transform2(this.k * k2, this.x, this.y); - }, - translate: function(x2, y2) { - return x2 === 0 & y2 === 0 ? this : new Transform2(this.k, this.x + this.k * x2, this.y + this.k * y2); - }, - apply: function(point6) { - return [point6[0] * this.k + this.x, point6[1] * this.k + this.y]; - }, - applyX: function(x2) { - return x2 * this.k + this.x; - }, - applyY: function(y2) { - return y2 * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x2) { - return (x2 - this.x) / this.k; - }, - invertY: function(y2) { - return (y2 - this.y) / this.k; - }, - rescaleX: function(x2) { - return x2.copy().domain(x2.range().map(this.invertX, this).map(x2.invert, x2)); - }, - rescaleY: function(y2) { - return y2.copy().domain(y2.range().map(this.invertY, this).map(y2.invert, y2)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } -}; -var identity5 = new Transform2(1, 0, 0); -transform.prototype = Transform2.prototype; -function transform(node) { - while (!node.__zoom) if (!(node = node.parentNode)) return identity5; - return node.__zoom; -} - -// node_modules/@observablehq/plot/src/defined.js -function defined(x2) { - return x2 != null && !Number.isNaN(x2); -} -function ascendingDefined2(a2, b) { - return +defined(b) - +defined(a2) || ascending(a2, b); -} -function descendingDefined(a2, b) { - return +defined(b) - +defined(a2) || descending(a2, b); -} -function nonempty(x2) { - return x2 != null && `${x2}` !== ""; -} -function finite(x2) { - return isFinite(x2) ? x2 : NaN; -} -function positive(x2) { - return x2 > 0 && isFinite(x2) ? x2 : NaN; -} -function negative(x2) { - return x2 < 0 && isFinite(x2) ? x2 : NaN; -} - -// node_modules/isoformat/src/format.js -function format2(date2, fallback) { - if (!(date2 instanceof Date)) date2 = /* @__PURE__ */ new Date(+date2); - if (isNaN(date2)) return typeof fallback === "function" ? fallback(date2) : fallback; - const hours = date2.getUTCHours(); - const minutes = date2.getUTCMinutes(); - const seconds2 = date2.getUTCSeconds(); - const milliseconds2 = date2.getUTCMilliseconds(); - return `${formatYear2(date2.getUTCFullYear(), 4)}-${pad2(date2.getUTCMonth() + 1, 2)}-${pad2(date2.getUTCDate(), 2)}${hours || minutes || seconds2 || milliseconds2 ? `T${pad2(hours, 2)}:${pad2(minutes, 2)}${seconds2 || milliseconds2 ? `:${pad2(seconds2, 2)}${milliseconds2 ? `.${pad2(milliseconds2, 3)}` : ``}` : ``}Z` : ``}`; -} -function formatYear2(year) { - return year < 0 ? `-${pad2(-year, 6)}` : year > 9999 ? `+${pad2(year, 6)}` : pad2(year, 4); -} -function pad2(value, width) { - return `${value}`.padStart(width, "0"); -} - -// node_modules/isoformat/src/parse.js -var re2 = /^(?:[-+]\d{2})?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{3})?)?(?:Z|[-+]\d{2}:?\d{2})?)?$/; -function parse(string2, fallback) { - if (!re2.test(string2 += "")) return typeof fallback === "function" ? fallback(string2) : fallback; - return new Date(string2); -} - -// node_modules/@observablehq/plot/src/order.js -function orderof(values2) { - if (values2 == null) return; - const first2 = values2[0]; - const last = values2[values2.length - 1]; - return descending(first2, last); -} - -// node_modules/@observablehq/plot/src/time.js -var durationSecond2 = 1e3; -var durationMinute2 = durationSecond2 * 60; -var durationHour2 = durationMinute2 * 60; -var durationDay2 = durationHour2 * 24; -var durationWeek2 = durationDay2 * 7; -var durationMonth2 = durationDay2 * 30; -var durationYear2 = durationDay2 * 365; -var tickIntervals = [ - ["millisecond", 1], - ["2 milliseconds", 2], - ["5 milliseconds", 5], - ["10 milliseconds", 10], - ["20 milliseconds", 20], - ["50 milliseconds", 50], - ["100 milliseconds", 100], - ["200 milliseconds", 200], - ["500 milliseconds", 500], - ["second", durationSecond2], - ["5 seconds", 5 * durationSecond2], - ["15 seconds", 15 * durationSecond2], - ["30 seconds", 30 * durationSecond2], - ["minute", durationMinute2], - ["5 minutes", 5 * durationMinute2], - ["15 minutes", 15 * durationMinute2], - ["30 minutes", 30 * durationMinute2], - ["hour", durationHour2], - ["3 hours", 3 * durationHour2], - ["6 hours", 6 * durationHour2], - ["12 hours", 12 * durationHour2], - ["day", durationDay2], - ["2 days", 2 * durationDay2], - ["week", durationWeek2], - ["2 weeks", 2 * durationWeek2], - // https://github.com/d3/d3-time/issues/46 - ["month", durationMonth2], - ["3 months", 3 * durationMonth2], - ["6 months", 6 * durationMonth2], - // https://github.com/d3/d3-time/issues/46 - ["year", durationYear2], - ["2 years", 2 * durationYear2], - ["5 years", 5 * durationYear2], - ["10 years", 10 * durationYear2], - ["20 years", 20 * durationYear2], - ["50 years", 50 * durationYear2], - ["100 years", 100 * durationYear2] - // TODO generalize to longer time scales -]; -var durations = /* @__PURE__ */ new Map([ - ["second", durationSecond2], - ["minute", durationMinute2], - ["hour", durationHour2], - ["day", durationDay2], - ["monday", durationWeek2], - ["tuesday", durationWeek2], - ["wednesday", durationWeek2], - ["thursday", durationWeek2], - ["friday", durationWeek2], - ["saturday", durationWeek2], - ["sunday", durationWeek2], - ["week", durationWeek2], - ["month", durationMonth2], - ["year", durationYear2] -]); -var timeIntervals = /* @__PURE__ */ new Map([ - ["second", second], - ["minute", timeMinute], - ["hour", timeHour], - ["day", timeDay], - // https://github.com/d3/d3-time/issues/62 - ["monday", timeMonday], - ["tuesday", timeTuesday], - ["wednesday", timeWednesday], - ["thursday", timeThursday], - ["friday", timeFriday], - ["saturday", timeSaturday], - ["sunday", timeSunday], - ["week", timeSunday], - ["month", timeMonth], - ["year", timeYear] -]); -var utcIntervals = /* @__PURE__ */ new Map([ - ["second", second], - ["minute", utcMinute], - ["hour", utcHour], - ["day", unixDay], - ["monday", utcMonday], - ["tuesday", utcTuesday], - ["wednesday", utcWednesday], - ["thursday", utcThursday], - ["friday", utcFriday], - ["saturday", utcSaturday], - ["sunday", utcSunday], - ["week", utcSunday], - ["month", utcMonth], - ["year", utcYear] -]); -var intervalDuration = Symbol("intervalDuration"); -var intervalType = Symbol("intervalType"); -for (const [name, interval2] of timeIntervals) { - interval2[intervalDuration] = durations.get(name); - interval2[intervalType] = "time"; -} -for (const [name, interval2] of utcIntervals) { - interval2[intervalDuration] = durations.get(name); - interval2[intervalType] = "utc"; -} -var utcFormatIntervals = [ - ["year", utcYear, "utc"], - ["month", utcMonth, "utc"], - ["day", unixDay, "utc", 6 * durationMonth2], - ["hour", utcHour, "utc", 3 * durationDay2], - ["minute", utcMinute, "utc", 6 * durationHour2], - ["second", second, "utc", 30 * durationMinute2] -]; -var timeFormatIntervals = [ - ["year", timeYear, "time"], - ["month", timeMonth, "time"], - ["day", timeDay, "time", 6 * durationMonth2], - ["hour", timeHour, "time", 3 * durationDay2], - ["minute", timeMinute, "time", 6 * durationHour2], - ["second", second, "time", 30 * durationMinute2] -]; -var formatIntervals = [ - utcFormatIntervals[0], - timeFormatIntervals[0], - utcFormatIntervals[1], - timeFormatIntervals[1], - utcFormatIntervals[2], - timeFormatIntervals[2], - // Below day, local time typically has an hourly offset from UTC and hence the - // two are aligned and indistinguishable; therefore, we only consider UTC, and - // we don’t consider these if the domain only has a single value. - ...utcFormatIntervals.slice(3) -]; -function parseTimeInterval(input) { - let name = `${input}`.toLowerCase(); - if (name.endsWith("s")) name = name.slice(0, -1); - let period = 1; - const match = /^(?:(\d+)\s+)/.exec(name); - if (match) { - name = name.slice(match[0].length); - period = +match[1]; - } - switch (name) { - case "quarter": - name = "month"; - period *= 3; - break; - case "half": - name = "month"; - period *= 6; - break; - } - let interval2 = utcIntervals.get(name); - if (!interval2) throw new Error(`unknown interval: ${input}`); - if (period > 1 && !interval2.every) throw new Error(`non-periodic interval: ${name}`); - return [name, period]; -} -function timeInterval2(input) { - return asInterval(parseTimeInterval(input), "time"); -} -function utcInterval(input) { - return asInterval(parseTimeInterval(input), "utc"); -} -function asInterval([name, period], type2) { - let interval2 = (type2 === "time" ? timeIntervals : utcIntervals).get(name); - if (period > 1) { - interval2 = interval2.every(period); - interval2[intervalDuration] = durations.get(name) * period; - interval2[intervalType] = type2; - } - return interval2; -} -function generalizeTimeInterval(interval2, n) { - if (!(n > 1)) return; - const duration = interval2[intervalDuration]; - if (!tickIntervals.some(([, d]) => d === duration)) return; - if (duration % durationDay2 === 0 && durationDay2 < duration && duration < durationMonth2) return; - const [i] = tickIntervals[bisector(([, step]) => Math.log(step)).center(tickIntervals, Math.log(duration * n))]; - return (interval2[intervalType] === "time" ? timeInterval2 : utcInterval)(i); -} -function formatTimeInterval(name, type2, anchor) { - const format3 = type2 === "time" ? timeFormat : utcFormat; - if (anchor == null) { - return format3( - name === "year" ? "%Y" : name === "month" ? "%Y-%m" : name === "day" ? "%Y-%m-%d" : name === "hour" || name === "minute" ? "%Y-%m-%dT%H:%M" : name === "second" ? "%Y-%m-%dT%H:%M:%S" : "%Y-%m-%dT%H:%M:%S.%L" - ); - } - const template2 = getTimeTemplate(anchor); - switch (name) { - case "millisecond": - return formatConditional(format3(".%L"), format3(":%M:%S"), template2); - case "second": - return formatConditional(format3(":%S"), format3("%-I:%M"), template2); - case "minute": - return formatConditional(format3("%-I:%M"), format3("%p"), template2); - case "hour": - return formatConditional(format3("%-I %p"), format3("%b %-d"), template2); - case "day": - return formatConditional(format3("%-d"), format3("%b"), template2); - case "month": - return formatConditional(format3("%b"), format3("%Y"), template2); - case "year": - return format3("%Y"); - } - throw new Error("unable to format time ticks"); -} -function getTimeTemplate(anchor) { - return anchor === "left" || anchor === "right" ? (f1, f2) => ` -${f1} -${f2}` : anchor === "top" ? (f1, f2) => `${f2} -${f1}` : (f1, f2) => `${f1} -${f2}`; -} -function getFormatIntervals(type2) { - return type2 === "time" ? timeFormatIntervals : type2 === "utc" ? utcFormatIntervals : formatIntervals; -} -function inferTimeFormat(type2, dates, anchor) { - const step = max(pairs(dates, (a2, b) => Math.abs(b - a2))); - if (step < 1e3) return formatTimeInterval("millisecond", "utc", anchor); - for (const [name, interval2, intervalType2, maxStep] of getFormatIntervals(type2)) { - if (step > maxStep) break; - if (name === "hour" && !step) break; - if (dates.every((d) => interval2.floor(d) >= d)) return formatTimeInterval(name, intervalType2, anchor); - } -} -function formatConditional(format1, format22, template2) { - return (x2, i, X3) => { - const f1 = format1(x2, i); - const f2 = format22(x2, i); - const j = i - orderof(X3); - return i !== j && X3[j] !== void 0 && f2 === format22(X3[j], j) ? f1 : template2(f1, f2); - }; -} - -// node_modules/@observablehq/plot/src/options.js -var TypedArray = Object.getPrototypeOf(Uint8Array); -var objectToString = Object.prototype.toString; -function isArray(value) { - return value instanceof Array || value instanceof TypedArray; -} -function isNumberArray2(value) { - return value instanceof TypedArray && !isBigIntArray(value); -} -function isNumberType(type2) { - return type2?.prototype instanceof TypedArray && !isBigIntType(type2); -} -function isBigIntArray(value) { - return value instanceof BigInt64Array || value instanceof BigUint64Array; -} -function isBigIntType(type2) { - return type2 === BigInt64Array || type2 === BigUint64Array; -} -var reindex = Symbol("reindex"); -function valueof(data, value, type2) { - const valueType = typeof value; - return valueType === "string" ? isArrowTable(data) ? maybeTypedArrowify(data.getChild(value), type2) : maybeTypedMap(data, field(value), type2) : valueType === "function" ? maybeTypedMap(data, value, type2) : valueType === "number" || value instanceof Date || valueType === "boolean" ? map4(data, constant(value), type2) : typeof value?.transform === "function" ? maybeTypedArrayify(value.transform(data), type2) : maybeTake(maybeTypedArrayify(value, type2), data?.[reindex]); -} -function maybeTake(values2, index2) { - return values2 != null && index2 ? take(values2, index2) : values2; -} -function maybeTypedMap(data, f, type2) { - return map4(data, isNumberType(type2) ? (d, i) => coerceNumber(f(d, i)) : f, type2); -} -function maybeTypedArrayify(data, type2) { - return type2 === void 0 ? arrayify2(data) : isArrowVector(data) ? maybeTypedArrowify(data, type2) : data instanceof type2 ? data : type2.from(data, isNumberType(type2) && !isNumberArray2(data) ? coerceNumber : void 0); -} -function maybeTypedArrowify(vector, type2) { - return vector == null ? vector : (type2 === void 0 || type2 === Array) && isArrowDateType(vector.type) ? coerceDates(vectorToArray(vector)) : maybeTypedArrayify(vectorToArray(vector), type2); -} -function vectorToArray(vector) { - return vector.nullCount ? vector.toJSON() : vector.toArray(); -} -var singleton = [null]; -var field = (name) => (d) => { - const v = d[name]; - return v === void 0 && d.type === "Feature" ? d.properties?.[name] : v; -}; -var indexOf = { transform: range2 }; -var identity6 = { transform: (d) => d }; -var one2 = () => 1; -var yes = () => true; -var string = (x2) => x2 == null ? x2 : `${x2}`; -var number5 = (x2) => x2 == null ? x2 : +x2; -var first = (x2) => x2 ? x2[0] : void 0; -var second2 = (x2) => x2 ? x2[1] : void 0; -var constant = (x2) => () => x2; -function percentile(reduce) { - const p = +`${reduce}`.slice(1) / 100; - return (I, f) => quantile(I, p, f); -} -function coerceNumbers(values2) { - return isNumberArray2(values2) ? values2 : map4(values2, coerceNumber, Float64Array); -} -function coerceNumber(x2) { - return x2 == null ? NaN : Number(x2); -} -function coerceDates(values2) { - return map4(values2, coerceDate); -} -function coerceDate(x2) { - return x2 instanceof Date && !isNaN(x2) ? x2 : typeof x2 === "string" ? parse(x2) : x2 == null || isNaN(x2 = Number(x2)) ? void 0 : new Date(x2); -} -function maybeColorChannel(value, defaultValue) { - if (value === void 0) value = defaultValue; - return value === null ? [void 0, "none"] : isColor(value) ? [void 0, value] : [value, void 0]; -} -function maybeNumberChannel(value, defaultValue) { - if (value === void 0) value = defaultValue; - return value === null || typeof value === "number" ? [void 0, value] : [value, void 0]; -} -function maybeKeyword(input, name, allowed) { - if (input != null) return keyword(input, name, allowed); -} -function keyword(input, name, allowed) { - const i = `${input}`.toLowerCase(); - if (!allowed.includes(i)) throw new Error(`invalid ${name}: ${input}`); - return i; -} -function dataify(data) { - return isArrowTable(data) ? data : arrayify2(data); -} -function arrayify2(values2) { - if (values2 == null || isArray(values2)) return values2; - if (isArrowVector(values2)) return maybeTypedArrowify(values2); - if (isGeoJSON(values2)) { - switch (values2.type) { - case "FeatureCollection": - return values2.features; - case "GeometryCollection": - return values2.geometries; - default: - return [values2]; - } - } - return Array.from(values2); -} -function isGeoJSON(x2) { - switch (x2?.type) { - case "FeatureCollection": - case "GeometryCollection": - case "Feature": - case "LineString": - case "MultiLineString": - case "MultiPoint": - case "MultiPolygon": - case "Point": - case "Polygon": - case "Sphere": - return true; - default: - return false; - } -} -function map4(values2, f, type2 = Array) { - return values2 == null ? values2 : values2 instanceof type2 ? values2.map(f) : type2.from(values2, f); -} -function slice2(values2, type2 = Array) { - return values2 instanceof type2 ? values2.slice() : type2.from(values2); -} -function hasX({ x: x2, x1: x12, x2: x22 }) { - return x2 !== void 0 || x12 !== void 0 || x22 !== void 0; -} -function hasY({ y: y2, y1: y12, y2: y22 }) { - return y2 !== void 0 || y12 !== void 0 || y22 !== void 0; -} -function hasXY(options) { - return hasX(options) || hasY(options) || options.interval !== void 0; -} -function isObject(option) { - return option?.toString === objectToString; -} -function isScaleOptions(option) { - return isObject(option) && (option.type !== void 0 || option.domain !== void 0); -} -function isOptions(option) { - return isObject(option) && typeof option.transform !== "function"; -} -function isDomainSort(sort3) { - return isOptions(sort3) && sort3.value === void 0 && sort3.channel === void 0; -} -function maybeZero(x2, x12, x22, x3 = identity6) { - if (x12 === void 0 && x22 === void 0) { - x12 = 0, x22 = x2 === void 0 ? x3 : x2; - } else if (x12 === void 0) { - x12 = x2 === void 0 ? 0 : x2; - } else if (x22 === void 0) { - x22 = x2 === void 0 ? 0 : x2; - } - return [x12, x22]; -} -function maybeTuple(x2, y2) { - return x2 === void 0 && y2 === void 0 ? [first, second2] : [x2, y2]; -} -function maybeZ({ z, fill, stroke } = {}) { - if (z === void 0) [z] = maybeColorChannel(fill); - if (z === void 0) [z] = maybeColorChannel(stroke); - return z; -} -function lengthof(data) { - return isArray(data) ? data.length : data?.numRows; -} -function range2(data) { - const n = lengthof(data); - const r = new Uint32Array(n); - for (let i = 0; i < n; ++i) r[i] = i; - return r; -} -function take(values2, index2) { - return isArray(values2) ? map4(index2, (i) => values2[i], values2.constructor) : map4(index2, (i) => values2.at(i)); -} -function subarray(I, i, j) { - return I.subarray ? I.subarray(i, j) : I.slice(i, j); -} -function keyof2(value) { - return value !== null && typeof value === "object" ? value.valueOf() : value; -} -function column(source) { - let value; - return [ - { - transform: () => value, - label: labelof(source) - }, - (v) => value = v - ]; -} -function maybeColumn(source) { - return source == null ? [source] : column(source); -} -function labelof(value, defaultValue) { - return typeof value === "string" ? value : value && value.label !== void 0 ? value.label : defaultValue; -} -function mid(x12, x2) { - return { - transform(data) { - const X12 = x12.transform(data); - const X22 = x2.transform(data); - return isTemporal(X12) || isTemporal(X22) ? map4(X12, (_, i) => new Date((+X12[i] + +X22[i]) / 2)) : map4(X12, (_, i) => (+X12[i] + +X22[i]) / 2, Float64Array); - }, - label: x12.label - }; -} -function maybeApplyInterval(V, scale) { - const t = maybeIntervalTransform(scale?.interval, scale?.type); - return t ? map4(V, t) : V; -} -function maybeIntervalTransform(interval2, type2) { - const i = maybeInterval(interval2, type2); - return i && ((v) => defined(v) ? i.floor(v) : v); -} -function maybeInterval(interval2, type2) { - if (interval2 == null) return; - if (typeof interval2 === "number") return numberInterval(interval2); - if (typeof interval2 === "string") return (type2 === "time" ? timeInterval2 : utcInterval)(interval2); - if (typeof interval2.floor !== "function") throw new Error("invalid interval; missing floor method"); - if (typeof interval2.offset !== "function") throw new Error("invalid interval; missing offset method"); - return interval2; -} -function numberInterval(interval2) { - interval2 = +interval2; - if (0 < interval2 && interval2 < 1 && Number.isInteger(1 / interval2)) interval2 = -1 / interval2; - const n = Math.abs(interval2); - return interval2 < 0 ? { - floor: (d) => Math.floor(d * n) / n, - offset: (d, s2 = 1) => (d * n + Math.floor(s2)) / n, - range: (lo, hi) => range(Math.ceil(lo * n), hi * n).map((x2) => x2 / n) - } : { - floor: (d) => Math.floor(d / n) * n, - offset: (d, s2 = 1) => d + n * Math.floor(s2), - range: (lo, hi) => range(Math.ceil(lo / n), hi / n).map((x2) => x2 * n) - }; -} -function maybeRangeInterval(interval2, type2) { - interval2 = maybeInterval(interval2, type2); - if (interval2 && typeof interval2.range !== "function") throw new Error("invalid interval: missing range method"); - return interval2; -} -function maybeNiceInterval(interval2, type2) { - interval2 = maybeRangeInterval(interval2, type2); - if (interval2 && typeof interval2.ceil !== "function") throw new Error("invalid interval: missing ceil method"); - return interval2; -} -function isInterval(t) { - return typeof t?.range === "function"; -} -function maybeValue(value) { - return value === void 0 || isOptions(value) ? value : { value }; -} -function numberChannel(source) { - return source == null ? null : { - transform: (data) => valueof(data, source, Float64Array), - label: labelof(source) - }; -} -function isIterable(value) { - return value && typeof value[Symbol.iterator] === "function"; -} -function isTextual(values2) { - for (const value of values2) { - if (value == null) continue; - return typeof value !== "object" || value instanceof Date; - } -} -function isOrdinal(values2) { - for (const value of values2) { - if (value == null) continue; - const type2 = typeof value; - return type2 === "string" || type2 === "boolean"; - } -} -function isTemporal(values2) { - for (const value of values2) { - if (value == null) continue; - return value instanceof Date; - } -} -function isTemporalString(values2) { - for (const value of values2) { - if (value == null) continue; - return typeof value === "string" && isNaN(value) && parse(value); - } -} -function isNumericString(values2) { - for (const value of values2) { - if (value == null) continue; - if (typeof value !== "string") return false; - if (!value.trim()) continue; - return !isNaN(value); - } -} -function isNumeric(values2) { - for (const value of values2) { - if (value == null) continue; - return typeof value === "number"; - } -} -function isEvery(values2, is) { - let every; - for (const value of values2) { - if (value == null) continue; - if (!is(value)) return false; - every = true; - } - return every; -} -var namedColors = new Set("none,currentcolor,transparent,aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkgrey,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkslategrey,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dimgrey,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,grey,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgray,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightslategrey,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,rebeccapurple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,slategrey,snow,springgreen,steelblue,tan,teal,thistle,tomato,turquoise,violet,wheat,white,whitesmoke,yellow".split(",")); -function isColor(value) { - if (typeof value !== "string") return false; - value = value.toLowerCase().trim(); - return /^#[0-9a-f]{3,8}$/.test(value) || // hex rgb, rgba, rrggbb, rrggbbaa - /^(?:url|var|rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\(.*\)$/.test(value) || // , CSS variable, color, etc. - namedColors.has(value); -} -function isOpacity(value) { - return typeof value === "number" && (0 <= value && value <= 1 || isNaN(value)); -} -function isNoneish(value) { - return value == null || isNone(value); -} -function isNone(value) { - return /^\s*none\s*$/i.test(value); -} -function isRound(value) { - return /^\s*round\s*$/i.test(value); -} -function maybeAnchor(value, name) { - return maybeKeyword(value, name, [ - "middle", - "top-left", - "top", - "top-right", - "right", - "bottom-right", - "bottom", - "bottom-left", - "left" - ]); -} -function maybeFrameAnchor(value = "middle") { - return maybeAnchor(value, "frameAnchor"); -} -function inherit2(options = {}, ...rest) { - let o = options; - for (const defaults9 of rest) { - for (const key in defaults9) { - if (o[key] === void 0) { - const value = defaults9[key]; - if (o === options) o = { ...o, [key]: value }; - else o[key] = value; - } - } - } - return o; -} -function named2(things) { - console.warn("named iterables are deprecated; please use an object instead"); - const names = /* @__PURE__ */ new Set(); - return Object.fromEntries( - Array.from(things, (thing) => { - const { name } = thing; - if (name == null) throw new Error("missing name"); - const key = `${name}`; - if (key === "__proto__") throw new Error(`illegal name: ${key}`); - if (names.has(key)) throw new Error(`duplicate name: ${key}`); - names.add(key); - return [name, thing]; - }) - ); -} -function maybeNamed(things) { - return isIterable(things) ? named2(things) : things; -} -function maybeClip(clip) { - if (clip === true) clip = "frame"; - else if (clip === false) clip = null; - else if (!isGeoJSON(clip) && clip != null) { - clip = keyword(clip, "clip", ["frame", "sphere"]); - if (clip === "sphere") clip = { type: "Sphere" }; - } - return clip; -} -function isArrowTable(value) { - return value && typeof value.getChild === "function" && typeof value.toArray === "function" && value.schema && Array.isArray(value.schema.fields); -} -function isArrowVector(value) { - return value && typeof value.toArray === "function" && value.type; -} -function isArrowDateType(type2) { - return type2 && (type2.typeId === 8 || // date - type2.typeId === 10) && // timestamp - type2.unit === 1; -} - -// node_modules/@observablehq/plot/src/scales/index.js -var position = Symbol("position"); -var color2 = Symbol("color"); -var radius = Symbol("radius"); -var length2 = Symbol("length"); -var opacity = Symbol("opacity"); -var symbol = Symbol("symbol"); -var projection2 = Symbol("projection"); -var registry = /* @__PURE__ */ new Map([ - ["x", position], - ["y", position], - ["fx", position], - ["fy", position], - ["r", radius], - ["color", color2], - ["opacity", opacity], - ["symbol", symbol], - ["length", length2], - ["projection", projection2] -]); -function isPosition(kind) { - return kind === position || kind === projection2; -} -function hasNumericRange(kind) { - return kind === position || kind === radius || kind === length2 || kind === opacity; -} - -// node_modules/@observablehq/plot/src/symbol.js -var sqrt35 = Math.sqrt(3); -var sqrt4_3 = 2 / sqrt35; -var symbolHexagon = { - draw(context, size) { - const rx = Math.sqrt(size / Math.PI), ry = rx * sqrt4_3, hy = ry / 2; - context.moveTo(0, ry); - context.lineTo(rx, hy); - context.lineTo(rx, -hy); - context.lineTo(0, -ry); - context.lineTo(-rx, -hy); - context.lineTo(-rx, hy); - context.closePath(); - } -}; -var symbols = /* @__PURE__ */ new Map([ - ["asterisk", asterisk_default], - ["circle", circle_default2], - ["cross", cross_default], - ["diamond", diamond_default], - ["diamond2", diamond2_default], - ["hexagon", symbolHexagon], - ["plus", plus_default], - ["square", square_default], - ["square2", square2_default], - ["star", star_default], - ["times", times_default], - ["triangle", triangle_default], - ["triangle2", triangle2_default], - ["wye", wye_default] -]); -function isSymbolObject(value) { - return value && typeof value.draw === "function"; -} -function isSymbol(value) { - if (isSymbolObject(value)) return true; - if (typeof value !== "string") return false; - return symbols.has(value.toLowerCase()); -} -function maybeSymbol(symbol2) { - if (symbol2 == null || isSymbolObject(symbol2)) return symbol2; - const value = symbols.get(`${symbol2}`.toLowerCase()); - if (value) return value; - throw new Error(`invalid symbol: ${symbol2}`); -} -function maybeSymbolChannel(symbol2) { - if (symbol2 == null || isSymbolObject(symbol2)) return [void 0, symbol2]; - if (typeof symbol2 === "string") { - const value = symbols.get(`${symbol2}`.toLowerCase()); - if (value) return [void 0, value]; - } - return [symbol2, void 0]; -} - -// node_modules/@observablehq/plot/src/transforms/basic.js -function basic({ filter: f1, sort: s1, reverse: r1, transform: t13, initializer: i1, ...options } = {}, transform2) { - if (t13 === void 0) { - if (f1 != null) t13 = filterTransform(f1); - if (s1 != null && !isDomainSort(s1)) t13 = composeTransform(t13, sortTransform(s1)); - if (r1) t13 = composeTransform(t13, reverseTransform); - } - if (transform2 != null && i1 != null) throw new Error("transforms cannot be applied after initializers"); - return { - ...options, - ...(s1 === null || isDomainSort(s1)) && { sort: s1 }, - transform: composeTransform(t13, transform2) - }; -} -function initializer({ filter: f1, sort: s1, reverse: r1, initializer: i1, ...options } = {}, initializer2) { - if (i1 === void 0) { - if (f1 != null) i1 = filterTransform(f1); - if (s1 != null && !isDomainSort(s1)) i1 = composeInitializer(i1, sortTransform(s1)); - if (r1) i1 = composeInitializer(i1, reverseTransform); - } - return { - ...options, - ...(s1 === null || isDomainSort(s1)) && { sort: s1 }, - initializer: composeInitializer(i1, initializer2) - }; -} -function composeTransform(t13, t22) { - if (t13 == null) return t22 === null ? void 0 : t22; - if (t22 == null) return t13 === null ? void 0 : t13; - return function(data, facets, plotOptions) { - ({ data, facets } = t13.call(this, data, facets, plotOptions)); - return t22.call(this, dataify(data), facets, plotOptions); - }; -} -function composeInitializer(i1, i2) { - if (i1 == null) return i2 === null ? void 0 : i2; - if (i2 == null) return i1 === null ? void 0 : i1; - return function(data, facets, channels, ...args) { - let c1, d1, f1, c22, d2, f2; - ({ data: d1 = data, facets: f1 = facets, channels: c1 } = i1.call(this, data, facets, channels, ...args)); - ({ data: d2 = d1, facets: f2 = f1, channels: c22 } = i2.call(this, d1, f1, { ...channels, ...c1 }, ...args)); - return { data: d2, facets: f2, channels: { ...c1, ...c22 } }; - }; -} -function apply(options, t) { - return (options.initializer != null ? initializer : basic)(options, t); -} -function filterTransform(value) { - return (data, facets) => { - const V = valueof(data, value); - return { data, facets: facets.map((I) => I.filter((i) => V[i])) }; - }; -} -function reverseTransform(data, facets) { - return { data, facets: facets.map((I) => I.slice().reverse()) }; -} -function sort2(order, { sort: sort3, ...options } = {}) { - return { - ...(isOptions(order) && order.channel !== void 0 ? initializer : apply)(options, sortTransform(order)), - sort: isDomainSort(sort3) ? sort3 : null - }; -} -function sortTransform(value) { - return (typeof value === "function" && value.length !== 1 ? sortData : sortValue)(value); -} -function sortData(compare) { - return (data, facets) => { - const compareData = isArray(data) ? (i, j) => compare(data[i], data[j]) : (i, j) => compare(data.get(i), data.get(j)); - return { data, facets: facets.map((I) => I.slice().sort(compareData)) }; - }; -} -function sortValue(value) { - let channel, order; - ({ channel, value, order } = { ...maybeValue(value) }); - const negate = channel?.startsWith("-"); - if (negate) channel = channel.slice(1); - if (order === void 0) order = negate ? descendingDefined : ascendingDefined2; - if (typeof order !== "function") { - switch (`${order}`.toLowerCase()) { - case "ascending": - order = ascendingDefined2; - break; - case "descending": - order = descendingDefined; - break; - default: - throw new Error(`invalid order: ${order}`); - } - } - return (data, facets, channels) => { - let V; - if (channel === void 0) { - V = valueof(data, value); - } else { - if (channels === void 0) throw new Error("channel sort requires an initializer"); - V = channels[channel]; - if (!V) return {}; - V = V.value; - } - const compareValue = (i, j) => order(V[i], V[j]); - return { data, facets: facets.map((I) => I.slice().sort(compareValue)) }; - }; -} - -// node_modules/@observablehq/plot/src/transforms/group.js -function maybeReduce(reduce, value, fallback = invalidReduce) { - if (reduce == null) return fallback(reduce); - if (typeof reduce.reduceIndex === "function") return reduce; - if (typeof reduce.reduce === "function" && isObject(reduce)) return reduceReduce(reduce); - if (typeof reduce === "function") return reduceFunction(reduce); - if (/^p\d{2}$/i.test(reduce)) return reduceAccessor(percentile(reduce)); - switch (`${reduce}`.toLowerCase()) { - case "first": - return reduceFirst; - case "last": - return reduceLast; - case "identity": - return reduceIdentity; - case "count": - return reduceCount; - case "distinct": - return reduceDistinct; - case "sum": - return value == null ? reduceCount : reduceSum; - case "proportion": - return reduceProportion(value, "data"); - case "proportion-facet": - return reduceProportion(value, "facet"); - case "deviation": - return reduceAccessor(deviation); - case "min": - return reduceAccessor(min); - case "min-index": - return reduceAccessor(minIndex); - case "max": - return reduceAccessor(max); - case "max-index": - return reduceAccessor(maxIndex); - case "mean": - return reduceMaybeTemporalAccessor(mean); - case "median": - return reduceMaybeTemporalAccessor(median); - case "variance": - return reduceAccessor(variance); - case "mode": - return reduceAccessor(mode); - } - return fallback(reduce); -} -function invalidReduce(reduce) { - throw new Error(`invalid reduce: ${reduce}`); -} -function reduceReduce(reduce) { - console.warn("deprecated reduce interface; implement reduceIndex instead."); - return { ...reduce, reduceIndex: reduce.reduce.bind(reduce) }; -} -function reduceFunction(f) { - return { - reduceIndex(I, X3, extent3) { - return f(take(X3, I), extent3); - } - }; -} -function reduceAccessor(f) { - return { - reduceIndex(I, X3) { - return f(I, (i) => X3[i]); - } - }; -} -function reduceMaybeTemporalAccessor(f) { - return { - reduceIndex(I, X3) { - const x2 = f(I, (i) => X3[i]); - return isTemporal(X3) ? new Date(x2) : x2; - } - }; -} -var reduceIdentity = { - reduceIndex(I, X3) { - return take(X3, I); - } -}; -var reduceFirst = { - reduceIndex(I, X3) { - return X3[I[0]]; - } -}; -var reduceLast = { - reduceIndex(I, X3) { - return X3[I[I.length - 1]]; - } -}; -var reduceCount = { - label: "Frequency", - reduceIndex(I) { - return I.length; - } -}; -var reduceDistinct = { - label: "Distinct", - reduceIndex(I, X3) { - const s2 = new InternSet(); - for (const i of I) s2.add(X3[i]); - return s2.size; - } -}; -var reduceSum = reduceAccessor(sum); -function reduceProportion(value, scope) { - return value == null ? { scope, label: "Frequency", reduceIndex: (I, V, basis2 = 1) => I.length / basis2 } : { scope, reduceIndex: (I, V, basis2 = 1) => sum(I, (i) => V[i]) / basis2 }; -} - -// node_modules/@observablehq/plot/src/channel.js -function createChannel(data, { scale, type: type2, value, filter: filter2, hint, label = labelof(value) }, name) { - if (hint === void 0 && typeof value?.transform === "function") hint = value.hint; - return inferChannelScale(name, { - scale, - type: type2, - value: valueof(data, value), - label, - filter: filter2, - hint - }); -} -function createChannels(channels, data) { - return Object.fromEntries( - Object.entries(channels).map(([name, channel]) => [name, createChannel(data, channel, name)]) - ); -} -function valueObject(channels, scales) { - const values2 = Object.fromEntries( - Object.entries(channels).map(([name, { scale: scaleName, value }]) => { - const scale = scaleName == null ? null : scales[scaleName]; - return [name, scale == null ? value : map4(value, scale)]; - }) - ); - values2.channels = channels; - return values2; -} -function inferChannelScale(name, channel) { - const { scale, value } = channel; - if (scale === true || scale === "auto") { - switch (name) { - case "fill": - case "stroke": - case "color": - channel.scale = scale !== true && isEvery(value, isColor) ? null : "color"; - channel.defaultScale = "color"; - break; - case "fillOpacity": - case "strokeOpacity": - case "opacity": - channel.scale = scale !== true && isEvery(value, isOpacity) ? null : "opacity"; - channel.defaultScale = "opacity"; - break; - case "symbol": - if (scale !== true && isEvery(value, isSymbol)) { - channel.scale = null; - channel.value = map4(value, maybeSymbol); - } else { - channel.scale = "symbol"; - } - channel.defaultScale = "symbol"; - break; - default: - channel.scale = registry.has(name) ? name : null; - break; - } - } else if (scale === false) { - channel.scale = null; - } else if (scale != null && !registry.has(scale)) { - throw new Error(`unknown scale: ${scale}`); - } - return channel; -} -function channelDomain(data, facets, channels, facetChannels, options) { - const { order: defaultOrder, reverse: defaultReverse, reduce: defaultReduce = true, limit: defaultLimit } = options; - for (const x2 in options) { - if (!registry.has(x2)) continue; - let { value: y2, order = defaultOrder, reverse: reverse2 = defaultReverse, reduce = defaultReduce, limit = defaultLimit } = maybeValue(options[x2]); - const negate = y2?.startsWith("-"); - if (negate) y2 = y2.slice(1); - order = order === void 0 ? negate !== (y2 === "width" || y2 === "height") ? descendingGroup : ascendingGroup : maybeOrder(order); - if (reduce == null || reduce === false) continue; - const X3 = x2 === "fx" || x2 === "fy" ? reindexFacetChannel(facets, facetChannels[x2]) : findScaleChannel(channels, x2); - if (!X3) throw new Error(`missing channel for scale: ${x2}`); - const XV = X3.value; - const [lo = 0, hi = Infinity] = isIterable(limit) ? limit : limit < 0 ? [limit] : [0, limit]; - if (y2 == null) { - X3.domain = () => { - let domain = Array.from(new InternSet(XV)); - if (reverse2) domain = domain.reverse(); - if (lo !== 0 || hi !== Infinity) domain = domain.slice(lo, hi); - return domain; - }; - } else { - const YV = y2 === "data" ? data : y2 === "height" ? difference(channels, "y1", "y2") : y2 === "width" ? difference(channels, "x1", "x2") : values(channels, y2, y2 === "y" ? "y2" : y2 === "x" ? "x2" : void 0); - const reducer2 = maybeReduce(reduce === true ? "max" : reduce, YV); - X3.domain = () => { - let domain = rollups( - range2(XV), - (I) => reducer2.reduceIndex(I, YV), - (i) => XV[i] - ); - if (order) domain.sort(order); - if (reverse2) domain.reverse(); - if (lo !== 0 || hi !== Infinity) domain = domain.slice(lo, hi); - return domain.map(first); - }; - } - } -} -function findScaleChannel(channels, scale) { - for (const name in channels) { - const channel = channels[name]; - if (channel.scale === scale) return channel; - } -} -function reindexFacetChannel(facets, channel) { - const originalFacets = facets.original; - if (originalFacets === facets) return channel; - const V1 = channel.value; - const V2 = channel.value = []; - for (let i = 0; i < originalFacets.length; ++i) { - const vi = V1[originalFacets[i][0]]; - for (const j of facets[i]) V2[j] = vi; - } - return channel; -} -function difference(channels, k1, k2) { - const X12 = values(channels, k1); - const X22 = values(channels, k2); - return map4(X22, (x2, i) => Math.abs(x2 - X12[i]), Float64Array); -} -function values(channels, name, alias) { - let channel = channels[name]; - if (!channel && alias !== void 0) channel = channels[alias]; - if (channel) return channel.value; - throw new Error(`missing channel: ${name}`); -} -function maybeOrder(order) { - if (order == null || typeof order === "function") return order; - switch (`${order}`.toLowerCase()) { - case "ascending": - return ascendingGroup; - case "descending": - return descendingGroup; - } - throw new Error(`invalid order: ${order}`); -} -function ascendingGroup([ak, av], [bk, bv]) { - return ascendingDefined2(av, bv) || ascendingDefined2(ak, bk); -} -function descendingGroup([ak, av], [bk, bv]) { - return descendingDefined(av, bv) || ascendingDefined2(ak, bk); -} -function getSource(channels, key) { - let channel = channels[key]; - if (!channel) return; - while (channel.source) channel = channel.source; - return channel.source === null ? null : channel; -} - -// node_modules/@observablehq/plot/src/scales/schemes.js -var categoricalSchemes = /* @__PURE__ */ new Map([ - ["accent", Accent_default], - ["category10", category10_default], - ["dark2", Dark2_default], - ["observable10", observable10_default], - ["paired", Paired_default], - ["pastel1", Pastel1_default], - ["pastel2", Pastel2_default], - ["set1", Set1_default], - ["set2", Set2_default], - ["set3", Set3_default], - ["tableau10", Tableau10_default] -]); -function isCategoricalScheme(scheme28) { - return scheme28 != null && categoricalSchemes.has(`${scheme28}`.toLowerCase()); -} -var ordinalSchemes = new Map([ - ...categoricalSchemes, - // diverging - ["brbg", scheme112(scheme, BrBG_default)], - ["prgn", scheme112(scheme2, PRGn_default)], - ["piyg", scheme112(scheme3, PiYG_default)], - ["puor", scheme112(scheme4, PuOr_default)], - ["rdbu", scheme112(scheme5, RdBu_default)], - ["rdgy", scheme112(scheme6, RdGy_default)], - ["rdylbu", scheme112(scheme7, RdYlBu_default)], - ["rdylgn", scheme112(scheme8, RdYlGn_default)], - ["spectral", scheme112(scheme9, Spectral_default)], - // reversed diverging (for temperature data) - ["burd", scheme11r(scheme5, RdBu_default)], - ["buylrd", scheme11r(scheme7, RdYlBu_default)], - // sequential (single-hue) - ["blues", scheme92(scheme22, Blues_default)], - ["greens", scheme92(scheme23, Greens_default)], - ["greys", scheme92(scheme24, Greys_default)], - ["oranges", scheme92(scheme27, Oranges_default)], - ["purples", scheme92(scheme25, Purples_default)], - ["reds", scheme92(scheme26, Reds_default)], - // sequential (multi-hue) - ["turbo", schemei(turbo_default)], - ["viridis", schemei(viridis_default)], - ["magma", schemei(magma)], - ["inferno", schemei(inferno)], - ["plasma", schemei(plasma)], - ["cividis", schemei(cividis_default)], - ["cubehelix", schemei(cubehelix_default2)], - ["warm", schemei(warm)], - ["cool", schemei(cool)], - ["bugn", scheme92(scheme10, BuGn_default)], - ["bupu", scheme92(scheme11, BuPu_default)], - ["gnbu", scheme92(scheme12, GnBu_default)], - ["orrd", scheme92(scheme13, OrRd_default)], - ["pubu", scheme92(scheme15, PuBu_default)], - ["pubugn", scheme92(scheme14, PuBuGn_default)], - ["purd", scheme92(scheme16, PuRd_default)], - ["rdpu", scheme92(scheme17, RdPu_default)], - ["ylgn", scheme92(scheme19, YlGn_default)], - ["ylgnbu", scheme92(scheme18, YlGnBu_default)], - ["ylorbr", scheme92(scheme20, YlOrBr_default)], - ["ylorrd", scheme92(scheme21, YlOrRd_default)], - // cyclical - ["rainbow", schemeicyclical(rainbow_default)], - ["sinebow", schemeicyclical(sinebow_default)] -]); -function scheme92(scheme28, interpolate) { - return ({ length: n }) => { - if (n === 1) return [scheme28[3][1]]; - if (n === 2) return [scheme28[3][1], scheme28[3][2]]; - n = Math.max(3, Math.floor(n)); - return n > 9 ? quantize_default(interpolate, n) : scheme28[n]; - }; -} -function scheme112(scheme28, interpolate) { - return ({ length: n }) => { - if (n === 2) return [scheme28[3][0], scheme28[3][2]]; - n = Math.max(3, Math.floor(n)); - return n > 11 ? quantize_default(interpolate, n) : scheme28[n]; - }; -} -function scheme11r(scheme28, interpolate) { - return ({ length: n }) => { - if (n === 2) return [scheme28[3][2], scheme28[3][0]]; - n = Math.max(3, Math.floor(n)); - return n > 11 ? quantize_default((t) => interpolate(1 - t), n) : scheme28[n].slice().reverse(); - }; -} -function schemei(interpolate) { - return ({ length: n }) => quantize_default(interpolate, Math.max(2, Math.floor(n))); -} -function schemeicyclical(interpolate) { - return ({ length: n }) => quantize_default(interpolate, Math.floor(n) + 1).slice(0, -1); -} -function ordinalScheme(scheme28) { - const s2 = `${scheme28}`.toLowerCase(); - if (!ordinalSchemes.has(s2)) throw new Error(`unknown ordinal scheme: ${s2}`); - return ordinalSchemes.get(s2); -} -function ordinalRange(scheme28, length3) { - const s2 = ordinalScheme(scheme28); - const r = typeof s2 === "function" ? s2({ length: length3 }) : s2; - return r.length !== length3 ? r.slice(0, length3) : r; -} -function maybeBooleanRange(domain, scheme28 = "greys") { - const range3 = /* @__PURE__ */ new Set(); - const [f, t] = ordinalRange(scheme28, 2); - for (const value of domain) { - if (value == null) continue; - if (value === true) range3.add(t); - else if (value === false) range3.add(f); - else return; - } - return [...range3]; -} -var quantitativeSchemes = /* @__PURE__ */ new Map([ - // diverging - ["brbg", BrBG_default], - ["prgn", PRGn_default], - ["piyg", PiYG_default], - ["puor", PuOr_default], - ["rdbu", RdBu_default], - ["rdgy", RdGy_default], - ["rdylbu", RdYlBu_default], - ["rdylgn", RdYlGn_default], - ["spectral", Spectral_default], - // reversed diverging (for temperature data) - ["burd", (t) => RdBu_default(1 - t)], - ["buylrd", (t) => RdYlBu_default(1 - t)], - // sequential (single-hue) - ["blues", Blues_default], - ["greens", Greens_default], - ["greys", Greys_default], - ["purples", Purples_default], - ["reds", Reds_default], - ["oranges", Oranges_default], - // sequential (multi-hue) - ["turbo", turbo_default], - ["viridis", viridis_default], - ["magma", magma], - ["inferno", inferno], - ["plasma", plasma], - ["cividis", cividis_default], - ["cubehelix", cubehelix_default2], - ["warm", warm], - ["cool", cool], - ["bugn", BuGn_default], - ["bupu", BuPu_default], - ["gnbu", GnBu_default], - ["orrd", OrRd_default], - ["pubugn", PuBuGn_default], - ["pubu", PuBu_default], - ["purd", PuRd_default], - ["rdpu", RdPu_default], - ["ylgnbu", YlGnBu_default], - ["ylgn", YlGn_default], - ["ylorbr", YlOrBr_default], - ["ylorrd", YlOrRd_default], - // cyclical - ["rainbow", rainbow_default], - ["sinebow", sinebow_default] -]); -function quantitativeScheme(scheme28) { - const s2 = `${scheme28}`.toLowerCase(); - if (!quantitativeSchemes.has(s2)) throw new Error(`unknown quantitative scheme: ${s2}`); - return quantitativeSchemes.get(s2); -} -var divergingSchemes = /* @__PURE__ */ new Set([ - "brbg", - "prgn", - "piyg", - "puor", - "rdbu", - "rdgy", - "rdylbu", - "rdylgn", - "spectral", - "burd", - "buylrd" -]); -function isDivergingScheme(scheme28) { - return scheme28 != null && divergingSchemes.has(`${scheme28}`.toLowerCase()); -} - -// node_modules/@observablehq/plot/src/scales/quantitative.js -var flip = (i) => (t) => i(1 - t); -var unit2 = [0, 1]; -var interpolators = /* @__PURE__ */ new Map([ - // numbers - ["number", number_default], - // color spaces - ["rgb", rgb_default], - ["hsl", hsl_default], - ["hcl", hcl_default], - ["lab", lab2] -]); -function maybeInterpolator(interpolate) { - const i = `${interpolate}`.toLowerCase(); - if (!interpolators.has(i)) throw new Error(`unknown interpolator: ${i}`); - return interpolators.get(i); -} -function createScaleQ(key, scale, channels, { - type: type2, - nice: nice2, - clamp, - zero: zero3, - domain = inferAutoDomain(key, channels), - unknown, - round, - scheme: scheme28, - interval: interval2, - range: range3 = registry.get(key) === radius ? inferRadialRange(channels, domain) : registry.get(key) === length2 ? inferLengthRange(channels, domain) : registry.get(key) === opacity ? unit2 : void 0, - interpolate = registry.get(key) === color2 ? scheme28 == null && range3 !== void 0 ? rgb_default : quantitativeScheme(scheme28 !== void 0 ? scheme28 : type2 === "cyclical" ? "rainbow" : "turbo") : round ? round_default : number_default, - reverse: reverse2 -}) { - domain = maybeRepeat(domain); - interval2 = maybeRangeInterval(interval2, type2); - if (type2 === "cyclical" || type2 === "sequential") type2 = "linear"; - if (typeof interpolate !== "function") interpolate = maybeInterpolator(interpolate); - reverse2 = !!reverse2; - if (range3 !== void 0) { - const n = domain.length; - const m = (range3 = maybeRepeat(range3)).length; - if (n !== m) { - if (interpolate.length === 1) throw new Error("invalid piecewise interpolator"); - interpolate = piecewise(interpolate, range3); - range3 = void 0; - } - } - if (interpolate.length === 1) { - if (reverse2) { - interpolate = flip(interpolate); - reverse2 = false; - } - if (range3 === void 0) { - range3 = Float64Array.from(domain, (_, i) => i / (domain.length - 1)); - if (range3.length === 2) range3 = unit2; - } - scale.interpolate((range3 === unit2 ? constant : interpolatePiecewise)(interpolate)); - } else { - scale.interpolate(interpolate); - } - if (zero3) { - const [min4, max3] = extent(domain); - if (min4 > 0 || max3 < 0) { - domain = slice2(domain); - const o = orderof(domain) || 1; - if (o === Math.sign(min4)) domain[0] = 0; - else domain[domain.length - 1] = 0; - } - } - if (reverse2) domain = reverse(domain); - scale.domain(domain).unknown(unknown); - if (nice2) scale.nice(maybeNice(nice2, type2)), domain = scale.domain(); - if (range3 !== void 0) scale.range(range3); - if (clamp) scale.clamp(clamp); - return { type: type2, domain, range: range3, scale, interpolate, interval: interval2 }; -} -function maybeRepeat(values2) { - values2 = arrayify2(values2); - return values2.length >= 2 ? values2 : [values2[0], values2[0]]; -} -function maybeNice(nice2, type2) { - return nice2 === true ? void 0 : typeof nice2 === "number" ? nice2 : maybeNiceInterval(nice2, type2); -} -function createScaleLinear(key, channels, options) { - return createScaleQ(key, linear2(), channels, options); -} -function createScaleSqrt(key, channels, options) { - return createScalePow(key, channels, { ...options, exponent: 0.5 }); -} -function createScalePow(key, channels, { exponent = 1, ...options }) { - return createScaleQ(key, pow2().exponent(exponent), channels, { ...options, type: "pow" }); -} -function createScaleLog(key, channels, { base = 10, domain = inferLogDomain(channels), ...options }) { - return createScaleQ(key, log2().base(base), channels, { ...options, domain }); -} -function createScaleSymlog(key, channels, { constant: constant2 = 1, ...options }) { - return createScaleQ(key, symlog().constant(constant2), channels, options); -} -function createScaleQuantile(key, channels, { - range: range3, - quantiles = range3 === void 0 ? 5 : (range3 = [...range3]).length, - // deprecated; use n instead - n = quantiles, - scheme: scheme28 = "rdylbu", - domain = inferQuantileDomain(channels), - unknown, - interpolate, - reverse: reverse2 -}) { - if (range3 === void 0) { - range3 = interpolate !== void 0 ? quantize_default(interpolate, n) : registry.get(key) === color2 ? ordinalRange(scheme28, n) : void 0; - } - if (domain.length > 0) { - domain = quantile2(domain, range3 === void 0 ? { length: n } : range3).quantiles(); - } - return createScaleThreshold(key, channels, { domain, range: range3, reverse: reverse2, unknown }); -} -function createScaleQuantize(key, channels, { - range: range3, - n = range3 === void 0 ? 5 : (range3 = [...range3]).length, - scheme: scheme28 = "rdylbu", - domain = inferAutoDomain(key, channels), - unknown, - interpolate, - reverse: reverse2 -}) { - const [min4, max3] = extent(domain); - let thresholds; - if (range3 === void 0) { - thresholds = ticks(min4, max3, n); - if (thresholds[0] <= min4) thresholds.splice(0, 1); - if (thresholds[thresholds.length - 1] >= max3) thresholds.pop(); - n = thresholds.length + 1; - range3 = interpolate !== void 0 ? quantize_default(interpolate, n) : registry.get(key) === color2 ? ordinalRange(scheme28, n) : void 0; - } else { - thresholds = quantize_default(number_default(min4, max3), n + 1).slice(1, -1); - if (min4 instanceof Date) thresholds = thresholds.map((x2) => new Date(x2)); - } - if (orderof(arrayify2(domain)) < 0) thresholds.reverse(); - return createScaleThreshold(key, channels, { domain: thresholds, range: range3, reverse: reverse2, unknown }); -} -function createScaleThreshold(key, channels, { - domain = [0], - // explicit thresholds in ascending order - unknown, - scheme: scheme28 = "rdylbu", - interpolate, - range: range3 = interpolate !== void 0 ? quantize_default(interpolate, domain.length + 1) : registry.get(key) === color2 ? ordinalRange(scheme28, domain.length + 1) : void 0, - reverse: reverse2 -}) { - domain = arrayify2(domain); - const sign3 = orderof(domain); - if (!isNaN(sign3) && !isOrdered(domain, sign3)) throw new Error(`the ${key} scale has a non-monotonic domain`); - if (reverse2) range3 = reverse(range3); - return { - type: "threshold", - scale: threshold(sign3 < 0 ? reverse(domain) : domain, range3 === void 0 ? [] : range3).unknown(unknown), - domain, - range: range3 - }; -} -function isOrdered(domain, sign3) { - for (let i = 1, n = domain.length, d = domain[0]; i < n; ++i) { - const s2 = descending(d, d = domain[i]); - if (s2 !== 0 && s2 !== sign3) return false; - } - return true; -} -function createScaleIdentity(key) { - return { type: "identity", scale: hasNumericRange(registry.get(key)) ? identity4() : (d) => d }; -} -function inferDomain(channels, f = finite) { - return channels.length ? [ - min(channels, ({ value }) => value === void 0 ? value : min(value, f)), - max(channels, ({ value }) => value === void 0 ? value : max(value, f)) - ] : [0, 1]; -} -function inferAutoDomain(key, channels) { - const type2 = registry.get(key); - return (type2 === radius || type2 === opacity || type2 === length2 ? inferZeroDomain : inferDomain)(channels); -} -function inferZeroDomain(channels) { - return [0, channels.length ? max(channels, ({ value }) => value === void 0 ? value : max(value, finite)) : 1]; -} -function inferRadialRange(channels, domain) { - const hint = channels.find(({ radius: radius2 }) => radius2 !== void 0); - if (hint !== void 0) return [0, hint.radius]; - const h25 = quantile(channels, 0.5, ({ value }) => value === void 0 ? NaN : quantile(value, 0.25, positive)); - const range3 = domain.map((d) => 3 * Math.sqrt(d / h25)); - const k2 = 30 / max(range3); - return k2 < 1 ? range3.map((r) => r * k2) : range3; -} -function inferLengthRange(channels, domain) { - const h50 = median(channels, ({ value }) => value === void 0 ? NaN : median(value, Math.abs)); - const range3 = domain.map((d) => 12 * d / h50); - const k2 = 60 / max(range3); - return k2 < 1 ? range3.map((r) => r * k2) : range3; -} -function inferLogDomain(channels) { - for (const { value } of channels) { - if (value !== void 0) { - for (let v of value) { - if (v > 0) return inferDomain(channels, positive); - if (v < 0) return inferDomain(channels, negative); - } - } - } - return [1, 10]; -} -function inferQuantileDomain(channels) { - const domain = []; - for (const { value } of channels) { - if (value === void 0) continue; - for (const v of value) domain.push(v); - } - return domain; -} -function interpolatePiecewise(interpolate) { - return (i, j) => (t) => interpolate(i + t * (j - i)); -} - -// node_modules/@observablehq/plot/src/warnings.js -var warnings = 0; -var lastMessage; -function consumeWarnings() { - const w = warnings; - warnings = 0; - lastMessage = void 0; - return w; -} -function warn(message) { - if (message === lastMessage) return; - lastMessage = message; - console.warn(message); - ++warnings; -} - -// node_modules/@observablehq/plot/src/scales/diverging.js -function createScaleD(key, scale, transform2, channels, { - type: type2, - nice: nice2, - clamp, - domain = inferDomain(channels), - unknown, - pivot = 0, - scheme: scheme28, - range: range3, - symmetric = true, - interpolate = registry.get(key) === color2 ? scheme28 == null && range3 !== void 0 ? rgb_default : quantitativeScheme(scheme28 !== void 0 ? scheme28 : "rdbu") : number_default, - reverse: reverse2 -}) { - pivot = +pivot; - domain = arrayify2(domain); - let [min4, max3] = domain; - if (domain.length > 2) warn(`Warning: the diverging ${key} scale domain contains extra elements.`); - if (descending(min4, max3) < 0) [min4, max3] = [max3, min4], reverse2 = !reverse2; - min4 = Math.min(min4, pivot); - max3 = Math.max(max3, pivot); - if (typeof interpolate !== "function") { - interpolate = maybeInterpolator(interpolate); - } - if (range3 !== void 0) { - interpolate = interpolate.length === 1 ? interpolatePiecewise(interpolate)(...range3) : piecewise(interpolate, range3); - } - if (reverse2) interpolate = flip(interpolate); - if (symmetric) { - const mid2 = transform2.apply(pivot); - const mindelta = mid2 - transform2.apply(min4); - const maxdelta = transform2.apply(max3) - mid2; - if (mindelta < maxdelta) min4 = transform2.invert(mid2 - maxdelta); - else if (mindelta > maxdelta) max3 = transform2.invert(mid2 + mindelta); - } - scale.domain([min4, pivot, max3]).unknown(unknown).interpolator(interpolate); - if (clamp) scale.clamp(clamp); - if (nice2) scale.nice(nice2); - return { type: type2, domain: [min4, max3], pivot, interpolate, scale }; -} -function createScaleDiverging(key, channels, options) { - return createScaleD(key, diverging(), transformIdentity, channels, options); -} -function createScaleDivergingSqrt(key, channels, options) { - return createScaleDivergingPow(key, channels, { ...options, exponent: 0.5 }); -} -function createScaleDivergingPow(key, channels, { exponent = 1, ...options }) { - return createScaleD(key, divergingPow().exponent(exponent = +exponent), transformPow2(exponent), channels, { - ...options, - type: "diverging-pow" - }); -} -function createScaleDivergingLog(key, channels, { base = 10, pivot = 1, domain = inferDomain(channels, pivot < 0 ? negative : positive), ...options }) { - return createScaleD(key, divergingLog().base(base = +base), transformLog2, channels, { - domain, - pivot, - ...options - }); -} -function createScaleDivergingSymlog(key, channels, { constant: constant2 = 1, ...options }) { - return createScaleD( - key, - divergingSymlog().constant(constant2 = +constant2), - transformSymlog2(constant2), - channels, - options - ); -} -var transformIdentity = { - apply(x2) { - return x2; - }, - invert(x2) { - return x2; - } -}; -var transformLog2 = { - apply: Math.log, - invert: Math.exp -}; -var transformSqrt2 = { - apply(x2) { - return Math.sign(x2) * Math.sqrt(Math.abs(x2)); - }, - invert(x2) { - return Math.sign(x2) * (x2 * x2); - } -}; -function transformPow2(exponent) { - return exponent === 0.5 ? transformSqrt2 : { - apply(x2) { - return Math.sign(x2) * Math.pow(Math.abs(x2), exponent); - }, - invert(x2) { - return Math.sign(x2) * Math.pow(Math.abs(x2), 1 / exponent); - } - }; -} -function transformSymlog2(constant2) { - return { - apply(x2) { - return Math.sign(x2) * Math.log1p(Math.abs(x2 / constant2)); - }, - invert(x2) { - return Math.sign(x2) * Math.expm1(Math.abs(x2)) * constant2; - } - }; -} - -// node_modules/@observablehq/plot/src/scales/temporal.js -function createScaleT(key, scale, channels, options) { - return createScaleQ(key, scale, channels, options); -} -function createScaleTime(key, channels, options) { - return createScaleT(key, time(), channels, options); -} -function createScaleUtc(key, channels, options) { - return createScaleT(key, utcTime(), channels, options); -} - -// node_modules/@observablehq/plot/src/scales/ordinal.js -var ordinalImplicit = Symbol("ordinal"); -function createScaleO(key, scale, channels, { type: type2, interval: interval2, domain, range: range3, reverse: reverse2, hint }) { - interval2 = maybeRangeInterval(interval2, type2); - if (domain === void 0) domain = inferDomain2(channels, interval2, key); - if (type2 === "categorical" || type2 === ordinalImplicit) type2 = "ordinal"; - if (reverse2) domain = reverse(domain); - domain = scale.domain(domain).domain(); - if (range3 !== void 0) { - if (typeof range3 === "function") range3 = range3(domain); - scale.range(range3); - } - return { type: type2, domain, range: range3, scale, hint, interval: interval2 }; -} -function createScaleOrdinal(key, channels, { type: type2, interval: interval2, domain, range: range3, scheme: scheme28, unknown, ...options }) { - interval2 = maybeRangeInterval(interval2, type2); - if (domain === void 0) domain = inferDomain2(channels, interval2, key); - let hint; - if (registry.get(key) === symbol) { - hint = inferSymbolHint(channels); - range3 = range3 === void 0 ? inferSymbolRange(hint) : map4(range3, maybeSymbol); - } else if (registry.get(key) === color2) { - if (range3 === void 0 && (type2 === "ordinal" || type2 === ordinalImplicit)) { - range3 = maybeBooleanRange(domain, scheme28); - if (range3 !== void 0) scheme28 = void 0; - } - if (scheme28 === void 0 && range3 === void 0) { - scheme28 = type2 === "ordinal" ? "turbo" : "observable10"; - } - if (scheme28 !== void 0) { - if (range3 !== void 0) { - const interpolate = quantitativeScheme(scheme28); - const t03 = range3[0], d = range3[1] - range3[0]; - range3 = ({ length: n }) => quantize_default((t) => interpolate(t03 + d * t), n); - } else { - range3 = ordinalScheme(scheme28); - } - } - } - if (unknown === implicit) { - throw new Error(`implicit unknown on ${key} scale is not supported`); - } - return createScaleO(key, ordinal().unknown(unknown), channels, { ...options, type: type2, domain, range: range3, hint }); -} -function createScalePoint(key, channels, { align = 0.5, padding = 0.5, ...options }) { - return maybeRound(point().align(align).padding(padding), channels, options, key); -} -function createScaleBand(key, channels, { - align = 0.5, - padding = 0.1, - paddingInner = padding, - paddingOuter = key === "fx" || key === "fy" ? 0 : padding, - ...options -}) { - return maybeRound( - band().align(align).paddingInner(paddingInner).paddingOuter(paddingOuter), - channels, - options, - key - ); -} -function maybeRound(scale, channels, options, key) { - let { round } = options; - if (round !== void 0) scale.round(round = !!round); - scale = createScaleO(key, scale, channels, options); - scale.round = round; - return scale; -} -function inferDomain2(channels, interval2, key) { - const values2 = new InternSet(); - for (const { value, domain } of channels) { - if (domain !== void 0) return domain(); - if (value === void 0) continue; - for (const v of value) values2.add(v); - } - if (interval2 !== void 0) { - const [min4, max3] = extent(values2).map(interval2.floor, interval2); - return interval2.range(min4, interval2.offset(max3)); - } - if (values2.size > 1e4 && registry.get(key) === position) { - throw new Error(`implicit ordinal domain of ${key} scale has more than 10,000 values`); - } - return sort(values2, ascendingDefined2); -} -function inferHint(channels, key) { - let value; - for (const { hint } of channels) { - const candidate = hint?.[key]; - if (candidate === void 0) continue; - if (value === void 0) value = candidate; - else if (value !== candidate) return; - } - return value; -} -function inferSymbolHint(channels) { - return { - fill: inferHint(channels, "fill"), - stroke: inferHint(channels, "stroke") - }; -} -function inferSymbolRange(hint) { - return isNoneish(hint.fill) ? symbolsStroke : symbolsFill; -} - -// node_modules/@observablehq/plot/src/scales.js -function createScales(channelsByScale, { - label: globalLabel, - inset: globalInset = 0, - insetTop: globalInsetTop = globalInset, - insetRight: globalInsetRight = globalInset, - insetBottom: globalInsetBottom = globalInset, - insetLeft: globalInsetLeft = globalInset, - round, - nice: nice2, - clamp, - zero: zero3, - align, - padding, - projection: projection3, - facet: { label: facetLabel = globalLabel } = {}, - ...options -} = {}) { - const scales = {}; - for (const [key, channels] of channelsByScale) { - const scaleOptions = options[key]; - const scale = createScale(key, channels, { - round: registry.get(key) === position ? round : void 0, - // only for position - nice: nice2, - clamp, - zero: zero3, - align, - padding, - projection: projection3, - ...scaleOptions - }); - if (scale) { - let { - label = key === "fx" || key === "fy" ? facetLabel : globalLabel, - percent, - transform: transform2, - inset, - insetTop = inset !== void 0 ? inset : key === "y" ? globalInsetTop : 0, - // not fy - insetRight = inset !== void 0 ? inset : key === "x" ? globalInsetRight : 0, - // not fx - insetBottom = inset !== void 0 ? inset : key === "y" ? globalInsetBottom : 0, - // not fy - insetLeft = inset !== void 0 ? inset : key === "x" ? globalInsetLeft : 0 - // not fx - } = scaleOptions || {}; - if (transform2 == null) transform2 = void 0; - else if (typeof transform2 !== "function") throw new Error("invalid scale transform; not a function"); - scale.percent = !!percent; - scale.label = label === void 0 ? inferScaleLabel(channels, scale) : label; - scale.transform = transform2; - if (key === "x" || key === "fx") { - scale.insetLeft = +insetLeft; - scale.insetRight = +insetRight; - } else if (key === "y" || key === "fy") { - scale.insetTop = +insetTop; - scale.insetBottom = +insetBottom; - } - scales[key] = scale; - } - } - return scales; -} -function createScaleFunctions(descriptors) { - const scales = {}; - const scaleFunctions = { scales }; - for (const [key, descriptor] of Object.entries(descriptors)) { - const { scale, type: type2, interval: interval2, label } = descriptor; - scales[key] = exposeScale(descriptor); - scaleFunctions[key] = scale; - scale.type = type2; - if (interval2 != null) scale.interval = interval2; - if (label != null) scale.label = label; - } - return scaleFunctions; -} -function autoScaleRange(scales, dimensions) { - const { x: x2, y: y2, fx, fy } = scales; - const superdimensions = fx || fy ? outerDimensions(dimensions) : dimensions; - if (fx) autoScaleRangeX(fx, superdimensions); - if (fy) autoScaleRangeY(fy, superdimensions); - const subdimensions = fx || fy ? innerDimensions(scales, dimensions) : dimensions; - if (x2) autoScaleRangeX(x2, subdimensions); - if (y2) autoScaleRangeY(y2, subdimensions); -} -function inferScaleLabel(channels = [], scale) { - let label; - for (const { label: l } of channels) { - if (l === void 0) continue; - if (label === void 0) label = l; - else if (label !== l) return; - } - if (label === void 0) return; - if (!isOrdinalScale(scale) && scale.percent) label = `${label} (%)`; - return { inferred: true, toString: () => label }; -} -function inferScaleOrder(scale) { - return Math.sign(orderof(scale.domain())) * Math.sign(orderof(scale.range())); -} -function outerDimensions(dimensions) { - const { - marginTop, - marginRight, - marginBottom, - marginLeft, - width, - height, - facet: { - marginTop: facetMarginTop, - marginRight: facetMarginRight, - marginBottom: facetMarginBottom, - marginLeft: facetMarginLeft - } - } = dimensions; - return { - marginTop: Math.max(marginTop, facetMarginTop), - marginRight: Math.max(marginRight, facetMarginRight), - marginBottom: Math.max(marginBottom, facetMarginBottom), - marginLeft: Math.max(marginLeft, facetMarginLeft), - width, - height - }; -} -function innerDimensions({ fx, fy }, dimensions) { - const { marginTop, marginRight, marginBottom, marginLeft, width, height } = outerDimensions(dimensions); - return { - marginTop, - marginRight, - marginBottom, - marginLeft, - width: fx ? fx.scale.bandwidth() + marginLeft + marginRight : width, - height: fy ? fy.scale.bandwidth() + marginTop + marginBottom : height, - facet: { width, height } - }; -} -function autoScaleRangeX(scale, dimensions) { - if (scale.range === void 0) { - const { insetLeft, insetRight } = scale; - const { width, marginLeft = 0, marginRight = 0 } = dimensions; - const left2 = marginLeft + insetLeft; - const right2 = width - marginRight - insetRight; - scale.range = [left2, Math.max(left2, right2)]; - if (!isOrdinalScale(scale)) scale.range = piecewiseRange(scale); - scale.scale.range(scale.range); - } - autoScaleRound(scale); -} -function autoScaleRangeY(scale, dimensions) { - if (scale.range === void 0) { - const { insetTop, insetBottom } = scale; - const { height, marginTop = 0, marginBottom = 0 } = dimensions; - const top2 = marginTop + insetTop; - const bottom2 = height - marginBottom - insetBottom; - scale.range = [Math.max(top2, bottom2), top2]; - if (!isOrdinalScale(scale)) scale.range = piecewiseRange(scale); - else scale.range.reverse(); - scale.scale.range(scale.range); - } - autoScaleRound(scale); -} -function autoScaleRound(scale) { - if (scale.round === void 0 && isBandScale(scale) && roundError(scale) <= 30) { - scale.scale.round(true); - } -} -function roundError({ scale }) { - const n = scale.domain().length; - const [start2, stop] = scale.range(); - const paddingInner = scale.paddingInner ? scale.paddingInner() : 1; - const paddingOuter = scale.paddingOuter ? scale.paddingOuter() : scale.padding(); - const m = n - paddingInner; - const step = Math.abs(stop - start2) / Math.max(1, m + paddingOuter * 2); - return (step - Math.floor(step)) * m; -} -function piecewiseRange(scale) { - const length3 = scale.scale.domain().length + isThresholdScale(scale); - if (!(length3 > 2)) return scale.range; - const [start2, end] = scale.range; - return Array.from({ length: length3 }, (_, i) => start2 + i / (length3 - 1) * (end - start2)); -} -function createScale(key, channels = [], options = {}) { - const type2 = inferScaleType(key, channels, options); - if (options.type === void 0 && options.domain === void 0 && options.range === void 0 && options.interval == null && key !== "fx" && key !== "fy" && isOrdinalScale({ type: type2 })) { - const values2 = channels.map(({ value }) => value).filter((value) => value !== void 0); - if (values2.some(isTemporal)) - warn( - `Warning: some data associated with the ${key} scale are dates. Dates are typically associated with a "utc" or "time" scale rather than a "${formatScaleType( - type2 - )}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can specify the interval of the ${key} scale (e.g., d3.utcDay), or you can suppress this warning by setting the type of the ${key} scale to "${formatScaleType( - type2 - )}".` - ); - else if (values2.some(isTemporalString)) - warn( - `Warning: some data associated with the ${key} scale are strings that appear to be dates (e.g., YYYY-MM-DD). If these strings represent dates, you should parse them to Date objects. Dates are typically associated with a "utc" or "time" scale rather than a "${formatScaleType( - type2 - )}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can suppress this warning by setting the type of the ${key} scale to "${formatScaleType( - type2 - )}".` - ); - else if (values2.some(isNumericString)) - warn( - `Warning: some data associated with the ${key} scale are strings that appear to be numbers. If these strings represent numbers, you should parse or coerce them to numbers. Numbers are typically associated with a "linear" scale rather than a "${formatScaleType( - type2 - )}" scale. If you want to treat this data as ordinal, you can specify the interval of the ${key} scale (e.g., 1 for integers), or you can suppress this warning by setting the type of the ${key} scale to "${formatScaleType( - type2 - )}".` - ); - } - options.type = type2; - switch (type2) { - case "diverging": - case "diverging-sqrt": - case "diverging-pow": - case "diverging-log": - case "diverging-symlog": - case "cyclical": - case "sequential": - case "linear": - case "sqrt": - case "threshold": - case "quantile": - case "pow": - case "log": - case "symlog": - options = coerceType(channels, options, coerceNumbers); - break; - case "identity": - switch (registry.get(key)) { - case position: - options = coerceType(channels, options, coerceNumbers); - break; - case symbol: - options = coerceType(channels, options, coerceSymbols); - break; - } - break; - case "utc": - case "time": - options = coerceType(channels, options, coerceDates); - break; - } - switch (type2) { - case "diverging": - return createScaleDiverging(key, channels, options); - case "diverging-sqrt": - return createScaleDivergingSqrt(key, channels, options); - case "diverging-pow": - return createScaleDivergingPow(key, channels, options); - case "diverging-log": - return createScaleDivergingLog(key, channels, options); - case "diverging-symlog": - return createScaleDivergingSymlog(key, channels, options); - case "categorical": - case "ordinal": - case ordinalImplicit: - return createScaleOrdinal(key, channels, options); - case "cyclical": - case "sequential": - case "linear": - return createScaleLinear(key, channels, options); - case "sqrt": - return createScaleSqrt(key, channels, options); - case "threshold": - return createScaleThreshold(key, channels, options); - case "quantile": - return createScaleQuantile(key, channels, options); - case "quantize": - return createScaleQuantize(key, channels, options); - case "pow": - return createScalePow(key, channels, options); - case "log": - return createScaleLog(key, channels, options); - case "symlog": - return createScaleSymlog(key, channels, options); - case "utc": - return createScaleUtc(key, channels, options); - case "time": - return createScaleTime(key, channels, options); - case "point": - return createScalePoint(key, channels, options); - case "band": - return createScaleBand(key, channels, options); - case "identity": - return createScaleIdentity(key); - case void 0: - return; - default: - throw new Error(`unknown scale type: ${type2}`); - } -} -function formatScaleType(type2) { - return typeof type2 === "symbol" ? type2.description : type2; -} -function maybeScaleType(type2) { - return typeof type2 === "string" ? `${type2}`.toLowerCase() : type2; -} -var typeProjection = { toString: () => "projection" }; -function inferScaleType(key, channels, { type: type2, domain, range: range3, scheme: scheme28, pivot, projection: projection3 }) { - type2 = maybeScaleType(type2); - if (key === "fx" || key === "fy") return "band"; - if ((key === "x" || key === "y") && projection3 != null) type2 = typeProjection; - for (const channel of channels) { - const t = maybeScaleType(channel.type); - if (t === void 0) continue; - else if (type2 === void 0) type2 = t; - else if (type2 !== t) throw new Error(`scale incompatible with channel: ${type2} !== ${t}`); - } - if (type2 === typeProjection) return; - if (type2 !== void 0) return type2; - if (domain === void 0 && !channels.some(({ value }) => value !== void 0)) return; - const kind = registry.get(key); - if (kind === radius) return "sqrt"; - if (kind === opacity || kind === length2) return "linear"; - if (kind === symbol) return "ordinal"; - const n = (domain ?? range3)?.length; - if (n < 2 || n > 2) return asOrdinalType(kind); - if (domain !== void 0) { - if (isOrdinal(domain)) return asOrdinalType(kind); - if (isTemporal(domain)) return "utc"; - } else { - const values2 = channels.map(({ value }) => value).filter((value) => value !== void 0); - if (values2.some(isOrdinal)) return asOrdinalType(kind); - if (values2.some(isTemporal)) return "utc"; - } - if (kind === color2) { - if (pivot != null || isDivergingScheme(scheme28)) return "diverging"; - if (isCategoricalScheme(scheme28)) return "categorical"; - } - return "linear"; -} -function asOrdinalType(kind) { - switch (kind) { - case position: - return "point"; - case color2: - return ordinalImplicit; - default: - return "ordinal"; - } -} -function isOrdinalScale({ type: type2 }) { - return type2 === "ordinal" || type2 === "point" || type2 === "band" || type2 === ordinalImplicit; -} -function isThresholdScale({ type: type2 }) { - return type2 === "threshold"; -} -function isBandScale({ type: type2 }) { - return type2 === "point" || type2 === "band"; -} -function isCollapsed(scale) { - if (scale === void 0) return true; - const domain = scale.domain(); - const value = scale(domain[0]); - for (let i = 1, n = domain.length; i < n; ++i) { - if (scale(domain[i]) - value) { - return false; - } - } - return true; -} -function coerceType(channels, { domain, ...options }, coerceValues) { - for (const c4 of channels) { - if (c4.value !== void 0) { - if (domain === void 0) domain = c4.value?.domain; - c4.value = coerceValues(c4.value); - } - } - return { - domain: domain === void 0 ? domain : coerceValues(domain), - ...options - }; -} -function coerceSymbols(values2) { - return map4(values2, maybeSymbol); -} -function exposeScales(scales) { - return (key) => { - if (!registry.has(key = `${key}`)) throw new Error(`unknown scale: ${key}`); - return scales[key]; - }; -} -function exposeScale({ scale, type: type2, domain, range: range3, interpolate, interval: interval2, transform: transform2, percent, pivot }) { - if (type2 === "identity") return { type: "identity", apply: (d) => d, invert: (d) => d }; - const unknown = scale.unknown ? scale.unknown() : void 0; - return { - type: type2, - domain: slice2(domain), - // defensive copy - ...range3 !== void 0 && { range: slice2(range3) }, - // defensive copy - ...transform2 !== void 0 && { transform: transform2 }, - ...percent && { percent }, - // only exposed if truthy - ...unknown !== void 0 && { unknown }, - ...interval2 !== void 0 && { interval: interval2 }, - // quantitative - ...interpolate !== void 0 && { interpolate }, - ...scale.clamp && { clamp: scale.clamp() }, - // diverging (always asymmetric; we never want to apply the symmetric transform twice) - ...pivot !== void 0 && { pivot, symmetric: false }, - // log, diverging-log - ...scale.base && { base: scale.base() }, - // pow, diverging-pow - ...scale.exponent && { exponent: scale.exponent() }, - // symlog, diverging-symlog - ...scale.constant && { constant: scale.constant() }, - // band, point - ...scale.align && { align: scale.align(), round: scale.round() }, - ...scale.padding && (scale.paddingInner ? { paddingInner: scale.paddingInner(), paddingOuter: scale.paddingOuter() } : { padding: scale.padding() }), - ...scale.bandwidth && { bandwidth: scale.bandwidth(), step: scale.step() }, - // utilities - apply: (t) => scale(t), - ...scale.invert && { invert: (t) => scale.invert(t) } - }; -} - -// node_modules/@observablehq/plot/src/facet.js -function createFacets(channelsByScale, options) { - const { fx, fy } = createScales(channelsByScale, options); - const fxDomain = fx?.scale.domain(); - const fyDomain = fy?.scale.domain(); - return fxDomain && fyDomain ? cross(fxDomain, fyDomain).map(([x2, y2], i) => ({ x: x2, y: y2, i })) : fxDomain ? fxDomain.map((x2, i) => ({ x: x2, i })) : fyDomain ? fyDomain.map((y2, i) => ({ y: y2, i })) : void 0; -} -function recreateFacets(facets, { x: X3, y: Y3 }) { - X3 &&= facetIndex(X3); - Y3 &&= facetIndex(Y3); - return facets.filter( - X3 && Y3 ? (f) => X3.has(f.x) && Y3.has(f.y) : X3 ? (f) => X3.has(f.x) : (f) => Y3.has(f.y) - ).sort( - X3 && Y3 ? (a2, b) => X3.get(a2.x) - X3.get(b.x) || Y3.get(a2.y) - Y3.get(b.y) : X3 ? (a2, b) => X3.get(a2.x) - X3.get(b.x) : (a2, b) => Y3.get(a2.y) - Y3.get(b.y) - ); -} -function facetGroups(data, { fx, fy }) { - const I = range2(data); - const FX = fx?.value; - const FY = fy?.value; - return fx && fy ? rollup( - I, - (G) => (G.fx = FX[G[0]], G.fy = FY[G[0]], G), - (i) => FX[i], - (i) => FY[i] - ) : fx ? rollup( - I, - (G) => (G.fx = FX[G[0]], G), - (i) => FX[i] - ) : rollup( - I, - (G) => (G.fy = FY[G[0]], G), - (i) => FY[i] - ); -} -function facetTranslator(fx, fy, { marginTop, marginLeft }) { - const x2 = fx ? ({ x: x3 }) => fx(x3) - marginLeft : () => 0; - const y2 = fy ? ({ y: y3 }) => fy(y3) - marginTop : () => 0; - return function(d) { - if (this.tagName === "svg") { - this.setAttribute("x", x2(d)); - this.setAttribute("y", y2(d)); - } else { - this.setAttribute("transform", `translate(${x2(d)},${y2(d)})`); - } - }; -} -function facetExclude(index2) { - const ex = []; - const e = new Uint32Array(sum(index2, (d) => d.length)); - for (const i of index2) { - let n = 0; - for (const j of index2) { - if (i === j) continue; - e.set(j, n); - n += j.length; - } - ex.push(e.slice(0, n)); - } - return ex; -} -var facetAnchors = /* @__PURE__ */ new Map([ - ["top", facetAnchorTop], - ["right", facetAnchorRight], - ["bottom", facetAnchorBottom], - ["left", facetAnchorLeft], - ["top-left", and(facetAnchorTop, facetAnchorLeft)], - ["top-right", and(facetAnchorTop, facetAnchorRight)], - ["bottom-left", and(facetAnchorBottom, facetAnchorLeft)], - ["bottom-right", and(facetAnchorBottom, facetAnchorRight)], - ["top-empty", facetAnchorTopEmpty], - ["right-empty", facetAnchorRightEmpty], - ["bottom-empty", facetAnchorBottomEmpty], - ["left-empty", facetAnchorLeftEmpty], - ["empty", facetAnchorEmpty] -]); -function maybeFacetAnchor(facetAnchor) { - if (facetAnchor == null) return null; - const anchor = facetAnchors.get(`${facetAnchor}`.toLowerCase()); - if (anchor) return anchor; - throw new Error(`invalid facet anchor: ${facetAnchor}`); -} -var indexCache = /* @__PURE__ */ new WeakMap(); -function facetIndex(V) { - let I = indexCache.get(V); - if (!I) indexCache.set(V, I = new InternMap(map4(V, (v, i) => [v, i]))); - return I; -} -function facetIndexOf(V, v) { - return facetIndex(V).get(v); -} -function facetFind(facets, x2, y2) { - x2 = keyof2(x2); - y2 = keyof2(y2); - return facets.find((f) => Object.is(keyof2(f.x), x2) && Object.is(keyof2(f.y), y2)); -} -function facetEmpty(facets, x2, y2) { - return facetFind(facets, x2, y2)?.empty; -} -function facetAnchorTop(facets, { y: Y3 }, { y: y2 }) { - return Y3 ? facetIndexOf(Y3, y2) === 0 : true; -} -function facetAnchorBottom(facets, { y: Y3 }, { y: y2 }) { - return Y3 ? facetIndexOf(Y3, y2) === Y3.length - 1 : true; -} -function facetAnchorLeft(facets, { x: X3 }, { x: x2 }) { - return X3 ? facetIndexOf(X3, x2) === 0 : true; -} -function facetAnchorRight(facets, { x: X3 }, { x: x2 }) { - return X3 ? facetIndexOf(X3, x2) === X3.length - 1 : true; -} -function facetAnchorTopEmpty(facets, { y: Y3 }, { x: x2, y: y2, empty: empty3 }) { - if (empty3) return false; - if (!Y3) return; - const i = facetIndexOf(Y3, y2); - if (i > 0) return facetEmpty(facets, x2, Y3[i - 1]); -} -function facetAnchorBottomEmpty(facets, { y: Y3 }, { x: x2, y: y2, empty: empty3 }) { - if (empty3) return false; - if (!Y3) return; - const i = facetIndexOf(Y3, y2); - if (i < Y3.length - 1) return facetEmpty(facets, x2, Y3[i + 1]); -} -function facetAnchorLeftEmpty(facets, { x: X3 }, { x: x2, y: y2, empty: empty3 }) { - if (empty3) return false; - if (!X3) return; - const i = facetIndexOf(X3, x2); - if (i > 0) return facetEmpty(facets, X3[i - 1], y2); -} -function facetAnchorRightEmpty(facets, { x: X3 }, { x: x2, y: y2, empty: empty3 }) { - if (empty3) return false; - if (!X3) return; - const i = facetIndexOf(X3, x2); - if (i < X3.length - 1) return facetEmpty(facets, X3[i + 1], y2); -} -function facetAnchorEmpty(facets, channels, { empty: empty3 }) { - return empty3; -} -function and(a2, b) { - return function() { - return a2.apply(null, arguments) && b.apply(null, arguments); - }; -} -function facetFilter(facets, { channels: { fx, fy }, groups: groups2 }) { - return fx && fy ? facets.map(({ x: x2, y: y2 }) => groups2.get(x2)?.get(y2) ?? []) : fx ? facets.map(({ x: x2 }) => groups2.get(x2) ?? []) : facets.map(({ y: y2 }) => groups2.get(y2) ?? []); -} - -// node_modules/@observablehq/plot/src/projection.js -var pi4 = Math.PI; -var tau4 = 2 * pi4; -var defaultAspectRatio = 0.618; -function createProjection({ - projection: projection3, - inset: globalInset = 0, - insetTop = globalInset, - insetRight = globalInset, - insetBottom = globalInset, - insetLeft = globalInset -} = {}, dimensions) { - if (projection3 == null) return; - if (typeof projection3.stream === "function") return projection3; - let options; - let domain; - let clip = "frame"; - if (isObject(projection3)) { - let inset; - ({ - type: projection3, - domain, - inset, - insetTop = inset !== void 0 ? inset : insetTop, - insetRight = inset !== void 0 ? inset : insetRight, - insetBottom = inset !== void 0 ? inset : insetBottom, - insetLeft = inset !== void 0 ? inset : insetLeft, - clip = clip, - ...options - } = projection3); - if (projection3 == null) return; - } - if (typeof projection3 !== "function") ({ type: projection3 } = namedProjection(projection3)); - const { width, height, marginLeft, marginRight, marginTop, marginBottom } = dimensions; - const dx = width - marginLeft - marginRight - insetLeft - insetRight; - const dy = height - marginTop - marginBottom - insetTop - insetBottom; - projection3 = projection3?.({ width: dx, height: dy, clip, ...options }); - if (projection3 == null) return; - clip = maybePostClip(clip, marginLeft, marginTop, width - marginRight, height - marginBottom); - let tx = marginLeft + insetLeft; - let ty = marginTop + insetTop; - let transform2; - if (domain != null) { - const [[x05, y05], [x12, y12]] = path_default(projection3).bounds(domain); - const k2 = Math.min(dx / (x12 - x05), dy / (y12 - y05)); - if (k2 > 0) { - tx -= (k2 * (x05 + x12) - dx) / 2; - ty -= (k2 * (y05 + y12) - dy) / 2; - transform2 = transform_default({ - point(x2, y2) { - this.stream.point(x2 * k2 + tx, y2 * k2 + ty); - } - }); - } else { - warn(`Warning: the projection could not be fit to the specified domain; using the default scale.`); - } - } - transform2 ??= tx === 0 && ty === 0 ? identity7() : transform_default({ - point(x2, y2) { - this.stream.point(x2 + tx, y2 + ty); - } - }); - return { stream: (s2) => projection3.stream(transform2.stream(clip(s2))) }; -} -function namedProjection(projection3) { - switch (`${projection3}`.toLowerCase()) { - case "albers-usa": - return scaleProjection(albersUsa_default, 0.7463, 0.4673); - case "albers": - return conicProjection2(albers_default, 0.7463, 0.4673); - case "azimuthal-equal-area": - return scaleProjection(azimuthalEqualArea_default, 4, 4); - case "azimuthal-equidistant": - return scaleProjection(azimuthalEquidistant_default, tau4, tau4); - case "conic-conformal": - return conicProjection2(conicConformal_default, tau4, tau4); - case "conic-equal-area": - return conicProjection2(conicEqualArea_default, 6.1702, 2.9781); - case "conic-equidistant": - return conicProjection2(conicEquidistant_default, 7.312, 3.6282); - case "equal-earth": - return scaleProjection(equalEarth_default, 5.4133, 2.6347); - case "equirectangular": - return scaleProjection(equirectangular_default, tau4, pi4); - case "gnomonic": - return scaleProjection(gnomonic_default, 3.4641, 3.4641); - case "identity": - return { type: identity7 }; - case "reflect-y": - return { type: reflectY }; - case "mercator": - return scaleProjection(mercator_default, tau4, tau4); - case "orthographic": - return scaleProjection(orthographic_default, 2, 2); - case "stereographic": - return scaleProjection(stereographic_default, 2, 2); - case "transverse-mercator": - return scaleProjection(transverseMercator_default, tau4, tau4); - default: - throw new Error(`unknown projection type: ${projection3}`); - } -} -function maybePostClip(clip, x12, y12, x2, y2) { - if (clip === false || clip == null || typeof clip === "number") return (s2) => s2; - if (clip === true) clip = "frame"; - switch (`${clip}`.toLowerCase()) { - case "frame": - return clipRectangle(x12, y12, x2, y2); - default: - throw new Error(`unknown projection clip type: ${clip}`); - } -} -function scaleProjection(createProjection2, kx2, ky2) { - return { - type: ({ width, height, rotate, precision = 0.15, clip }) => { - const projection3 = createProjection2(); - if (precision != null) projection3.precision?.(precision); - if (rotate != null) projection3.rotate?.(rotate); - if (typeof clip === "number") projection3.clipAngle?.(clip); - if (width != null) { - projection3.scale(Math.min(width / kx2, height / ky2)); - projection3.translate([width / 2, height / 2]); - } - return projection3; - }, - aspectRatio: ky2 / kx2 - }; -} -function conicProjection2(createProjection2, kx2, ky2) { - const { type: type2, aspectRatio } = scaleProjection(createProjection2, kx2, ky2); - return { - type: (options) => { - const { parallels, domain, width, height } = options; - const projection3 = type2(options); - if (parallels != null) { - projection3.parallels(parallels); - if (domain === void 0 && width != null) { - projection3.fitSize([width, height], { type: "Sphere" }); - } - } - return projection3; - }, - aspectRatio - }; -} -var identity7 = constant({ stream: (stream) => stream }); -var reflectY = constant( - transform_default({ - point(x2, y2) { - this.stream.point(x2, -y2); - } - }) -); -function project(cx, cy, values2, projection3) { - const x2 = values2[cx]; - const y2 = values2[cy]; - const n = x2.length; - const X3 = values2[cx] = new Float64Array(n).fill(NaN); - const Y3 = values2[cy] = new Float64Array(n).fill(NaN); - let i; - const stream = projection3.stream({ - point(x3, y3) { - X3[i] = x3; - Y3[i] = y3; - } - }); - for (i = 0; i < n; ++i) { - stream.point(x2[i], y2[i]); - } -} -function hasProjection({ projection: projection3 } = {}) { - if (projection3 == null) return false; - if (typeof projection3.stream === "function") return true; - if (isObject(projection3)) projection3 = projection3.type; - return projection3 != null; -} -function projectionAspectRatio(projection3) { - if (typeof projection3?.stream === "function") return defaultAspectRatio; - if (isObject(projection3)) { - let domain, options; - ({ domain, type: projection3, ...options } = projection3); - if (domain != null && projection3 != null) { - const type2 = typeof projection3 === "string" ? namedProjection(projection3).type : projection3; - const [[x05, y05], [x12, y12]] = path_default(type2({ ...options, width: 100, height: 100 })).bounds(domain); - const r = (y12 - y05) / (x12 - x05); - return r && isFinite(r) ? r < 0.2 ? 0.2 : r > 5 ? 5 : r : defaultAspectRatio; - } - } - if (projection3 == null) return; - if (typeof projection3 !== "function") { - const { aspectRatio } = namedProjection(projection3); - if (aspectRatio) return aspectRatio; - } - return defaultAspectRatio; -} -function getGeometryChannels(channel) { - const X3 = []; - const Y3 = []; - const x2 = { scale: "x", value: X3 }; - const y2 = { scale: "y", value: Y3 }; - const sink = { - point(x3, y3) { - X3.push(x3); - Y3.push(y3); - }, - lineStart() { - }, - lineEnd() { - }, - polygonStart() { - }, - polygonEnd() { - }, - sphere() { - } - }; - for (const object of channel.value) stream_default(object, sink); - return [x2, y2]; -} -function xyProjection({ x: X3, y: Y3 }) { - if (X3 || Y3) { - X3 ??= (x2) => x2; - Y3 ??= (y2) => y2; - return transform_default({ - point(x2, y2) { - this.stream.point(X3(x2), Y3(y2)); - } - }); - } -} - -// node_modules/@observablehq/plot/src/context.js -function createContext(options = {}) { - const { document: document2 = typeof window !== "undefined" ? window.document : void 0, clip } = options; - return { document: document2, clip: maybeClip(clip) }; -} -function create2(name, { document: document2 }) { - return select_default2(creator_default(name).call(document2.documentElement)); -} - -// node_modules/@observablehq/plot/src/memoize.js -var unset = Symbol("unset"); -function memoize1(compute) { - return (compute.length === 1 ? memoize1Arg : memoize1Args)(compute); -} -function memoize1Arg(compute) { - let cacheValue; - let cacheKey = unset; - return (key) => { - if (!Object.is(cacheKey, key)) { - cacheKey = key; - cacheValue = compute(key); - } - return cacheValue; - }; -} -function memoize1Args(compute) { - let cacheValue, cacheKeys; - return (...keys) => { - if (cacheKeys?.length !== keys.length || cacheKeys.some((k2, i) => !Object.is(k2, keys[i]))) { - cacheKeys = keys; - cacheValue = compute(...keys); - } - return cacheValue; - }; -} - -// node_modules/@observablehq/plot/src/format.js -var numberFormat = memoize1((locale3) => { - return new Intl.NumberFormat(locale3); -}); -var monthFormat = memoize1((locale3, month) => { - return new Intl.DateTimeFormat(locale3, { timeZone: "UTC", ...month && { month } }); -}); -var weekdayFormat = memoize1((locale3, weekday) => { - return new Intl.DateTimeFormat(locale3, { timeZone: "UTC", ...weekday && { weekday } }); -}); -function formatNumber(locale3 = "en-US") { - const format3 = numberFormat(locale3); - return (i) => i != null && !isNaN(i) ? format3.format(i) : void 0; -} -function formatIsoDate(date2) { - return format2(date2, "Invalid Date"); -} -function formatAuto(locale3 = "en-US") { - const number6 = formatNumber(locale3); - return (v) => (v instanceof Date ? formatIsoDate : typeof v === "number" ? number6 : string)(v); -} -var formatDefault = formatAuto(); - -// node_modules/@observablehq/plot/src/style.js -var offset = (typeof window !== "undefined" ? window.devicePixelRatio > 1 : typeof it === "undefined") ? 0 : 0.5; -var nextClipId = 0; -function getClipId() { - return `plot-clip-${++nextClipId}`; -} -function styles(mark, { - title, - href, - ariaLabel: variaLabel, - ariaDescription, - ariaHidden, - target, - fill, - fillOpacity, - stroke, - strokeWidth, - strokeOpacity, - strokeLinejoin, - strokeLinecap, - strokeMiterlimit, - strokeDasharray, - strokeDashoffset, - opacity: opacity2, - mixBlendMode, - imageFilter, - paintOrder, - pointerEvents, - shapeRendering, - channels -}, { - ariaLabel: cariaLabel, - fill: defaultFill = "currentColor", - fillOpacity: defaultFillOpacity, - stroke: defaultStroke = "none", - strokeOpacity: defaultStrokeOpacity, - strokeWidth: defaultStrokeWidth, - strokeLinecap: defaultStrokeLinecap, - strokeLinejoin: defaultStrokeLinejoin, - strokeMiterlimit: defaultStrokeMiterlimit, - paintOrder: defaultPaintOrder -}) { - if (defaultFill === null) { - fill = null; - fillOpacity = null; - } - if (defaultStroke === null) { - stroke = null; - strokeOpacity = null; - } - if (isNoneish(defaultFill)) { - if (!isNoneish(defaultStroke) && (!isNoneish(fill) || channels?.fill)) defaultStroke = "none"; - } else { - if (isNoneish(defaultStroke) && (!isNoneish(stroke) || channels?.stroke)) defaultFill = "none"; - } - const [vfill, cfill] = maybeColorChannel(fill, defaultFill); - const [vfillOpacity, cfillOpacity] = maybeNumberChannel(fillOpacity, defaultFillOpacity); - const [vstroke, cstroke] = maybeColorChannel(stroke, defaultStroke); - const [vstrokeOpacity, cstrokeOpacity] = maybeNumberChannel(strokeOpacity, defaultStrokeOpacity); - const [vopacity, copacity] = maybeNumberChannel(opacity2); - if (!isNone(cstroke)) { - if (strokeWidth === void 0) strokeWidth = defaultStrokeWidth; - if (strokeLinecap === void 0) strokeLinecap = defaultStrokeLinecap; - if (strokeLinejoin === void 0) strokeLinejoin = defaultStrokeLinejoin; - if (strokeMiterlimit === void 0 && !isRound(strokeLinejoin)) strokeMiterlimit = defaultStrokeMiterlimit; - if (!isNone(cfill) && paintOrder === void 0) paintOrder = defaultPaintOrder; - } - const [vstrokeWidth, cstrokeWidth] = maybeNumberChannel(strokeWidth); - if (defaultFill !== null) { - mark.fill = impliedString(cfill, "currentColor"); - mark.fillOpacity = impliedNumber(cfillOpacity, 1); - } - if (defaultStroke !== null) { - mark.stroke = impliedString(cstroke, "none"); - mark.strokeWidth = impliedNumber(cstrokeWidth, 1); - mark.strokeOpacity = impliedNumber(cstrokeOpacity, 1); - mark.strokeLinejoin = impliedString(strokeLinejoin, "miter"); - mark.strokeLinecap = impliedString(strokeLinecap, "butt"); - mark.strokeMiterlimit = impliedNumber(strokeMiterlimit, 4); - mark.strokeDasharray = impliedString(strokeDasharray, "none"); - mark.strokeDashoffset = impliedString(strokeDashoffset, "0"); - } - mark.target = string(target); - mark.ariaLabel = string(cariaLabel); - mark.ariaDescription = string(ariaDescription); - mark.ariaHidden = string(ariaHidden); - mark.opacity = impliedNumber(copacity, 1); - mark.mixBlendMode = impliedString(mixBlendMode, "normal"); - mark.imageFilter = impliedString(imageFilter, "none"); - mark.paintOrder = impliedString(paintOrder, "normal"); - mark.pointerEvents = impliedString(pointerEvents, "auto"); - mark.shapeRendering = impliedString(shapeRendering, "auto"); - return { - title: { value: title, optional: true, filter: null }, - href: { value: href, optional: true, filter: null }, - ariaLabel: { value: variaLabel, optional: true, filter: null }, - fill: { value: vfill, scale: "auto", optional: true }, - fillOpacity: { value: vfillOpacity, scale: "auto", optional: true }, - stroke: { value: vstroke, scale: "auto", optional: true }, - strokeOpacity: { value: vstrokeOpacity, scale: "auto", optional: true }, - strokeWidth: { value: vstrokeWidth, optional: true }, - opacity: { value: vopacity, scale: "auto", optional: true } - }; -} -function applyTitle(selection2, L) { - if (L) - selection2.filter((i) => nonempty(L[i])).append("title").call(applyText, L); -} -function applyTitleGroup(selection2, L) { - if (L) - selection2.filter(([i]) => nonempty(L[i])).append("title").call(applyTextGroup, L); -} -function applyText(selection2, T) { - if (T) selection2.text((i) => formatDefault(T[i])); -} -function applyTextGroup(selection2, T) { - if (T) selection2.text(([i]) => formatDefault(T[i])); -} -function applyChannelStyles(selection2, { target, tip: tip2 }, { - ariaLabel: AL, - title: T, - fill: F, - fillOpacity: FO, - stroke: S, - strokeOpacity: SO, - strokeWidth: SW, - opacity: O, - href: H -}) { - if (AL) applyAttr(selection2, "aria-label", (i) => AL[i]); - if (F) applyAttr(selection2, "fill", (i) => F[i]); - if (FO) applyAttr(selection2, "fill-opacity", (i) => FO[i]); - if (S) applyAttr(selection2, "stroke", (i) => S[i]); - if (SO) applyAttr(selection2, "stroke-opacity", (i) => SO[i]); - if (SW) applyAttr(selection2, "stroke-width", (i) => SW[i]); - if (O) applyAttr(selection2, "opacity", (i) => O[i]); - if (H) applyHref(selection2, (i) => H[i], target); - if (!tip2) applyTitle(selection2, T); -} -function applyGroupedChannelStyles(selection2, { target, tip: tip2 }, { - ariaLabel: AL, - title: T, - fill: F, - fillOpacity: FO, - stroke: S, - strokeOpacity: SO, - strokeWidth: SW, - opacity: O, - href: H -}) { - if (AL) applyAttr(selection2, "aria-label", ([i]) => AL[i]); - if (F) applyAttr(selection2, "fill", ([i]) => F[i]); - if (FO) applyAttr(selection2, "fill-opacity", ([i]) => FO[i]); - if (S) applyAttr(selection2, "stroke", ([i]) => S[i]); - if (SO) applyAttr(selection2, "stroke-opacity", ([i]) => SO[i]); - if (SW) applyAttr(selection2, "stroke-width", ([i]) => SW[i]); - if (O) applyAttr(selection2, "opacity", ([i]) => O[i]); - if (H) applyHref(selection2, ([i]) => H[i], target); - if (!tip2) applyTitleGroup(selection2, T); -} -function groupAesthetics({ - ariaLabel: AL, - title: T, - fill: F, - fillOpacity: FO, - stroke: S, - strokeOpacity: SO, - strokeWidth: SW, - opacity: O, - href: H -}, { tip: tip2 }) { - return [AL, tip2 ? void 0 : T, F, FO, S, SO, SW, O, H].filter((c4) => c4 !== void 0); -} -function groupZ(I, Z, z) { - const G = group(I, (i) => Z[i]); - if (z === void 0 && G.size > 1 + I.length >> 1) { - warn( - `Warning: the implicit z channel has high cardinality. This may occur when the fill or stroke channel is associated with quantitative data rather than ordinal or categorical data. You can suppress this warning by setting the z option explicitly; if this data represents a single series, set z to null.` - ); - } - return G.values(); -} -function* groupIndex(I, position2, mark, channels) { - const { z } = mark; - const { z: Z } = channels; - const A5 = groupAesthetics(channels, mark); - const C2 = [...position2, ...A5]; - for (const G of Z ? groupZ(I, Z, z) : [I]) { - let Ag; - let Gg; - out: for (const i of G) { - for (const c4 of C2) { - if (!defined(c4[i])) { - if (Gg) Gg.push(-1); - continue out; - } - } - if (Ag === void 0) { - if (Gg) yield Gg; - Ag = A5.map((c4) => keyof2(c4[i])), Gg = [i]; - continue; - } - Gg.push(i); - for (let j = 0; j < A5.length; ++j) { - const k2 = keyof2(A5[j][i]); - if (k2 !== Ag[j]) { - yield Gg; - Ag = A5.map((c4) => keyof2(c4[i])), Gg = [i]; - continue out; - } - } - } - if (Gg) yield Gg; - } -} -function applyClip(selection2, mark, dimensions, context) { - let clipUrl; - const { clip = context.clip } = mark; - if (clip === "frame") { - selection2 = create2("svg:g", context).each(function() { - this.appendChild(selection2.node()); - selection2.node = () => this; - }); - clipUrl = getFrameClip(context, dimensions); - } else if (clip) { - clipUrl = getGeoClip(clip, context); - } - applyAttr(selection2, "aria-label", mark.ariaLabel); - applyAttr(selection2, "aria-description", mark.ariaDescription); - applyAttr(selection2, "aria-hidden", mark.ariaHidden); - applyAttr(selection2, "clip-path", clipUrl); -} -function memoizeClip(clip) { - const cache = /* @__PURE__ */ new WeakMap(); - return (context, dimensions) => { - let url = cache.get(context); - if (!url) { - const id2 = getClipId(); - select_default2(context.ownerSVGElement).append("clipPath").attr("id", id2).call(clip, context, dimensions); - cache.set(context, url = `url(#${id2})`); - } - return url; - }; -} -var getFrameClip = memoizeClip((clipPath, context, dimensions) => { - const { width, height, marginLeft, marginRight, marginTop, marginBottom } = dimensions; - clipPath.append("rect").attr("x", marginLeft).attr("y", marginTop).attr("width", width - marginRight - marginLeft).attr("height", height - marginTop - marginBottom); -}); -var geoClipCache = /* @__PURE__ */ new WeakMap(); -var sphere = { type: "Sphere" }; -function getGeoClip(geo, context) { - let cache, url; - if (!(cache = geoClipCache.get(context))) geoClipCache.set(context, cache = /* @__PURE__ */ new WeakMap()); - if (geo.type === "Sphere") geo = sphere; - if (!(url = cache.get(geo))) { - const id2 = getClipId(); - select_default2(context.ownerSVGElement).append("clipPath").attr("id", id2).append("path").attr("d", context.path()(geo)); - cache.set(geo, url = `url(#${id2})`); - } - return url; -} -function applyIndirectStyles(selection2, mark, dimensions, context) { - applyClip(selection2, mark, dimensions, context); - applyAttr(selection2, "class", mark.className); - applyAttr(selection2, "fill", mark.fill); - applyAttr(selection2, "fill-opacity", mark.fillOpacity); - applyAttr(selection2, "stroke", mark.stroke); - applyAttr(selection2, "stroke-width", mark.strokeWidth); - applyAttr(selection2, "stroke-opacity", mark.strokeOpacity); - applyAttr(selection2, "stroke-linejoin", mark.strokeLinejoin); - applyAttr(selection2, "stroke-linecap", mark.strokeLinecap); - applyAttr(selection2, "stroke-miterlimit", mark.strokeMiterlimit); - applyAttr(selection2, "stroke-dasharray", mark.strokeDasharray); - applyAttr(selection2, "stroke-dashoffset", mark.strokeDashoffset); - applyAttr(selection2, "shape-rendering", mark.shapeRendering); - applyAttr(selection2, "filter", mark.imageFilter); - applyAttr(selection2, "paint-order", mark.paintOrder); - const { pointerEvents = context.pointerSticky === false ? "none" : void 0 } = mark; - applyAttr(selection2, "pointer-events", pointerEvents); -} -function applyDirectStyles(selection2, mark) { - applyStyle(selection2, "mix-blend-mode", mark.mixBlendMode); - applyAttr(selection2, "opacity", mark.opacity); -} -function applyHref(selection2, href, target) { - selection2.each(function(i) { - const h = href(i); - if (h != null) { - const a2 = this.ownerDocument.createElementNS(namespaces_default.svg, "a"); - a2.setAttribute("fill", "inherit"); - a2.setAttributeNS(namespaces_default.xlink, "href", h); - if (target != null) a2.setAttribute("target", target); - this.parentNode.insertBefore(a2, this).appendChild(this); - } - }); -} -function applyAttr(selection2, name, value) { - if (value != null) selection2.attr(name, value); -} -function applyStyle(selection2, name, value) { - if (value != null) selection2.style(name, value); -} -function applyTransform(selection2, mark, { x: x2, y: y2 }, tx = offset, ty = offset) { - tx += mark.dx; - ty += mark.dy; - if (x2?.bandwidth) tx += x2.bandwidth() / 2; - if (y2?.bandwidth) ty += y2.bandwidth() / 2; - if (tx || ty) selection2.attr("transform", `translate(${tx},${ty})`); -} -function impliedString(value, impliedValue) { - if ((value = string(value)) !== impliedValue) return value; -} -function impliedNumber(value, impliedValue) { - if ((value = number5(value)) !== impliedValue) return value; -} -var validClassName = /^-?([_a-z]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])([_a-z0-9-]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])*$/i; -function maybeClassName(name) { - if (name === void 0) return "plot-d6a7b5"; - name = `${name}`; - if (!validClassName.test(name)) throw new Error(`invalid class name: ${name}`); - return name; -} -function applyInlineStyles(selection2, style) { - if (typeof style === "string") { - selection2.property("style", style); - } else if (style != null) { - for (const element of selection2) { - Object.assign(element.style, style); - } - } -} -function applyFrameAnchor({ frameAnchor }, { width, height, marginTop, marginRight, marginBottom, marginLeft }) { - return [ - /left$/.test(frameAnchor) ? marginLeft : /right$/.test(frameAnchor) ? width - marginRight : (marginLeft + width - marginRight) / 2, - /^top/.test(frameAnchor) ? marginTop : /^bottom/.test(frameAnchor) ? height - marginBottom : (marginTop + height - marginBottom) / 2 - ]; -} - -// node_modules/@observablehq/plot/src/mark.js -var Mark = class { - constructor(data, channels = {}, options = {}, defaults9) { - const { - facet = "auto", - facetAnchor, - fx, - fy, - sort: sort3, - dx = 0, - dy = 0, - margin = 0, - marginTop = margin, - marginRight = margin, - marginBottom = margin, - marginLeft = margin, - className, - clip = defaults9?.clip, - channels: extraChannels, - tip: tip2, - render - } = options; - this.data = data; - this.sort = isDomainSort(sort3) ? sort3 : null; - this.initializer = initializer(options).initializer; - this.transform = this.initializer ? options.transform : basic(options).transform; - if (facet === null || facet === false) { - this.facet = null; - } else { - this.facet = keyword(facet === true ? "include" : facet, "facet", ["auto", "include", "exclude", "super"]); - this.fx = data === singleton && typeof fx === "string" ? [fx] : fx; - this.fy = data === singleton && typeof fy === "string" ? [fy] : fy; - } - this.facetAnchor = maybeFacetAnchor(facetAnchor); - channels = maybeNamed(channels); - if (extraChannels !== void 0) channels = { ...maybeChannels(extraChannels), ...channels }; - if (defaults9 !== void 0) channels = { ...styles(this, options, defaults9), ...channels }; - this.channels = Object.fromEntries( - Object.entries(channels).map(([name, channel]) => { - if (isOptions(channel.value)) { - const { value, label = channel.label, scale = channel.scale } = channel.value; - channel = { ...channel, label, scale, value }; - } - if (data === singleton && typeof channel.value === "string") { - const { value } = channel; - channel = { ...channel, value: [value] }; - } - return [name, channel]; - }).filter(([name, { value, optional }]) => { - if (value != null) return true; - if (optional) return false; - throw new Error(`missing channel value: ${name}`); - }) - ); - this.dx = +dx; - this.dy = +dy; - this.marginTop = +marginTop; - this.marginRight = +marginRight; - this.marginBottom = +marginBottom; - this.marginLeft = +marginLeft; - this.clip = maybeClip(clip); - this.tip = maybeTip(tip2); - this.className = string(className); - if (this.facet === "super") { - if (fx || fy) throw new Error(`super-faceting cannot use fx or fy`); - for (const name in this.channels) { - const { scale } = channels[name]; - if (scale !== "x" && scale !== "y") continue; - throw new Error(`super-faceting cannot use x or y`); - } - } - if (render != null) { - this.render = composeRender(render, this.render); - } - } - initialize(facets, facetChannels, plotOptions) { - let data = dataify(this.data); - if (facets === void 0 && data != null) facets = [range2(data)]; - const originalFacets = facets; - if (this.transform != null) ({ facets, data } = this.transform(data, facets, plotOptions)), data = dataify(data); - if (facets !== void 0) facets.original = originalFacets; - const channels = createChannels(this.channels, data); - if (this.sort != null) channelDomain(data, facets, channels, facetChannels, this.sort); - return { data, facets, channels }; - } - filter(index2, channels, values2) { - for (const name in channels) { - const { filter: filter2 = defined } = channels[name]; - if (filter2 !== null) { - const value = values2[name]; - index2 = index2.filter((i) => filter2(value[i])); - } - } - return index2; - } - // If there is a projection, and there are paired x and y channels associated - // with the x and y scale respectively (and not already in screen coordinates - // as with an initializer), then apply the projection, replacing the x and y - // values. Note that the x and y scales themselves don’t exist if there is a - // projection, but whether the channels are associated with scales still - // determines whether the projection should apply; think of the projection as - // a combination xy-scale. - project(channels, values2, context) { - for (const cx in channels) { - if (channels[cx].scale === "x" && /^x|x$/.test(cx)) { - const cy = cx.replace(/^x|x$/, "y"); - if (cy in channels && channels[cy].scale === "y") { - project(cx, cy, values2, context.projection); - } - } - } - } - scale(channels, scales, context) { - const values2 = valueObject(channels, scales); - if (context.projection) this.project(channels, values2, context); - return values2; - } -}; -function marks(...marks2) { - marks2.plot = Mark.prototype.plot; - return marks2; -} -function composeRender(r1, r2) { - if (r1 == null) return r2 === null ? void 0 : r2; - if (r2 == null) return r1 === null ? void 0 : r1; - if (typeof r1 !== "function") throw new TypeError(`invalid render transform: ${r1}`); - if (typeof r2 !== "function") throw new TypeError(`invalid render transform: ${r2}`); - return function(i, s2, v, d, c4, next) { - return r1.call(this, i, s2, v, d, c4, (i2, s3, v2, d2, c5) => { - return r2.call(this, i2, s3, v2, d2, c5, next); - }); - }; -} -function maybeChannels(channels) { - return Object.fromEntries( - Object.entries(maybeNamed(channels)).map(([name, channel]) => { - channel = typeof channel === "string" ? { value: channel, label: name } : maybeValue(channel); - if (channel.filter === void 0 && channel.scale == null) channel = { ...channel, filter: null }; - return [name, channel]; - }) - ); -} -function maybeTip(tip2) { - return tip2 === true ? "xy" : tip2 === false || tip2 == null ? null : typeof tip2 === "string" ? keyword(tip2, "tip", ["x", "y", "xy"]) : tip2; -} -function withTip(options, pointer2) { - return options?.tip === true ? { ...options, tip: pointer2 } : isObject(options?.tip) && options.tip.pointer === void 0 ? { ...options, tip: { ...options.tip, pointer: pointer2 } } : options; -} - -// node_modules/@observablehq/plot/src/dimensions.js -function createDimensions(scales, marks2, options = {}) { - let marginTopDefault = 0.5 - offset, marginRightDefault = 0.5 + offset, marginBottomDefault = 0.5 + offset, marginLeftDefault = 0.5 - offset; - for (const { marginTop: marginTop2, marginRight: marginRight2, marginBottom: marginBottom2, marginLeft: marginLeft2 } of marks2) { - if (marginTop2 > marginTopDefault) marginTopDefault = marginTop2; - if (marginRight2 > marginRightDefault) marginRightDefault = marginRight2; - if (marginBottom2 > marginBottomDefault) marginBottomDefault = marginBottom2; - if (marginLeft2 > marginLeftDefault) marginLeftDefault = marginLeft2; - } - let { - margin, - marginTop = margin !== void 0 ? margin : marginTopDefault, - marginRight = margin !== void 0 ? margin : marginRightDefault, - marginBottom = margin !== void 0 ? margin : marginBottomDefault, - marginLeft = margin !== void 0 ? margin : marginLeftDefault - } = options; - marginTop = +marginTop; - marginRight = +marginRight; - marginBottom = +marginBottom; - marginLeft = +marginLeft; - let { - width = 640, - height = autoHeight(scales, options, { - width, - marginTopDefault, - marginRightDefault, - marginBottomDefault, - marginLeftDefault - }) + Math.max(0, marginTop - marginTopDefault + marginBottom - marginBottomDefault) - } = options; - width = +width; - height = +height; - const dimensions = { - width, - height, - marginTop, - marginRight, - marginBottom, - marginLeft - }; - if (scales.fx || scales.fy) { - let { - margin: facetMargin, - marginTop: facetMarginTop = facetMargin !== void 0 ? facetMargin : marginTop, - marginRight: facetMarginRight = facetMargin !== void 0 ? facetMargin : marginRight, - marginBottom: facetMarginBottom = facetMargin !== void 0 ? facetMargin : marginBottom, - marginLeft: facetMarginLeft = facetMargin !== void 0 ? facetMargin : marginLeft - } = options.facet ?? {}; - facetMarginTop = +facetMarginTop; - facetMarginRight = +facetMarginRight; - facetMarginBottom = +facetMarginBottom; - facetMarginLeft = +facetMarginLeft; - dimensions.facet = { - marginTop: facetMarginTop, - marginRight: facetMarginRight, - marginBottom: facetMarginBottom, - marginLeft: facetMarginLeft - }; - } - return dimensions; -} -function autoHeight({ x: x2, y: y2, fy, fx }, { projection: projection3, aspectRatio }, { width, marginTopDefault, marginRightDefault, marginBottomDefault, marginLeftDefault }) { - const nfy = fy ? fy.scale.domain().length || 1 : 1; - const ar = projectionAspectRatio(projection3); - if (ar) { - const nfx = fx ? fx.scale.domain().length : 1; - const far = (1.1 * nfy - 0.1) / (1.1 * nfx - 0.1) * ar; - const lar = Math.max(0.1, Math.min(10, far)); - return Math.round((width - marginLeftDefault - marginRightDefault) * lar + marginTopDefault + marginBottomDefault); - } - const ny = y2 ? isOrdinalScale(y2) ? y2.scale.domain().length || 1 : Math.max(7, 17 / nfy) : 1; - if (aspectRatio != null) { - aspectRatio = +aspectRatio; - if (!(isFinite(aspectRatio) && aspectRatio > 0)) throw new Error(`invalid aspectRatio: ${aspectRatio}`); - const ratio = aspectRatioLength("y", y2) / (aspectRatioLength("x", x2) * aspectRatio); - const fxb = fx ? fx.scale.bandwidth() : 1; - const fyb = fy ? fy.scale.bandwidth() : 1; - const w = fxb * (width - marginLeftDefault - marginRightDefault) - x2.insetLeft - x2.insetRight; - return (ratio * w + y2.insetTop + y2.insetBottom) / fyb + marginTopDefault + marginBottomDefault; - } - return !!(y2 || fy) * Math.max(1, Math.min(60, ny * nfy)) * 20 + !!fx * 30 + 60; -} -function aspectRatioLength(k2, scale) { - if (!scale) throw new Error(`aspectRatio requires ${k2} scale`); - const { type: type2, domain } = scale; - let transform2; - switch (type2) { - case "linear": - case "utc": - case "time": - transform2 = Number; - break; - case "pow": { - const exponent = scale.scale.exponent(); - transform2 = (x2) => Math.pow(x2, exponent); - break; - } - case "log": - transform2 = Math.log; - break; - case "point": - case "band": - return domain.length; - default: - throw new Error(`unsupported ${k2} scale for aspectRatio: ${type2}`); - } - const [min4, max3] = extent(domain); - return Math.abs(transform2(max3) - transform2(min4)); -} - -// node_modules/@observablehq/plot/src/interactions/pointer.js -var states = /* @__PURE__ */ new WeakMap(); -function pointerK(kx2, ky2, { x: x2, y: y2, px, py, maxRadius = 40, channels, render, ...options } = {}) { - maxRadius = +maxRadius; - if (px != null) x2 ??= null, channels = { ...channels, px: { value: px, scale: "x" } }; - if (py != null) y2 ??= null, channels = { ...channels, py: { value: py, scale: "y" } }; - return { - x: x2, - y: y2, - channels, - ...options, - // Unlike other composed transforms, the render transform must be the - // outermost render function because it will re-render dynamically in - // response to pointer events. - render: composeRender(function(index2, scales, values2, dimensions, context, next) { - context = { ...context, pointerSticky: false }; - const svg = context.ownerSVGElement; - const { data } = context.getMarkState(this); - let state = states.get(svg); - if (!state) states.set(svg, state = { sticky: false, roots: [], renders: [] }); - let renderIndex = state.renders.push(render2) - 1; - const { x: x3, y: y3, fx, fy } = scales; - let tx = fx ? fx(index2.fx) - dimensions.marginLeft : 0; - let ty = fy ? fy(index2.fy) - dimensions.marginTop : 0; - if (x3?.bandwidth) tx += x3.bandwidth() / 2; - if (y3?.bandwidth) ty += y3.bandwidth() / 2; - const faceted = index2.fi != null; - let facetState; - if (faceted) { - let facetStates = state.facetStates; - if (!facetStates) state.facetStates = facetStates = /* @__PURE__ */ new Map(); - facetState = facetStates.get(this); - if (!facetState) facetStates.set(this, facetState = /* @__PURE__ */ new Map()); - } - const [cx, cy] = applyFrameAnchor(this, dimensions); - const { px: PX, py: PY } = values2; - const px2 = PX ? (i2) => PX[i2] : anchorX(values2, cx); - const py2 = PY ? (i2) => PY[i2] : anchorY(values2, cy); - let i; - let g; - let s2; - let f; - function update(ii, ri) { - if (faceted) { - if (f) f = cancelAnimationFrame(f); - if (ii == null) facetState.delete(index2.fi); - else { - facetState.set(index2.fi, ri); - f = requestAnimationFrame(() => { - f = null; - for (const [fi, r] of facetState) { - if (r < ri || r === ri && fi < index2.fi) { - ii = null; - break; - } - } - render2(ii); - }); - return; - } - } - render2(ii); - } - function render2(ii) { - if (i === ii && s2 === state.sticky) return; - i = ii; - s2 = context.pointerSticky = state.sticky; - const I = i == null ? [] : [i]; - if (faceted) I.fx = index2.fx, I.fy = index2.fy, I.fi = index2.fi; - const r = next(I, scales, values2, dimensions, context); - if (g) { - if (faceted) { - const p = g.parentNode; - const ft = g.getAttribute("transform"); - const mt = r.getAttribute("transform"); - ft ? r.setAttribute("transform", ft) : r.removeAttribute("transform"); - mt ? p.setAttribute("transform", mt) : p.removeAttribute("transform"); - r.removeAttribute("aria-label"); - r.removeAttribute("aria-description"); - r.removeAttribute("aria-hidden"); - } - g.replaceWith(r); - } - state.roots[renderIndex] = g = r; - if (!(i == null && facetState?.size > 1)) { - const value = i == null ? null : isArray(data) ? data[i] : data.get(i); - context.dispatchValue(value); - } - return r; - } - function pointermove(event) { - if (state.sticky || event.pointerType === "mouse" && event.buttons === 1) return; - let [xp, yp] = pointer_default(event); - xp -= tx, yp -= ty; - const kpx = xp < dimensions.marginLeft || xp > dimensions.width - dimensions.marginRight ? 1 : kx2; - const kpy = yp < dimensions.marginTop || yp > dimensions.height - dimensions.marginBottom ? 1 : ky2; - let ii = null; - let ri = maxRadius * maxRadius; - for (const j of index2) { - const dx = kpx * (px2(j) - xp); - const dy = kpy * (py2(j) - yp); - const rj = dx * dx + dy * dy; - if (rj <= ri) ii = j, ri = rj; - } - if (ii != null && (kx2 !== 1 || ky2 !== 1)) { - const dx = px2(ii) - xp; - const dy = py2(ii) - yp; - ri = dx * dx + dy * dy; - } - update(ii, ri); - } - function pointerdown(event) { - if (event.pointerType !== "mouse") return; - if (i == null) return; - if (state.sticky && state.roots.some((r) => r?.contains(event.target))) return; - if (state.sticky) state.sticky = false, state.renders.forEach((r) => r(null)); - else state.sticky = true, render2(i); - event.stopImmediatePropagation(); - } - function pointerleave(event) { - if (event.pointerType !== "mouse") return; - if (!state.sticky) update(null); - } - svg.addEventListener("pointerenter", pointermove); - svg.addEventListener("pointermove", pointermove); - svg.addEventListener("pointerdown", pointerdown); - svg.addEventListener("pointerleave", pointerleave); - return render2(null); - }, render) - }; -} -function pointer(options) { - return pointerK(1, 1, options); -} -function pointerX(options) { - return pointerK(1, 0.01, options); -} -function pointerY(options) { - return pointerK(0.01, 1, options); -} -function anchorX({ x1: X12, x2: X22, x: X3 = X12 }, cx) { - return X12 && X22 ? (i) => (X12[i] + X22[i]) / 2 : X3 ? (i) => X3[i] : () => cx; -} -function anchorY({ y1: Y12, y2: Y22, y: Y3 = Y12 }, cy) { - return Y12 && Y22 ? (i) => (Y12[i] + Y22[i]) / 2 : Y3 ? (i) => Y3[i] : () => cy; -} - -// node_modules/@observablehq/plot/src/axes.js -function inferFontVariant(scale) { - return isOrdinalScale(scale) && scale.interval === void 0 ? void 0 : "tabular-nums"; -} - -// node_modules/@observablehq/plot/src/legends/ramp.js -function legendRamp(color3, options) { - let { - label = color3.label, - tickSize = 6, - width = 240, - height = 44 + tickSize, - marginTop = 18, - marginRight = 0, - marginBottom = 16 + tickSize, - marginLeft = 0, - style, - ticks: ticks2 = (width - marginLeft - marginRight) / 64, - tickFormat: tickFormat2, - fontVariant = inferFontVariant(color3), - round = true, - opacity: opacity2, - className - } = options; - const context = createContext(options); - className = maybeClassName(className); - opacity2 = maybeNumberChannel(opacity2)[1]; - if (tickFormat2 === null) tickFormat2 = () => null; - const svg = create2("svg", context).attr("class", `${className}-ramp`).attr("font-family", "system-ui, sans-serif").attr("font-size", 10).attr("width", width).attr("height", height).attr("viewBox", `0 0 ${width} ${height}`).call( - (svg2) => ( - // Warning: if you edit this, change defaultClassName. - svg2.append("style").text( - `:where(.${className}-ramp) { - display: block; - height: auto; - height: intrinsic; - max-width: 100%; - overflow: visible; -} -:where(.${className}-ramp text) { - white-space: pre; -}` - ) - ) - ).call(applyInlineStyles, style); - let tickAdjust = (g) => g.selectAll(".tick line").attr("y1", marginTop + marginBottom - height); - let x2; - const applyRange = round ? (x3, range4) => x3.rangeRound(range4) : (x3, range4) => x3.range(range4); - const { type: type2, domain, range: range3, interpolate, scale, pivot } = color3; - if (interpolate) { - const interpolator = range3 === void 0 ? interpolate : piecewise(interpolate.length === 1 ? interpolatePiecewise(interpolate) : interpolate, range3); - x2 = applyRange( - scale.copy(), - quantize_default( - number_default(marginLeft, width - marginRight), - Math.min(domain.length + (pivot !== void 0), range3 === void 0 ? Infinity : range3.length) - ) - ); - const n = 256; - const canvas = context.document.createElement("canvas"); - canvas.width = n; - canvas.height = 1; - const context2 = canvas.getContext("2d"); - for (let i = 0, j = n - 1; i < n; ++i) { - context2.fillStyle = interpolator(i / j); - context2.fillRect(i, 0, 1, 1); - } - svg.append("image").attr("opacity", opacity2).attr("x", marginLeft).attr("y", marginTop).attr("width", width - marginLeft - marginRight).attr("height", height - marginTop - marginBottom).attr("preserveAspectRatio", "none").attr("xlink:href", canvas.toDataURL()); - } else if (type2 === "threshold") { - const thresholds = domain; - const thresholdFormat = tickFormat2 === void 0 ? (d) => d : typeof tickFormat2 === "string" ? format(tickFormat2) : tickFormat2; - x2 = applyRange(linear2().domain([-1, range3.length - 1]), [marginLeft, width - marginRight]); - svg.append("g").attr("fill-opacity", opacity2).selectAll().data(range3).enter().append("rect").attr("x", (d, i) => x2(i - 1)).attr("y", marginTop).attr("width", (d, i) => x2(i) - x2(i - 1)).attr("height", height - marginTop - marginBottom).attr("fill", (d) => d); - ticks2 = map4(thresholds, (_, i) => i); - tickFormat2 = (i) => thresholdFormat(thresholds[i], i); - } else { - x2 = applyRange(band().domain(domain), [marginLeft, width - marginRight]); - svg.append("g").attr("fill-opacity", opacity2).selectAll().data(domain).enter().append("rect").attr("x", x2).attr("y", marginTop).attr("width", Math.max(0, x2.bandwidth() - 1)).attr("height", height - marginTop - marginBottom).attr("fill", scale); - tickAdjust = () => { - }; - } - svg.append("g").attr("transform", `translate(0,${height - marginBottom})`).call( - axisBottom(x2).ticks(Array.isArray(ticks2) ? null : ticks2, typeof tickFormat2 === "string" ? tickFormat2 : void 0).tickFormat(typeof tickFormat2 === "function" ? tickFormat2 : void 0).tickSize(tickSize).tickValues(Array.isArray(ticks2) ? ticks2 : null) - ).attr("font-size", null).attr("font-family", null).attr("font-variant", impliedString(fontVariant, "normal")).call(tickAdjust).call((g) => g.select(".domain").remove()); - if (label !== void 0) { - svg.append("text").attr("x", marginLeft).attr("y", marginTop - 6).attr("fill", "currentColor").attr("font-weight", "bold").text(label); - } - return svg.node(); -} - -// node_modules/@observablehq/plot/src/math.js -var radians3 = Math.PI / 180; - -// node_modules/@observablehq/plot/src/marker.js -function markers(mark, { marker, markerStart = marker, markerMid = marker, markerEnd = marker } = {}) { - mark.markerStart = maybeMarker(markerStart); - mark.markerMid = maybeMarker(markerMid); - mark.markerEnd = maybeMarker(markerEnd); -} -function maybeMarker(marker) { - if (marker == null || marker === false) return null; - if (marker === true) return markerCircleFill; - if (typeof marker === "function") return marker; - switch (`${marker}`.toLowerCase()) { - case "none": - return null; - case "arrow": - return markerArrow("auto"); - case "arrow-reverse": - return markerArrow("auto-start-reverse"); - case "dot": - return markerDot; - case "circle": - case "circle-fill": - return markerCircleFill; - case "circle-stroke": - return markerCircleStroke; - case "tick": - return markerTick("auto"); - case "tick-x": - return markerTick(90); - case "tick-y": - return markerTick(0); - } - throw new Error(`invalid marker: ${marker}`); -} -function markerArrow(orient) { - return (color3, context) => create2("svg:marker", context).attr("viewBox", "-5 -5 10 10").attr("markerWidth", 6.67).attr("markerHeight", 6.67).attr("orient", orient).attr("fill", "none").attr("stroke", color3).attr("stroke-width", 1.5).attr("stroke-linecap", "round").attr("stroke-linejoin", "round").call((marker) => marker.append("path").attr("d", "M-1.5,-3l3,3l-3,3")).node(); -} -function markerDot(color3, context) { - return create2("svg:marker", context).attr("viewBox", "-5 -5 10 10").attr("markerWidth", 6.67).attr("markerHeight", 6.67).attr("fill", color3).attr("stroke", "none").call((marker) => marker.append("circle").attr("r", 2.5)).node(); -} -function markerCircleFill(color3, context) { - return create2("svg:marker", context).attr("viewBox", "-5 -5 10 10").attr("markerWidth", 6.67).attr("markerHeight", 6.67).attr("fill", color3).attr("stroke", "var(--plot-background)").attr("stroke-width", 1.5).call((marker) => marker.append("circle").attr("r", 3)).node(); -} -function markerCircleStroke(color3, context) { - return create2("svg:marker", context).attr("viewBox", "-5 -5 10 10").attr("markerWidth", 6.67).attr("markerHeight", 6.67).attr("fill", "var(--plot-background)").attr("stroke", color3).attr("stroke-width", 1.5).call((marker) => marker.append("circle").attr("r", 3)).node(); -} -function markerTick(orient) { - return (color3, context) => create2("svg:marker", context).attr("viewBox", "-3 -3 6 6").attr("markerWidth", 6).attr("markerHeight", 6).attr("orient", orient).attr("stroke", color3).call((marker) => marker.append("path").attr("d", "M0,-3v6")).node(); -} -var nextMarkerId = 0; -function applyMarkers(path2, mark, { stroke: S }, context) { - return applyMarkersColor(path2, mark, S && ((i) => S[i]), null, context); -} -function applyGroupedMarkers(path2, mark, { stroke: S, z: Z }, context) { - return applyMarkersColor(path2, mark, S && (([i]) => S[i]), Z, context); -} -var START = 1; -var END = 2; -function getGroupedOrientation(path2, Z) { - const O = new Uint8Array(Z.length); - const D2 = path2.data().filter((I) => I.length > 1); - const n = D2.length; - for (let i = 0, z = unset; i < n; ++i) { - const I = D2[i]; - if (I.length > 1) { - const i2 = I[0]; - if (z !== (z = keyof2(Z[i2]))) O[i2] |= START; - } - } - for (let i = n - 1, z = unset; i >= 0; --i) { - const I = D2[i]; - if (I.length > 1) { - const i2 = I[0]; - if (z !== (z = keyof2(Z[i2]))) O[i2] |= END; - } - } - return ([i]) => O[i]; -} -function applyMarkersColor(path2, { markerStart, markerMid, markerEnd, stroke }, strokeof = () => stroke, Z, context) { - if (!markerStart && !markerMid && !markerEnd) return; - const iriByMarkerColor = /* @__PURE__ */ new Map(); - const orient = Z && getGroupedOrientation(path2, Z); - function applyMarker(name, marker, filter2) { - return function(i) { - if (filter2 && !filter2(i)) return; - const color3 = strokeof(i); - let iriByColor = iriByMarkerColor.get(marker); - if (!iriByColor) iriByMarkerColor.set(marker, iriByColor = /* @__PURE__ */ new Map()); - let iri = iriByColor.get(color3); - if (!iri) { - const node = this.parentNode.insertBefore(marker(color3, context), this); - const id2 = `plot-marker-${++nextMarkerId}`; - node.setAttribute("id", id2); - iriByColor.set(color3, iri = `url(#${id2})`); - } - this.setAttribute(name, iri); - }; - } - if (markerStart) path2.each(applyMarker("marker-start", markerStart, orient && ((i) => orient(i) & START))); - if (markerMid && orient) path2.each(applyMarker("marker-start", markerMid, (i) => !(orient(i) & START))); - if (markerMid) path2.each(applyMarker("marker-mid", markerMid)); - if (markerEnd) path2.each(applyMarker("marker-end", markerEnd, orient && ((i) => orient(i) & END))); -} - -// node_modules/@observablehq/plot/src/transforms/inset.js -function maybeInsetX({ inset, insetLeft, insetRight, ...options } = {}) { - [insetLeft, insetRight] = maybeInset(inset, insetLeft, insetRight); - return { inset, insetLeft, insetRight, ...options }; -} -function maybeInsetY({ inset, insetTop, insetBottom, ...options } = {}) { - [insetTop, insetBottom] = maybeInset(inset, insetTop, insetBottom); - return { inset, insetTop, insetBottom, ...options }; -} -function maybeInset(inset, inset1, inset2) { - return inset === void 0 && inset1 === void 0 && inset2 === void 0 ? offset ? [1, 0] : [0.5, 0.5] : [inset1, inset2]; -} - -// node_modules/@observablehq/plot/src/transforms/interval.js -function maybeIntervalValue(value, { interval: interval2 }) { - value = { ...maybeValue(value) }; - value.interval = maybeInterval(value.interval === void 0 ? interval2 : value.interval); - return value; -} -function maybeIntervalK(k2, maybeInsetK, options, trivial) { - const { [k2]: v, [`${k2}1`]: v1, [`${k2}2`]: v2 } = options; - const { value, interval: interval2 } = maybeIntervalValue(v, options); - if (value == null || interval2 == null && !trivial) return options; - const label = labelof(v); - if (interval2 == null) { - let V; - const kv = { transform: (data) => V || (V = valueof(data, value)), label }; - return { - ...options, - [k2]: void 0, - [`${k2}1`]: v1 === void 0 ? kv : v1, - [`${k2}2`]: v2 === void 0 && !(v1 === v2 && trivial) ? kv : v2 - }; - } - let D1, V1; - function transform2(data) { - if (V1 !== void 0 && data === D1) return V1; - return V1 = map4(valueof(D1 = data, value), (v3) => interval2.floor(v3)); - } - return maybeInsetK({ - ...options, - [k2]: void 0, - [`${k2}1`]: v1 === void 0 ? { transform: transform2, label } : v1, - [`${k2}2`]: v2 === void 0 ? { transform: (data) => transform2(data).map((v3) => interval2.offset(v3)), label } : v2 - }); -} -function maybeIntervalMidK(k2, maybeInsetK, options) { - const { [k2]: v } = options; - const { value, interval: interval2 } = maybeIntervalValue(v, options); - if (value == null || interval2 == null) return options; - return maybeInsetK({ - ...options, - [k2]: { - label: labelof(v), - transform: (data) => { - const V1 = map4(valueof(data, value), (v2) => interval2.floor(v2)); - const V2 = V1.map((v2) => interval2.offset(v2)); - return V1.map( - isTemporal(V1) ? (v1, v2) => v1 == null || isNaN(v1 = +v1) || (v2 = V2[v2], v2 == null) || isNaN(v2 = +v2) ? void 0 : new Date((v1 + v2) / 2) : (v1, v2) => v1 == null || (v2 = V2[v2], v2 == null) ? NaN : (+v1 + +v2) / 2 - ); - } - } - }); -} -function maybeTrivialIntervalX(options = {}) { - return maybeIntervalK("x", maybeInsetX, options, true); -} -function maybeIntervalX(options = {}) { - return maybeIntervalK("x", maybeInsetX, options); -} -function maybeIntervalY(options = {}) { - return maybeIntervalK("y", maybeInsetY, options); -} -function maybeIntervalMidX(options = {}) { - return maybeIntervalMidK("x", maybeInsetX, options); -} -function maybeIntervalMidY(options = {}) { - return maybeIntervalMidK("y", maybeInsetY, options); -} - -// node_modules/@observablehq/plot/src/marks/rule.js -var defaults = { - ariaLabel: "rule", - fill: null, - stroke: "currentColor" -}; -var RuleX = class extends Mark { - constructor(data, options = {}) { - const { x: x2, y1: y12, y2, inset = 0, insetTop = inset, insetBottom = inset } = options; - super( - data, - { - x: { value: x2, scale: "x", optional: true }, - y1: { value: y12, scale: "y", optional: true }, - y2: { value: y2, scale: "y", optional: true } - }, - withTip(options, "x"), - defaults - ); - this.insetTop = number5(insetTop); - this.insetBottom = number5(insetBottom); - markers(this, options); - } - render(index2, scales, channels, dimensions, context) { - const { x: x2, y: y2 } = scales; - const { x: X3, y1: Y12, y2: Y22 } = channels; - const { width, height, marginTop, marginRight, marginLeft, marginBottom } = dimensions; - const { insetTop, insetBottom } = this; - return create2("svg:g", context).call(applyIndirectStyles, this, dimensions, context).call(applyTransform, this, { x: X3 && x2 }, offset, 0).call( - (g) => g.selectAll().data(index2).enter().append("line").call(applyDirectStyles, this).attr("x1", X3 ? (i) => X3[i] : (marginLeft + width - marginRight) / 2).attr("x2", X3 ? (i) => X3[i] : (marginLeft + width - marginRight) / 2).attr("y1", Y12 && !isCollapsed(y2) ? (i) => Y12[i] + insetTop : marginTop + insetTop).attr( - "y2", - Y22 && !isCollapsed(y2) ? y2.bandwidth ? (i) => Y22[i] + y2.bandwidth() - insetBottom : (i) => Y22[i] - insetBottom : height - marginBottom - insetBottom - ).call(applyChannelStyles, this, channels).call(applyMarkers, this, channels, context) - ).node(); - } -}; -var RuleY = class extends Mark { - constructor(data, options = {}) { - const { x1: x12, x2, y: y2, inset = 0, insetRight = inset, insetLeft = inset } = options; - super( - data, - { - y: { value: y2, scale: "y", optional: true }, - x1: { value: x12, scale: "x", optional: true }, - x2: { value: x2, scale: "x", optional: true } - }, - withTip(options, "y"), - defaults - ); - this.insetRight = number5(insetRight); - this.insetLeft = number5(insetLeft); - markers(this, options); - } - render(index2, scales, channels, dimensions, context) { - const { x: x2, y: y2 } = scales; - const { y: Y3, x1: X12, x2: X22 } = channels; - const { width, height, marginTop, marginRight, marginLeft, marginBottom } = dimensions; - const { insetLeft, insetRight } = this; - return create2("svg:g", context).call(applyIndirectStyles, this, dimensions, context).call(applyTransform, this, { y: Y3 && y2 }, 0, offset).call( - (g) => g.selectAll().data(index2).enter().append("line").call(applyDirectStyles, this).attr("x1", X12 && !isCollapsed(x2) ? (i) => X12[i] + insetLeft : marginLeft + insetLeft).attr( - "x2", - X22 && !isCollapsed(x2) ? x2.bandwidth ? (i) => X22[i] + x2.bandwidth() - insetRight : (i) => X22[i] - insetRight : width - marginRight - insetRight - ).attr("y1", Y3 ? (i) => Y3[i] : (marginTop + height - marginBottom) / 2).attr("y2", Y3 ? (i) => Y3[i] : (marginTop + height - marginBottom) / 2).call(applyChannelStyles, this, channels).call(applyMarkers, this, channels, context) - ).node(); - } -}; -function ruleX(data, options) { - let { x: x2 = identity6, y: y2, y1: y12, y2: y22, ...rest } = maybeIntervalY(options); - [y12, y22] = maybeOptionalZero(y2, y12, y22); - return new RuleX(data, { ...rest, x: x2, y1: y12, y2: y22 }); -} -function ruleY(data, options) { - let { y: y2 = identity6, x: x2, x1: x12, x2: x22, ...rest } = maybeIntervalX(options); - [x12, x22] = maybeOptionalZero(x2, x12, x22); - return new RuleY(data, { ...rest, y: y2, x1: x12, x2: x22 }); -} -function maybeOptionalZero(x2, x12, x22) { - if (x2 == null) { - if (x12 === void 0) { - if (x22 !== void 0) return [0, x22]; - } else { - if (x22 === void 0) return [0, x12]; - } - } else if (x12 === void 0) { - return x22 === void 0 ? [0, x2] : [x2, x22]; - } else if (x22 === void 0) { - return [x2, x12]; - } - return [x12, x22]; -} - -// node_modules/@observablehq/plot/src/template.js -function template(strings, ...parts) { - let n = parts.length; - for (let j = 0, copy3 = true; j < n; ++j) { - if (typeof parts[j] !== "function") { - if (copy3) { - strings = strings.slice(); - copy3 = false; - } - strings.splice(j, 2, strings[j] + parts[j] + strings[j + 1]); - parts.splice(j, 1); - --j, --n; - } - } - return (i) => { - let s2 = strings[0]; - for (let j = 0; j < n; ++j) { - s2 += parts[j](i) + strings[j + 1]; - } - return s2; - }; -} - -// node_modules/@observablehq/plot/src/marks/text.js -var defaults2 = { - ariaLabel: "text", - strokeLinejoin: "round", - strokeWidth: 3, - paintOrder: "stroke" -}; -var softHyphen = "\xAD"; -var Text = class extends Mark { - constructor(data, options = {}) { - const { - x: x2, - y: y2, - text: text2 = isIterable(data) && isTextual(data) ? identity6 : indexOf, - frameAnchor, - textAnchor = /right$/i.test(frameAnchor) ? "end" : /left$/i.test(frameAnchor) ? "start" : "middle", - lineAnchor = /^top/i.test(frameAnchor) ? "top" : /^bottom/i.test(frameAnchor) ? "bottom" : "middle", - lineHeight = 1, - lineWidth = Infinity, - textOverflow, - monospace, - fontFamily = monospace ? "ui-monospace, monospace" : void 0, - fontSize, - fontStyle, - fontVariant, - fontWeight, - rotate - } = options; - const [vrotate, crotate] = maybeNumberChannel(rotate, 0); - const [vfontSize, cfontSize] = maybeFontSizeChannel(fontSize); - super( - data, - { - x: { value: x2, scale: "x", optional: true }, - y: { value: y2, scale: "y", optional: true }, - fontSize: { value: vfontSize, optional: true }, - rotate: { value: numberChannel(vrotate), optional: true }, - text: { value: text2, filter: nonempty, optional: true } - }, - options, - defaults2 - ); - this.rotate = crotate; - this.textAnchor = impliedString(textAnchor, "middle"); - this.lineAnchor = keyword(lineAnchor, "lineAnchor", ["top", "middle", "bottom"]); - this.lineHeight = +lineHeight; - this.lineWidth = +lineWidth; - this.textOverflow = maybeTextOverflow(textOverflow); - this.monospace = !!monospace; - this.fontFamily = string(fontFamily); - this.fontSize = cfontSize; - this.fontStyle = string(fontStyle); - this.fontVariant = string(fontVariant); - this.fontWeight = string(fontWeight); - this.frameAnchor = maybeFrameAnchor(frameAnchor); - if (!(this.lineWidth >= 0)) throw new Error(`invalid lineWidth: ${lineWidth}`); - this.splitLines = splitter(this); - this.clipLine = clipper(this); - } - render(index2, scales, channels, dimensions, context) { - const { x: x2, y: y2 } = scales; - const { x: X3, y: Y3, rotate: R, text: T, title: TL, fontSize: FS } = channels; - const { rotate } = this; - const [cx, cy] = applyFrameAnchor(this, dimensions); - return create2("svg:g", context).call(applyIndirectStyles, this, dimensions, context).call(applyIndirectTextStyles, this, T, dimensions).call(applyTransform, this, { x: X3 && x2, y: Y3 && y2 }).call( - (g) => g.selectAll().data(index2).enter().append("text").call(applyDirectStyles, this).call(applyMultilineText, this, T, TL).attr( - "transform", - template`translate(${X3 ? (i) => X3[i] : cx},${Y3 ? (i) => Y3[i] : cy})${R ? (i) => ` rotate(${R[i]})` : rotate ? ` rotate(${rotate})` : ``}` - ).call(applyAttr, "font-size", FS && ((i) => FS[i])).call(applyChannelStyles, this, channels) - ).node(); - } -}; -function maybeTextOverflow(textOverflow) { - return textOverflow == null ? null : keyword(textOverflow, "textOverflow", [ - "clip", - // shorthand for clip-end - "ellipsis", - // … ellipsis-end - "clip-start", - "clip-end", - "ellipsis-start", - "ellipsis-middle", - "ellipsis-end" - ]).replace(/^(clip|ellipsis)$/, "$1-end"); -} -function applyMultilineText(selection2, mark, T, TL) { - if (!T) return; - const { lineAnchor, lineHeight, textOverflow, splitLines, clipLine } = mark; - selection2.each(function(i) { - const lines = splitLines(formatDefault(T[i]) ?? "").map(clipLine); - const n = lines.length; - const y2 = lineAnchor === "top" ? 0.71 : lineAnchor === "bottom" ? 1 - n : (164 - n * 100) / 200; - if (n > 1) { - let m = 0; - for (let i2 = 0; i2 < n; ++i2) { - ++m; - if (!lines[i2]) continue; - const tspan = this.ownerDocument.createElementNS(namespaces_default.svg, "tspan"); - tspan.setAttribute("x", 0); - if (i2 === m - 1) tspan.setAttribute("y", `${(y2 + i2) * lineHeight}em`); - else tspan.setAttribute("dy", `${m * lineHeight}em`); - tspan.textContent = lines[i2]; - this.appendChild(tspan); - m = 0; - } - } else { - if (y2) this.setAttribute("y", `${y2 * lineHeight}em`); - this.textContent = lines[0]; - } - if (textOverflow && !TL && lines[0] !== T[i]) { - const title = this.ownerDocument.createElementNS(namespaces_default.svg, "title"); - title.textContent = T[i]; - this.appendChild(title); - } - }); -} -function text(data, { x: x2, y: y2, ...options } = {}) { - if (options.frameAnchor === void 0) [x2, y2] = maybeTuple(x2, y2); - return new Text(data, { ...options, x: x2, y: y2 }); -} -function textX(data, { x: x2 = identity6, ...options } = {}) { - return new Text(data, maybeIntervalMidY({ ...options, x: x2 })); -} -function textY(data, { y: y2 = identity6, ...options } = {}) { - return new Text(data, maybeIntervalMidX({ ...options, y: y2 })); -} -function applyIndirectTextStyles(selection2, mark, T) { - applyAttr(selection2, "text-anchor", mark.textAnchor); - applyAttr(selection2, "font-family", mark.fontFamily); - applyAttr(selection2, "font-size", mark.fontSize); - applyAttr(selection2, "font-style", mark.fontStyle); - applyAttr(selection2, "font-variant", mark.fontVariant === void 0 ? inferFontVariant2(T) : mark.fontVariant); - applyAttr(selection2, "font-weight", mark.fontWeight); -} -function inferFontVariant2(T) { - return T && (isNumeric(T) || isTemporal(T)) ? "tabular-nums" : void 0; -} -var fontSizes = /* @__PURE__ */ new Set([ - // global keywords - "inherit", - "initial", - "revert", - "unset", - // absolute keywords - "xx-small", - "x-small", - "small", - "medium", - "large", - "x-large", - "xx-large", - "xxx-large", - // relative keywords - "larger", - "smaller" -]); -function maybeFontSizeChannel(fontSize) { - if (fontSize == null || typeof fontSize === "number") return [void 0, fontSize]; - if (typeof fontSize !== "string") return [fontSize, void 0]; - fontSize = fontSize.trim().toLowerCase(); - return fontSizes.has(fontSize) || /^[+-]?\d*\.?\d+(e[+-]?\d+)?(\w*|%)$/.test(fontSize) ? [void 0, fontSize] : [fontSize, void 0]; -} -function lineWrap(input, maxWidth, widthof) { - const lines = []; - let lineStart, lineEnd = 0; - for (const [wordStart, wordEnd, required] of lineBreaks(input)) { - if (lineStart === void 0) lineStart = wordStart; - if (lineEnd > lineStart && widthof(input, lineStart, wordEnd) > maxWidth) { - lines.push(input.slice(lineStart, lineEnd) + (input[lineEnd - 1] === softHyphen ? "-" : "")); - lineStart = wordStart; - } - if (required) { - lines.push(input.slice(lineStart, wordEnd)); - lineStart = void 0; - continue; - } - lineEnd = wordEnd; - } - return lines; -} -function* lineBreaks(input) { - let i = 0, j = 0; - const n = input.length; - while (j < n) { - let k2 = 1; - switch (input[j]) { - case softHyphen: - case "-": - ++j; - yield [i, j, false]; - i = j; - break; - case " ": - yield [i, j, false]; - while (input[++j] === " ") ; - i = j; - break; - case "\r": - if (input[j + 1] === "\n") ++k2; - // falls through - case "\n": - yield [i, j, true]; - j += k2; - i = j; - break; - default: - ++j; - break; - } - } - yield [i, j, true]; -} -var defaultWidthMap = { - a: 56, - b: 63, - c: 57, - d: 63, - e: 58, - f: 37, - g: 62, - h: 60, - i: 26, - j: 26, - k: 55, - l: 26, - m: 88, - n: 60, - o: 60, - p: 62, - q: 62, - r: 39, - s: 54, - t: 38, - u: 60, - v: 55, - w: 79, - x: 54, - y: 55, - z: 55, - A: 69, - B: 67, - C: 73, - D: 74, - E: 61, - F: 58, - G: 76, - H: 75, - I: 28, - J: 55, - K: 67, - L: 58, - M: 89, - N: 75, - O: 78, - P: 65, - Q: 78, - R: 67, - S: 65, - T: 65, - U: 75, - V: 69, - W: 98, - X: 69, - Y: 67, - Z: 67, - 0: 64, - 1: 48, - 2: 62, - 3: 64, - 4: 66, - 5: 63, - 6: 65, - 7: 58, - 8: 65, - 9: 65, - " ": 29, - "!": 32, - '"': 49, - "'": 31, - "(": 39, - ")": 39, - ",": 31, - "-": 48, - ".": 31, - "/": 32, - ":": 31, - ";": 31, - "?": 52, - "\u2018": 31, - "\u2019": 31, - "\u201C": 47, - "\u201D": 47, - "\u2026": 82 -}; -function defaultWidth(text2, start2 = 0, end = text2.length) { - let sum2 = 0; - for (let i = start2; i < end; i = readCharacter(text2, i)) { - sum2 += defaultWidthMap[text2[i]] ?? (isPictographic(text2, i) ? 120 : defaultWidthMap.e); - } - return sum2; -} -function monospaceWidth(text2, start2 = 0, end = text2.length) { - let sum2 = 0; - for (let i = start2; i < end; i = readCharacter(text2, i)) { - sum2 += isPictographic(text2, i) ? 126 : 63; - } - return sum2; -} -function splitter({ monospace, lineWidth, textOverflow }) { - if (textOverflow != null || lineWidth == Infinity) return (text2) => text2.split(/\r\n?|\n/g); - const widthof = monospace ? monospaceWidth : defaultWidth; - const maxWidth = lineWidth * 100; - return (text2) => lineWrap(text2, maxWidth, widthof); -} -function clipper({ monospace, lineWidth, textOverflow }) { - if (textOverflow == null || lineWidth == Infinity) return (text2) => text2; - const widthof = monospace ? monospaceWidth : defaultWidth; - const maxWidth = lineWidth * 100; - switch (textOverflow) { - case "clip-start": - return (text2) => clipStart(text2, maxWidth, widthof, ""); - case "clip-end": - return (text2) => clipEnd(text2, maxWidth, widthof, ""); - case "ellipsis-start": - return (text2) => clipStart(text2, maxWidth, widthof, ellipsis); - case "ellipsis-middle": - return (text2) => clipMiddle(text2, maxWidth, widthof, ellipsis); - case "ellipsis-end": - return (text2) => clipEnd(text2, maxWidth, widthof, ellipsis); - } -} -var ellipsis = "\u2026"; -function cut(text2, width, widthof, inset) { - const I = []; - let w = 0; - for (let i = 0, j = 0, n = text2.length; i < n; i = j) { - j = readCharacter(text2, i); - const l = widthof(text2, i, j); - if (w + l > width) { - w += inset; - while (w > width && i > 0) j = i, i = I.pop(), w -= widthof(text2, i, j); - return [i, width - w]; - } - w += l; - I.push(i); - } - return [-1, 0]; -} -function clipEnd(text2, width, widthof, ellipsis2) { - text2 = text2.trim(); - const e = widthof(ellipsis2); - const [i] = cut(text2, width, widthof, e); - return i < 0 ? text2 : text2.slice(0, i).trimEnd() + ellipsis2; -} -function clipMiddle(text2, width, widthof, ellipsis2) { - text2 = text2.trim(); - const w = widthof(text2); - if (w <= width) return text2; - const e = widthof(ellipsis2) / 2; - const [i, ei] = cut(text2, width / 2, widthof, e); - const [j] = cut(text2, w - width / 2 - ei + e, widthof, -e); - return j < 0 ? ellipsis2 : text2.slice(0, i).trimEnd() + ellipsis2 + text2.slice(readCharacter(text2, j)).trimStart(); -} -function clipStart(text2, width, widthof, ellipsis2) { - text2 = text2.trim(); - const w = widthof(text2); - if (w <= width) return text2; - const e = widthof(ellipsis2); - const [j] = cut(text2, w - width + e, widthof, -e); - return j < 0 ? ellipsis2 : ellipsis2 + text2.slice(readCharacter(text2, j)).trimStart(); -} -var reCombiner = /[\p{Combining_Mark}\p{Emoji_Modifier}]+/uy; -var rePictographic = /\p{Extended_Pictographic}/uy; -function readCharacter(text2, i) { - i += isSurrogatePair(text2, i) ? 2 : 1; - if (isCombiner(text2, i)) i = reCombiner.lastIndex; - if (isZeroWidthJoiner(text2, i)) return readCharacter(text2, i + 1); - return i; -} -function isAscii(text2, i) { - return text2.charCodeAt(i) < 128; -} -function isSurrogatePair(text2, i) { - const hi = text2.charCodeAt(i); - if (hi >= 55296 && hi < 56320) { - const lo = text2.charCodeAt(i + 1); - return lo >= 56320 && lo < 57344; - } - return false; -} -function isZeroWidthJoiner(text2, i) { - return text2.charCodeAt(i) === 8205; -} -function isCombiner(text2, i) { - return isAscii(text2, i) ? false : (reCombiner.lastIndex = i, reCombiner.test(text2)); -} -function isPictographic(text2, i) { - return isAscii(text2, i) ? false : (rePictographic.lastIndex = i, rePictographic.test(text2)); -} - -// node_modules/@observablehq/plot/src/marks/vector.js -var defaults3 = { - ariaLabel: "vector", - fill: "none", - stroke: "currentColor", - strokeWidth: 1.5, - strokeLinejoin: "round", - strokeLinecap: "round" -}; -var defaultRadius = 3.5; -var wingRatio = defaultRadius * 5; -var shapeArrow = { - draw(context, l, r) { - const wing = l * r / wingRatio; - context.moveTo(0, 0); - context.lineTo(0, -l); - context.moveTo(-wing, wing - l); - context.lineTo(0, -l); - context.lineTo(wing, wing - l); - } -}; -var shapeSpike = { - draw(context, l, r) { - context.moveTo(-r, 0); - context.lineTo(0, -l); - context.lineTo(r, 0); - } -}; -var shapes = /* @__PURE__ */ new Map([ - ["arrow", shapeArrow], - ["spike", shapeSpike] -]); -function isShapeObject(value) { - return value && typeof value.draw === "function"; -} -function maybeShape(shape) { - if (isShapeObject(shape)) return shape; - const value = shapes.get(`${shape}`.toLowerCase()); - if (value) return value; - throw new Error(`invalid shape: ${shape}`); -} -var Vector = class extends Mark { - constructor(data, options = {}) { - const { x: x2, y: y2, r = defaultRadius, length: length3, rotate, shape = shapeArrow, anchor = "middle", frameAnchor } = options; - const [vl, cl] = maybeNumberChannel(length3, 12); - const [vr, cr] = maybeNumberChannel(rotate, 0); - super( - data, - { - x: { value: x2, scale: "x", optional: true }, - y: { value: y2, scale: "y", optional: true }, - length: { value: vl, scale: "length", optional: true }, - rotate: { value: vr, optional: true } - }, - options, - defaults3 - ); - this.r = +r; - this.length = cl; - this.rotate = cr; - this.shape = maybeShape(shape); - this.anchor = keyword(anchor, "anchor", ["start", "middle", "end"]); - this.frameAnchor = maybeFrameAnchor(frameAnchor); - } - render(index2, scales, channels, dimensions, context) { - const { x: x2, y: y2 } = scales; - const { x: X3, y: Y3, length: L, rotate: A5 } = channels; - const { length: length3, rotate, anchor, shape, r } = this; - const [cx, cy] = applyFrameAnchor(this, dimensions); - return create2("svg:g", context).call(applyIndirectStyles, this, dimensions, context).call(applyTransform, this, { x: X3 && x2, y: Y3 && y2 }).call( - (g) => g.selectAll().data(index2).enter().append("path").call(applyDirectStyles, this).attr( - "transform", - template`translate(${X3 ? (i) => X3[i] : cx},${Y3 ? (i) => Y3[i] : cy})${A5 ? (i) => ` rotate(${A5[i]})` : rotate ? ` rotate(${rotate})` : ``}${anchor === "start" ? `` : anchor === "end" ? L ? (i) => ` translate(0,${L[i]})` : ` translate(0,${length3})` : L ? (i) => ` translate(0,${L[i] / 2})` : ` translate(0,${length3 / 2})`}` - ).attr( - "d", - L ? (i) => { - const p = pathRound(); - shape.draw(p, L[i], r); - return p; - } : (() => { - const p = pathRound(); - shape.draw(p, length3, r); - return p; - })() - ).call(applyChannelStyles, this, channels) - ).node(); - } -}; -function vectorX(data, options = {}) { - const { x: x2 = identity6, ...rest } = options; - return new Vector(data, { ...rest, x: x2 }); -} -function vectorY(data, options = {}) { - const { y: y2 = identity6, ...rest } = options; - return new Vector(data, { ...rest, y: y2 }); -} - -// node_modules/@observablehq/plot/src/marks/axis.js -function maybeData(data, options) { - if (arguments.length < 2 && !isIterable(data)) options = data, data = null; - if (options === void 0) options = {}; - return [data, options]; -} -function maybeAnchor2({ anchor } = {}, anchors) { - return anchor === void 0 ? anchors[0] : keyword(anchor, "anchor", anchors); -} -function anchorY2(options) { - return maybeAnchor2(options, ["left", "right"]); -} -function anchorFy(options) { - return maybeAnchor2(options, ["right", "left"]); -} -function anchorX2(options) { - return maybeAnchor2(options, ["bottom", "top"]); -} -function anchorFx(options) { - return maybeAnchor2(options, ["top", "bottom"]); -} -function axisY() { - const [data, options] = maybeData(...arguments); - return axisKy("y", anchorY2(options), data, options); -} -function axisFy() { - const [data, options] = maybeData(...arguments); - return axisKy("fy", anchorFy(options), data, options); -} -function axisX() { - const [data, options] = maybeData(...arguments); - return axisKx("x", anchorX2(options), data, options); -} -function axisFx() { - const [data, options] = maybeData(...arguments); - return axisKx("fx", anchorFx(options), data, options); -} -function axisKy(k2, anchor, data, { - color: color3 = "currentColor", - opacity: opacity2 = 1, - stroke = color3, - strokeOpacity = opacity2, - strokeWidth = 1, - fill = color3, - fillOpacity = opacity2, - textAnchor, - textStroke, - textStrokeOpacity, - textStrokeWidth, - tickSize = k2 === "y" ? 6 : 0, - tickPadding, - tickRotate, - x: x2, - margin, - marginTop = margin === void 0 ? 20 : margin, - marginRight = margin === void 0 ? anchor === "right" ? 40 : 0 : margin, - marginBottom = margin === void 0 ? 20 : margin, - marginLeft = margin === void 0 ? anchor === "left" ? 40 : 0 : margin, - label, - labelAnchor, - labelArrow, - labelOffset, - ariaLabel = `${k2}-axis`, - ...options -}) { - tickSize = number5(tickSize); - tickPadding = number5(tickPadding); - tickRotate = number5(tickRotate); - if (labelAnchor !== void 0) labelAnchor = keyword(labelAnchor, "labelAnchor", ["center", "top", "bottom"]); - labelArrow = maybeLabelArrow(labelArrow); - return marks( - tickSize && !isNoneish(stroke) ? axisTickKy(k2, anchor, data, { - stroke, - strokeOpacity, - strokeWidth, - tickSize, - tickPadding, - tickRotate, - x: x2, - ariaLabel, - ...options - }) : null, - !isNoneish(fill) ? axisTextKy(k2, anchor, data, { - fill, - fillOpacity, - stroke: textStroke, - strokeOpacity: textStrokeOpacity, - strokeWidth: textStrokeWidth, - textAnchor, - tickSize, - tickPadding, - tickRotate, - x: x2, - marginTop, - marginRight, - marginBottom, - marginLeft, - ariaLabel, - ...options - }) : null, - !isNoneish(fill) && label !== null ? text( - [], - labelOptions({ fill, fillOpacity, ...options }, function(data2, facets, channels, scales, dimensions) { - const scale = scales[k2]; - const { marginTop: marginTop2, marginRight: marginRight2, marginBottom: marginBottom2, marginLeft: marginLeft2 } = k2 === "y" && dimensions.inset || dimensions; - const cla = labelAnchor ?? (scale.bandwidth ? "center" : "top"); - const clo = labelOffset ?? (anchor === "right" ? marginRight2 : marginLeft2) - 3; - if (cla === "center") { - this.textAnchor = void 0; - this.lineAnchor = anchor === "right" ? "bottom" : "top"; - this.frameAnchor = anchor; - this.rotate = -90; - } else { - this.textAnchor = anchor === "right" ? "end" : "start"; - this.lineAnchor = cla; - this.frameAnchor = `${cla}-${anchor}`; - this.rotate = 0; - } - this.dy = cla === "top" ? 3 - marginTop2 : cla === "bottom" ? marginBottom2 - 3 : 0; - this.dx = anchor === "right" ? clo : -clo; - this.ariaLabel = `${ariaLabel} label`; - return { - facets: [[0]], - channels: { text: { value: [formatAxisLabel(k2, scale, { anchor, label, labelAnchor: cla, labelArrow })] } } - }; - }) - ) : null - ); -} -function axisKx(k2, anchor, data, { - color: color3 = "currentColor", - opacity: opacity2 = 1, - stroke = color3, - strokeOpacity = opacity2, - strokeWidth = 1, - fill = color3, - fillOpacity = opacity2, - textAnchor, - textStroke, - textStrokeOpacity, - textStrokeWidth, - tickSize = k2 === "x" ? 6 : 0, - tickPadding, - tickRotate, - y: y2, - margin, - marginTop = margin === void 0 ? anchor === "top" ? 30 : 0 : margin, - marginRight = margin === void 0 ? 20 : margin, - marginBottom = margin === void 0 ? anchor === "bottom" ? 30 : 0 : margin, - marginLeft = margin === void 0 ? 20 : margin, - label, - labelAnchor, - labelArrow, - labelOffset, - ariaLabel = `${k2}-axis`, - ...options -}) { - tickSize = number5(tickSize); - tickPadding = number5(tickPadding); - tickRotate = number5(tickRotate); - if (labelAnchor !== void 0) labelAnchor = keyword(labelAnchor, "labelAnchor", ["center", "left", "right"]); - labelArrow = maybeLabelArrow(labelArrow); - return marks( - tickSize && !isNoneish(stroke) ? axisTickKx(k2, anchor, data, { - stroke, - strokeOpacity, - strokeWidth, - tickSize, - tickPadding, - tickRotate, - y: y2, - ariaLabel, - ...options - }) : null, - !isNoneish(fill) ? axisTextKx(k2, anchor, data, { - fill, - fillOpacity, - stroke: textStroke, - strokeOpacity: textStrokeOpacity, - strokeWidth: textStrokeWidth, - textAnchor, - tickSize, - tickPadding, - tickRotate, - y: y2, - marginTop, - marginRight, - marginBottom, - marginLeft, - ariaLabel, - ...options - }) : null, - !isNoneish(fill) && label !== null ? text( - [], - labelOptions({ fill, fillOpacity, ...options }, function(data2, facets, channels, scales, dimensions) { - const scale = scales[k2]; - const { marginTop: marginTop2, marginRight: marginRight2, marginBottom: marginBottom2, marginLeft: marginLeft2 } = k2 === "x" && dimensions.inset || dimensions; - const cla = labelAnchor ?? (scale.bandwidth ? "center" : "right"); - const clo = labelOffset ?? (anchor === "top" ? marginTop2 : marginBottom2) - 3; - if (cla === "center") { - this.frameAnchor = anchor; - this.textAnchor = void 0; - } else { - this.frameAnchor = `${anchor}-${cla}`; - this.textAnchor = cla === "right" ? "end" : "start"; - } - this.lineAnchor = anchor; - this.dy = anchor === "top" ? -clo : clo; - this.dx = cla === "right" ? marginRight2 - 3 : cla === "left" ? 3 - marginLeft2 : 0; - this.ariaLabel = `${ariaLabel} label`; - return { - facets: [[0]], - channels: { text: { value: [formatAxisLabel(k2, scale, { anchor, label, labelAnchor: cla, labelArrow })] } } - }; - }) - ) : null - ); -} -function axisTickKy(k2, anchor, data, { - strokeWidth = 1, - strokeLinecap = null, - strokeLinejoin = null, - facetAnchor = anchor + (k2 === "y" ? "-empty" : ""), - frameAnchor = anchor, - tickSize, - inset = 0, - insetLeft = inset, - insetRight = inset, - dx = 0, - y: y2 = k2 === "y" ? void 0 : null, - ariaLabel, - ...options -}) { - return axisMark( - vectorY, - k2, - data, - { - ariaLabel: `${ariaLabel} tick`, - ariaHidden: true - }, - { - strokeWidth, - strokeLinecap, - strokeLinejoin, - facetAnchor, - frameAnchor, - y: y2, - ...options, - dx: anchor === "left" ? +dx - offset + +insetLeft : +dx + offset - insetRight, - anchor: "start", - length: tickSize, - shape: anchor === "left" ? shapeTickLeft : shapeTickRight - } - ); -} -function axisTickKx(k2, anchor, data, { - strokeWidth = 1, - strokeLinecap = null, - strokeLinejoin = null, - facetAnchor = anchor + (k2 === "x" ? "-empty" : ""), - frameAnchor = anchor, - tickSize, - inset = 0, - insetTop = inset, - insetBottom = inset, - dy = 0, - x: x2 = k2 === "x" ? void 0 : null, - ariaLabel, - ...options -}) { - return axisMark( - vectorX, - k2, - data, - { - ariaLabel: `${ariaLabel} tick`, - ariaHidden: true - }, - { - strokeWidth, - strokeLinejoin, - strokeLinecap, - facetAnchor, - frameAnchor, - x: x2, - ...options, - dy: anchor === "bottom" ? +dy - offset - insetBottom : +dy + offset + +insetTop, - anchor: "start", - length: tickSize, - shape: anchor === "bottom" ? shapeTickBottom : shapeTickTop - } - ); -} -function axisTextKy(k2, anchor, data, { - facetAnchor = anchor + (k2 === "y" ? "-empty" : ""), - frameAnchor = anchor, - tickSize, - tickRotate = 0, - tickPadding = Math.max(3, 9 - tickSize) + (Math.abs(tickRotate) > 60 ? 4 * Math.cos(tickRotate * radians3) : 0), - text: text2, - textAnchor = Math.abs(tickRotate) > 60 ? "middle" : anchor === "left" ? "end" : "start", - lineAnchor = tickRotate > 60 ? "top" : tickRotate < -60 ? "bottom" : "middle", - fontVariant, - inset = 0, - insetLeft = inset, - insetRight = inset, - dx = 0, - ariaLabel, - y: y2 = k2 === "y" ? void 0 : null, - ...options -}) { - return axisMark( - textY, - k2, - data, - { ariaLabel: `${ariaLabel} tick label` }, - { - facetAnchor, - frameAnchor, - text: text2, - textAnchor, - lineAnchor, - fontVariant, - rotate: tickRotate, - y: y2, - ...options, - dx: anchor === "left" ? +dx - tickSize - tickPadding + +insetLeft : +dx + +tickSize + +tickPadding - insetRight - }, - function(scale, data2, ticks2, tickFormat2, channels) { - if (fontVariant === void 0) this.fontVariant = inferFontVariant3(scale); - if (text2 === void 0) channels.text = inferTextChannel(scale, data2, ticks2, tickFormat2, anchor); - } - ); -} -function axisTextKx(k2, anchor, data, { - facetAnchor = anchor + (k2 === "x" ? "-empty" : ""), - frameAnchor = anchor, - tickSize, - tickRotate = 0, - tickPadding = Math.max(3, 9 - tickSize) + (Math.abs(tickRotate) >= 10 ? 4 * Math.cos(tickRotate * radians3) : 0), - text: text2, - textAnchor = Math.abs(tickRotate) >= 10 ? tickRotate < 0 ^ anchor === "bottom" ? "start" : "end" : "middle", - lineAnchor = Math.abs(tickRotate) >= 10 ? "middle" : anchor === "bottom" ? "top" : "bottom", - fontVariant, - inset = 0, - insetTop = inset, - insetBottom = inset, - dy = 0, - x: x2 = k2 === "x" ? void 0 : null, - ariaLabel, - ...options -}) { - return axisMark( - textX, - k2, - data, - { ariaLabel: `${ariaLabel} tick label` }, - { - facetAnchor, - frameAnchor, - text: text2 === void 0 ? null : text2, - textAnchor, - lineAnchor, - fontVariant, - rotate: tickRotate, - x: x2, - ...options, - dy: anchor === "bottom" ? +dy + +tickSize + +tickPadding - insetBottom : +dy - tickSize - tickPadding + +insetTop - }, - function(scale, data2, ticks2, tickFormat2, channels) { - if (fontVariant === void 0) this.fontVariant = inferFontVariant3(scale); - if (text2 === void 0) channels.text = inferTextChannel(scale, data2, ticks2, tickFormat2, anchor); - } - ); -} -function gridY() { - const [data, options] = maybeData(...arguments); - return gridKy("y", anchorY2(options), data, options); -} -function gridFy() { - const [data, options] = maybeData(...arguments); - return gridKy("fy", anchorFy(options), data, options); -} -function gridX() { - const [data, options] = maybeData(...arguments); - return gridKx("x", anchorX2(options), data, options); -} -function gridFx() { - const [data, options] = maybeData(...arguments); - return gridKx("fx", anchorFx(options), data, options); -} -function gridKy(k2, anchor, data, { - y: y2 = k2 === "y" ? void 0 : null, - x: x2 = null, - x1: x12 = anchor === "left" ? x2 : null, - x2: x22 = anchor === "right" ? x2 : null, - ariaLabel = `${k2}-grid`, - ariaHidden = true, - ...options -}) { - return axisMark(ruleY, k2, data, { ariaLabel, ariaHidden }, { y: y2, x1: x12, x2: x22, ...gridDefaults(options) }); -} -function gridKx(k2, anchor, data, { - x: x2 = k2 === "x" ? void 0 : null, - y: y2 = null, - y1: y12 = anchor === "top" ? y2 : null, - y2: y22 = anchor === "bottom" ? y2 : null, - ariaLabel = `${k2}-grid`, - ariaHidden = true, - ...options -}) { - return axisMark(ruleX, k2, data, { ariaLabel, ariaHidden }, { x: x2, y1: y12, y2: y22, ...gridDefaults(options) }); -} -function gridDefaults({ - color: color3 = "currentColor", - opacity: opacity2 = 0.1, - stroke = color3, - strokeOpacity = opacity2, - strokeWidth = 1, - ...options -}) { - return { stroke, strokeOpacity, strokeWidth, ...options }; -} -function labelOptions({ - fill, - fillOpacity, - fontFamily, - fontSize, - fontStyle, - fontVariant, - fontWeight, - monospace, - pointerEvents, - shapeRendering, - clip = false -}, initializer2) { - [, fill] = maybeColorChannel(fill); - [, fillOpacity] = maybeNumberChannel(fillOpacity); - return { - facet: "super", - x: null, - y: null, - fill, - fillOpacity, - fontFamily, - fontSize, - fontStyle, - fontVariant, - fontWeight, - monospace, - pointerEvents, - shapeRendering, - clip, - initializer: initializer2 - }; -} -function axisMark(mark, k2, data, properties, options, initialize) { - let channels; - function axisInitializer(data2, facets, _channels, scales, dimensions, context) { - const initializeFacets = data2 == null && (k2 === "fx" || k2 === "fy"); - const { [k2]: scale } = scales; - if (!scale) throw new Error(`missing scale: ${k2}`); - const domain = scale.domain(); - let { interval: interval2, ticks: ticks2, tickFormat: tickFormat2, tickSpacing = k2 === "x" ? 80 : 35 } = options; - if (typeof ticks2 === "string" && hasTemporalDomain(scale)) interval2 = ticks2, ticks2 = void 0; - if (ticks2 === void 0) ticks2 = maybeRangeInterval(interval2, scale.type) ?? inferTickCount(scale, tickSpacing); - if (data2 == null) { - if (isIterable(ticks2)) { - data2 = arrayify2(ticks2); - } else if (isInterval(ticks2)) { - data2 = inclusiveRange(ticks2, ...extent(domain)); - } else if (scale.interval) { - let interval3 = scale.interval; - if (scale.ticks) { - const [min4, max3] = extent(domain); - const n = (max3 - min4) / interval3[intervalDuration]; - interval3 = generalizeTimeInterval(interval3, n / ticks2) ?? interval3; - data2 = inclusiveRange(interval3, min4, max3); - } else { - data2 = domain; - const n = data2.length; - interval3 = generalizeTimeInterval(interval3, n / ticks2) ?? interval3; - if (interval3 !== scale.interval) data2 = inclusiveRange(interval3, ...extent(data2)); - } - if (interval3 === scale.interval) { - const n = Math.round(data2.length / ticks2); - if (n > 1) data2 = data2.filter((d, i) => i % n === 0); - } - } else if (scale.ticks) { - data2 = scale.ticks(ticks2); - } else { - data2 = domain; - } - if (!scale.ticks && data2.length && data2 !== domain) { - const domainSet = new InternSet(domain); - data2 = data2.filter((d) => domainSet.has(d)); - if (!data2.length) warn(`Warning: the ${k2}-axis ticks appear to not align with the scale domain, resulting in no ticks. Try different ticks?`); - } - if (k2 === "y" || k2 === "x") { - facets = [range2(data2)]; - } else { - channels[k2] = { scale: k2, value: identity6 }; - } - } - initialize?.call(this, scale, data2, ticks2, tickFormat2, channels); - const initializedChannels = Object.fromEntries( - Object.entries(channels).map(([name, channel]) => { - return [name, { ...channel, value: valueof(data2, channel.value) }]; - }) - ); - if (initializeFacets) facets = context.filterFacets(data2, initializedChannels); - return { data: data2, facets, channels: initializedChannels }; - } - const basicInitializer = initializer(options).initializer; - const m = mark(data, initializer({ ...options, initializer: axisInitializer }, basicInitializer)); - if (data == null) { - channels = m.channels; - m.channels = {}; - } else { - channels = {}; - } - if (properties !== void 0) Object.assign(m, properties); - if (m.clip === void 0) m.clip = false; - return m; -} -function inferTickCount(scale, tickSpacing) { - const [min4, max3] = extent(scale.range()); - return (max3 - min4) / tickSpacing; -} -function inferTextChannel(scale, data, ticks2, tickFormat2, anchor) { - return { value: inferTickFormat(scale, data, ticks2, tickFormat2, anchor) }; -} -function inferTickFormat(scale, data, ticks2, tickFormat2, anchor) { - return typeof tickFormat2 === "function" && !(scale.type === "log" && scale.tickFormat) ? tickFormat2 : tickFormat2 === void 0 && data && isTemporal(data) ? inferTimeFormat(scale.type, data, anchor) ?? formatDefault : scale.tickFormat ? scale.tickFormat(typeof ticks2 === "number" ? ticks2 : null, tickFormat2) : typeof tickFormat2 === "string" && scale.domain().length > 0 ? (isTemporal(scale.domain()) ? utcFormat : format)(tickFormat2) : tickFormat2 === void 0 ? formatDefault : constant(tickFormat2); -} -function inclusiveRange(interval2, min4, max3) { - return interval2.range(min4, interval2.offset(interval2.floor(max3))); -} -var shapeTickBottom = { - draw(context, l) { - context.moveTo(0, 0); - context.lineTo(0, l); - } -}; -var shapeTickTop = { - draw(context, l) { - context.moveTo(0, 0); - context.lineTo(0, -l); - } -}; -var shapeTickLeft = { - draw(context, l) { - context.moveTo(0, 0); - context.lineTo(-l, 0); - } -}; -var shapeTickRight = { - draw(context, l) { - context.moveTo(0, 0); - context.lineTo(l, 0); - } -}; -function inferFontVariant3(scale) { - return scale.bandwidth && !scale.interval ? void 0 : "tabular-nums"; -} -function formatAxisLabel(k2, scale, { anchor, label = scale.label, labelAnchor, labelArrow } = {}) { - if (label == null || label.inferred && hasTemporalDomain(scale) && /^(date|time|year)$/i.test(label)) return; - label = String(label); - if (labelArrow === "auto") labelArrow = (!scale.bandwidth || scale.interval) && !/[↑↓→←]/.test(label); - if (!labelArrow) return label; - if (labelArrow === true) { - const order = inferScaleOrder(scale); - if (order) - labelArrow = /x$/.test(k2) || labelAnchor === "center" ? /x$/.test(k2) === order < 0 ? "left" : "right" : order < 0 ? "up" : "down"; - } - switch (labelArrow) { - case "left": - return `\u2190 ${label}`; - case "right": - return `${label} \u2192`; - case "up": - return anchor === "right" ? `${label} \u2191` : `\u2191 ${label}`; - case "down": - return anchor === "right" ? `${label} \u2193` : `\u2193 ${label}`; - } - return label; -} -function maybeLabelArrow(labelArrow = "auto") { - return isNoneish(labelArrow) ? false : typeof labelArrow === "boolean" ? labelArrow : keyword(labelArrow, "labelArrow", ["auto", "up", "right", "down", "left"]); -} -function hasTemporalDomain(scale) { - return isTemporal(scale.domain()); -} - -// node_modules/@observablehq/plot/src/legends/swatches.js -function maybeScale(scale, key) { - if (key == null) return key; - const s2 = scale(key); - if (!s2) throw new Error(`scale not found: ${key}`); - return s2; -} -function legendSwatches(color3, { opacity: opacity2, ...options } = {}) { - if (!isOrdinalScale(color3) && !isThresholdScale(color3)) - throw new Error(`swatches legend requires ordinal or threshold color scale (not ${color3.type})`); - return legendItems( - color3, - options, - (selection2, scale, width, height) => selection2.append("svg").attr("width", width).attr("height", height).attr("fill", scale.scale).attr("fill-opacity", maybeNumberChannel(opacity2)[1]).append("rect").attr("width", "100%").attr("height", "100%") - ); -} -function legendSymbols(symbol2, { - fill = symbol2.hint?.fill !== void 0 ? symbol2.hint.fill : "none", - fillOpacity = 1, - stroke = symbol2.hint?.stroke !== void 0 ? symbol2.hint.stroke : isNoneish(fill) ? "currentColor" : "none", - strokeOpacity = 1, - strokeWidth = 1.5, - r = 4.5, - ...options -} = {}, scale) { - const [vf, cf] = maybeColorChannel(fill); - const [vs, cs] = maybeColorChannel(stroke); - const sf = maybeScale(scale, vf); - const ss = maybeScale(scale, vs); - const size = r * r * Math.PI; - fillOpacity = maybeNumberChannel(fillOpacity)[1]; - strokeOpacity = maybeNumberChannel(strokeOpacity)[1]; - strokeWidth = maybeNumberChannel(strokeWidth)[1]; - return legendItems( - symbol2, - options, - (selection2, scale2, width, height) => selection2.append("svg").attr("viewBox", "-8 -8 16 16").attr("width", width).attr("height", height).attr("fill", vf === "color" ? (d) => sf.scale(d) : cf).attr("fill-opacity", fillOpacity).attr("stroke", vs === "color" ? (d) => ss.scale(d) : cs).attr("stroke-opacity", strokeOpacity).attr("stroke-width", strokeWidth).append("path").attr("d", (d) => { - const p = pathRound(); - symbol2.scale(d).draw(p, size); - return p; - }) - ); -} -function legendItems(scale, options = {}, swatch) { - let { - columns, - tickFormat: tickFormat2, - fontVariant = inferFontVariant(scale), - // TODO label, - swatchSize = 15, - swatchWidth = swatchSize, - swatchHeight = swatchSize, - marginLeft = 0, - className, - style, - width - } = options; - const context = createContext(options); - className = maybeClassName(className); - tickFormat2 = inferTickFormat(scale.scale, scale.domain, void 0, tickFormat2); - const swatches = create2("div", context).attr( - "class", - `${className}-swatches ${className}-swatches-${columns != null ? "columns" : "wrap"}` - ); - let extraStyle; - if (columns != null) { - extraStyle = `:where(.${className}-swatches-columns .${className}-swatch) { - display: flex; - align-items: center; - break-inside: avoid; - padding-bottom: 1px; -} -:where(.${className}-swatches-columns .${className}-swatch::before) { - flex-shrink: 0; -} -:where(.${className}-swatches-columns .${className}-swatch-label) { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -}`; - swatches.style("columns", columns).selectAll().data(scale.domain).enter().append("div").attr("class", `${className}-swatch`).call(swatch, scale, swatchWidth, swatchHeight).call( - (item) => item.append("div").attr("class", `${className}-swatch-label`).attr("title", tickFormat2).text(tickFormat2) - ); - } else { - extraStyle = `:where(.${className}-swatches-wrap) { - display: flex; - align-items: center; - min-height: 33px; - flex-wrap: wrap; -} -:where(.${className}-swatches-wrap .${className}-swatch) { - display: inline-flex; - align-items: center; - margin-right: 1em; -}`; - swatches.selectAll().data(scale.domain).enter().append("span").attr("class", `${className}-swatch`).call(swatch, scale, swatchWidth, swatchHeight).append(function() { - return this.ownerDocument.createTextNode(tickFormat2.apply(this, arguments)); - }); - } - return swatches.call( - (div) => div.insert("style", "*").text( - `:where(.${className}-swatches) { - font-family: system-ui, sans-serif; - font-size: 10px; - margin-bottom: 0.5em; -} -:where(.${className}-swatch > svg) { - margin-right: 0.5em; - overflow: visible; -} -${extraStyle}` - ) - ).style("margin-left", marginLeft ? `${+marginLeft}px` : null).style("width", width === void 0 ? null : `${+width}px`).style("font-variant", impliedString(fontVariant, "normal")).call(applyInlineStyles, style).node(); -} - -// node_modules/@observablehq/plot/src/legends.js -var legendRegistry = /* @__PURE__ */ new Map([ - ["symbol", legendSymbols], - ["color", legendColor], - ["opacity", legendOpacity] -]); -function exposeLegends(scales, context, defaults9 = {}) { - return (key, options) => { - if (!legendRegistry.has(key)) throw new Error(`unknown legend type: ${key}`); - if (!(key in scales)) return; - return legendRegistry.get(key)(scales[key], legendOptions(context, defaults9[key], options), (key2) => scales[key2]); - }; -} -function legendOptions({ className, ...context }, { label, ticks: ticks2, tickFormat: tickFormat2 } = {}, options) { - return inherit2(options, { className, ...context }, { label, ticks: ticks2, tickFormat: tickFormat2 }); -} -function legendColor(color3, { legend = true, ...options }) { - if (legend === true) legend = color3.type === "ordinal" ? "swatches" : "ramp"; - if (color3.domain === void 0) return; - switch (`${legend}`.toLowerCase()) { - case "swatches": - return legendSwatches(color3, options); - case "ramp": - return legendRamp(color3, options); - default: - throw new Error(`unknown legend type: ${legend}`); - } -} -function legendOpacity({ type: type2, interpolate, ...scale }, { legend = true, color: color3 = rgb(0, 0, 0), ...options }) { - if (!interpolate) throw new Error(`${type2} opacity scales are not supported`); - if (legend === true) legend = "ramp"; - if (`${legend}`.toLowerCase() !== "ramp") throw new Error(`${legend} opacity legends are not supported`); - return legendColor({ type: type2, ...scale, interpolate: interpolateOpacity(color3) }, { legend, ...options }); -} -function interpolateOpacity(color3) { - const { r, g, b } = rgb(color3) || rgb(0, 0, 0); - return (t) => `rgba(${r},${g},${b},${t})`; -} -function createLegends(scales, context, options) { - const legends = []; - for (const [key, value] of legendRegistry) { - const o = options[key]; - if (o?.legend && key in scales) { - const legend = value(scales[key], legendOptions(context, scales[key], o), (key2) => scales[key2]); - if (legend != null) legends.push(legend); - } - } - return legends; -} - -// node_modules/@observablehq/plot/src/transforms/identity.js -function maybeIdentityY(options = {}, k2 = "y") { - return hasY(options) ? options : { ...options, [k2]: identity6 }; -} - -// node_modules/@observablehq/plot/src/transforms/exclusiveFacets.js -function exclusiveFacets(data, facets) { - if (facets.length === 1) return { data, facets }; - const n = lengthof(data); - const O = new Uint8Array(n); - let overlaps = 0; - for (const facet of facets) { - for (const i of facet) { - if (O[i]) ++overlaps; - O[i] = 1; - } - } - if (overlaps === 0) return { data, facets }; - data = slice2(data); - const R = data[reindex] = new Uint32Array(n + overlaps); - facets = facets.map((facet) => slice2(facet, Uint32Array)); - let j = n; - O.fill(0); - for (const facet of facets) { - for (let k2 = 0, m = facet.length; k2 < m; ++k2) { - const i = facet[k2]; - if (O[i]) facet[k2] = j, data[j] = data[i], R[j] = i, ++j; - else R[i] = i; - O[i] = 1; - } - } - return { data, facets }; -} - -// node_modules/@observablehq/plot/src/transforms/stack.js -function stackY(stackOptions = {}, options = {}) { - if (arguments.length === 1) [stackOptions, options] = mergeOptions(stackOptions); - const { x1: x12, x: x2 = x12, y: y2, ...rest } = options; - const [transform2, X3, y12, y22] = stack(x2, y2, "x", "y", stackOptions, rest); - return { ...transform2, x1: x12, x: X3, y1: y12, y2: y22, y: mid(y12, y22) }; -} -function maybeStackY({ y: y2, y1: y12, y2: y22, ...options } = {}) { - options = withTip(options, "x"); - if (y12 === void 0 && y22 === void 0) return stackY({ y: y2, ...options }); - [y12, y22] = maybeZero(y2, y12, y22); - return { ...options, y1: y12, y2: y22 }; -} -function mergeOptions(options) { - const { offset: offset2, order, reverse: reverse2, ...rest } = options; - return [{ offset: offset2, order, reverse: reverse2 }, rest]; -} -var lengthy = { length: true }; -function stack(x2, y2 = one2, kx2, ky2, { offset: offset2, order, reverse: reverse2 }, options) { - if (y2 === null) throw new Error(`stack requires ${ky2}`); - const z = maybeZ(options); - const [X3, setX] = maybeColumn(x2); - const [Y12, setY1] = column(y2); - const [Y22, setY2] = column(y2); - Y12.hint = Y22.hint = lengthy; - offset2 = maybeOffset(offset2); - order = maybeOrder2(order, offset2, ky2); - return [ - basic(options, (data, facets, plotOptions) => { - ({ data, facets } = exclusiveFacets(data, facets)); - const X4 = x2 == null ? void 0 : setX(maybeApplyInterval(valueof(data, x2), plotOptions?.[kx2])); - const Y3 = valueof(data, y2, Float64Array); - const Z = valueof(data, z); - const compare = order && order(data, X4, Y3, Z); - const n = lengthof(data); - const Y13 = setY1(new Float64Array(n)); - const Y23 = setY2(new Float64Array(n)); - const facetstacks = []; - for (const facet of facets) { - const stacks = X4 ? Array.from(group(facet, (i) => X4[i]).values()) : [facet]; - if (compare) for (const stack2 of stacks) stack2.sort(compare); - for (const stack2 of stacks) { - let yn = 0; - let yp = 0; - if (reverse2) stack2.reverse(); - for (const i of stack2) { - const y3 = Y3[i]; - if (y3 < 0) yn = Y23[i] = (Y13[i] = yn) + y3; - else if (y3 > 0) yp = Y23[i] = (Y13[i] = yp) + y3; - else Y23[i] = Y13[i] = yp; - } - } - facetstacks.push(stacks); - } - if (offset2) offset2(facetstacks, Y13, Y23, Z); - return { data, facets }; - }), - X3, - Y12, - Y22 - ]; -} -function maybeOffset(offset2) { - if (offset2 == null) return; - if (typeof offset2 === "function") return offset2; - switch (`${offset2}`.toLowerCase()) { - case "expand": - case "normalize": - return offsetExpand; - case "center": - case "silhouette": - return offsetCenter; - case "wiggle": - return offsetWiggle; - } - throw new Error(`unknown offset: ${offset2}`); -} -function extent2(stack2, Y22) { - let min4 = 0, max3 = 0; - for (const i of stack2) { - const y2 = Y22[i]; - if (y2 < min4) min4 = y2; - if (y2 > max3) max3 = y2; - } - return [min4, max3]; -} -function offsetExpand(facetstacks, Y12, Y22) { - for (const stacks of facetstacks) { - for (const stack2 of stacks) { - const [yn, yp] = extent2(stack2, Y22); - for (const i of stack2) { - const m = 1 / (yp - yn || 1); - Y12[i] = m * (Y12[i] - yn); - Y22[i] = m * (Y22[i] - yn); - } - } - } -} -function offsetCenter(facetstacks, Y12, Y22) { - for (const stacks of facetstacks) { - for (const stack2 of stacks) { - const [yn, yp] = extent2(stack2, Y22); - for (const i of stack2) { - const m = (yp + yn) / 2; - Y12[i] -= m; - Y22[i] -= m; - } - } - offsetZero(stacks, Y12, Y22); - } - offsetCenterFacets(facetstacks, Y12, Y22); -} -function offsetWiggle(facetstacks, Y12, Y22, Z) { - for (const stacks of facetstacks) { - const prev = new InternMap(); - let y2 = 0; - for (const stack2 of stacks) { - let j = -1; - const Fi = stack2.map((i) => Math.abs(Y22[i] - Y12[i])); - const Df = stack2.map((i) => { - j = Z ? Z[i] : ++j; - const value = Y22[i] - Y12[i]; - const diff = prev.has(j) ? value - prev.get(j) : 0; - prev.set(j, value); - return diff; - }); - const Cf1 = [0, ...cumsum(Df)]; - for (const i of stack2) { - Y12[i] += y2; - Y22[i] += y2; - } - const s1 = sum(Fi); - if (s1) y2 -= sum(Fi, (d, i) => (Df[i] / 2 + Cf1[i]) * d) / s1; - } - offsetZero(stacks, Y12, Y22); - } - offsetCenterFacets(facetstacks, Y12, Y22); -} -function offsetZero(stacks, Y12, Y22) { - const m = min(stacks, (stack2) => min(stack2, (i) => Y12[i])); - for (const stack2 of stacks) { - for (const i of stack2) { - Y12[i] -= m; - Y22[i] -= m; - } - } -} -function offsetCenterFacets(facetstacks, Y12, Y22) { - const n = facetstacks.length; - if (n === 1) return; - const facets = facetstacks.map((stacks) => stacks.flat()); - const m = facets.map((I) => (min(I, (i) => Y12[i]) + max(I, (i) => Y22[i])) / 2); - const m0 = min(m); - for (let j = 0; j < n; j++) { - const p = m0 - m[j]; - for (const i of facets[j]) { - Y12[i] += p; - Y22[i] += p; - } - } -} -function maybeOrder2(order, offset2, ky2) { - if (order === void 0 && offset2 === offsetWiggle) return orderInsideOut(ascendingDefined2); - if (order == null) return; - if (typeof order === "string") { - const negate = order.startsWith("-"); - const compare = negate ? descendingDefined : ascendingDefined2; - switch ((negate ? order.slice(1) : order).toLowerCase()) { - case "value": - case ky2: - return orderY(compare); - case "z": - return orderZ(compare); - case "sum": - return orderSum(compare); - case "appearance": - return orderAppearance(compare); - case "inside-out": - return orderInsideOut(compare); - } - return orderAccessor(field(order)); - } - if (typeof order === "function") return (order.length === 1 ? orderAccessor : orderComparator)(order); - if (isArray(order)) return orderGiven(order); - throw new Error(`invalid order: ${order}`); -} -function orderY(compare) { - return (data, X3, Y3) => (i, j) => compare(Y3[i], Y3[j]); -} -function orderZ(compare) { - return (data, X3, Y3, Z) => (i, j) => compare(Z[i], Z[j]); -} -function orderSum(compare) { - return orderZDomain( - compare, - (data, X3, Y3, Z) => groupSort( - range2(data), - (I) => sum(I, (i) => Y3[i]), - (i) => Z[i] - ) - ); -} -function orderAppearance(compare) { - return orderZDomain( - compare, - (data, X3, Y3, Z) => groupSort( - range2(data), - (I) => X3[greatest(I, (i) => Y3[i])], - (i) => Z[i] - ) - ); -} -function orderInsideOut(compare) { - return orderZDomain(compare, (data, X3, Y3, Z) => { - const I = range2(data); - const K2 = groupSort( - I, - (I2) => X3[greatest(I2, (i) => Y3[i])], - (i) => Z[i] - ); - const sums = rollup( - I, - (I2) => sum(I2, (i) => Y3[i]), - (i) => Z[i] - ); - const Kp = [], Kn = []; - let s2 = 0; - for (const k2 of K2) { - if (s2 < 0) { - s2 += sums.get(k2); - Kp.push(k2); - } else { - s2 -= sums.get(k2); - Kn.push(k2); - } - } - return Kn.reverse().concat(Kp); - }); -} -function orderAccessor(f) { - return (data) => { - const O = valueof(data, f); - return (i, j) => ascendingDefined2(O[i], O[j]); - }; -} -function orderComparator(f) { - return (data) => { - return isArray(data) ? (i, j) => f(data[i], data[j]) : (i, j) => f(data.get(i), data.get(j)); - }; -} -function orderGiven(domain) { - return orderZDomain(ascendingDefined2, () => domain); -} -function orderZDomain(compare, domain) { - return (data, X3, Y3, Z) => { - if (!Z) throw new Error("missing channel: z"); - const map5 = new InternMap(domain(data, X3, Y3, Z).map((d, i) => [d, i])); - return (i, j) => compare(map5.get(Z[i]), map5.get(Z[j])); - }; -} - -// node_modules/@observablehq/plot/src/marks/rect.js -var defaults4 = { - ariaLabel: "rect" -}; -var Rect = class extends Mark { - constructor(data, options = {}) { - const { x1: x12, y1: y12, x2, y2 } = options; - super( - data, - { - x1: { value: x12, scale: "x", type: x12 != null && x2 == null ? "band" : void 0, optional: true }, - y1: { value: y12, scale: "y", type: y12 != null && y2 == null ? "band" : void 0, optional: true }, - x2: { value: x2, scale: "x", optional: true }, - y2: { value: y2, scale: "y", optional: true } - }, - options, - defaults4 - ); - rectInsets(this, options); - rectRadii(this, options); - } - render(index2, scales, channels, dimensions, context) { - const { x: x2, y: y2 } = scales; - let { x1: X12, y1: Y12, x2: X22, y2: Y22 } = channels; - const { marginTop, marginRight, marginBottom, marginLeft, width, height } = dimensions; - const { projection: projection3 } = context; - const { insetTop, insetRight, insetBottom, insetLeft } = this; - const { rx, ry, rx1y1, rx1y2, rx2y1, rx2y2 } = this; - if ((X12 || X22) && !projection3 && isCollapsed(x2)) X12 = X22 = null; - if ((Y12 || Y22) && !projection3 && isCollapsed(y2)) Y12 = Y22 = null; - const bx = x2?.bandwidth ? x2.bandwidth() : 0; - const by = y2?.bandwidth ? y2.bandwidth() : 0; - return create2("svg:g", context).call(applyIndirectStyles, this, dimensions, context).call(applyTransform, this, {}, 0, 0).call( - (g) => g.selectAll().data(index2).enter().call( - rx1y1 || rx1y2 || rx2y1 || rx2y2 ? (g2) => g2.append("path").call(applyDirectStyles, this).call( - applyRoundedRect, - X12 && X22 ? (i) => X12[i] + (X22[i] < X12[i] ? -insetRight : insetLeft) : X12 ? (i) => X12[i] + insetLeft : marginLeft + insetLeft, - Y12 && Y22 ? (i) => Y12[i] + (Y22[i] < Y12[i] ? -insetBottom : insetTop) : Y12 ? (i) => Y12[i] + insetTop : marginTop + insetTop, - X12 && X22 ? (i) => X22[i] - (X22[i] < X12[i] ? -insetLeft : insetRight) : X12 ? (i) => X12[i] + bx - insetRight : width - marginRight - insetRight, - Y12 && Y22 ? (i) => Y22[i] - (Y22[i] < Y12[i] ? -insetTop : insetBottom) : Y12 ? (i) => Y12[i] + by - insetBottom : height - marginBottom - insetBottom, - this - ).call(applyChannelStyles, this, channels) : (g2) => g2.append("rect").call(applyDirectStyles, this).attr( - "x", - X12 ? X22 ? (i) => Math.min(X12[i], X22[i]) + insetLeft : (i) => X12[i] + insetLeft : marginLeft + insetLeft - ).attr( - "y", - Y12 ? Y22 ? (i) => Math.min(Y12[i], Y22[i]) + insetTop : (i) => Y12[i] + insetTop : marginTop + insetTop - ).attr( - "width", - X12 ? X22 ? (i) => Math.max(0, Math.abs(X22[i] - X12[i]) + bx - insetLeft - insetRight) : bx - insetLeft - insetRight : width - marginRight - marginLeft - insetRight - insetLeft - ).attr( - "height", - Y12 ? Y22 ? (i) => Math.max(0, Math.abs(Y12[i] - Y22[i]) + by - insetTop - insetBottom) : by - insetTop - insetBottom : height - marginTop - marginBottom - insetTop - insetBottom - ).call(applyAttr, "rx", rx).call(applyAttr, "ry", ry).call(applyChannelStyles, this, channels) - ) - ).node(); - } -}; -function rectInsets(mark, { inset = 0, insetTop = inset, insetRight = inset, insetBottom = inset, insetLeft = inset } = {}) { - mark.insetTop = number5(insetTop); - mark.insetRight = number5(insetRight); - mark.insetBottom = number5(insetBottom); - mark.insetLeft = number5(insetLeft); -} -function rectRadii(mark, { - r, - rx, - // for elliptic corners - ry, - // for elliptic corners - rx1 = r, - ry1 = r, - rx2 = r, - ry2 = r, - rx1y1 = rx1 !== void 0 ? +rx1 : ry1 !== void 0 ? +ry1 : 0, - rx1y2 = rx1 !== void 0 ? +rx1 : ry2 !== void 0 ? +ry2 : 0, - rx2y1 = rx2 !== void 0 ? +rx2 : ry1 !== void 0 ? +ry1 : 0, - rx2y2 = rx2 !== void 0 ? +rx2 : ry2 !== void 0 ? +ry2 : 0 -} = {}) { - if (rx1y1 || rx1y2 || rx2y1 || rx2y2) { - mark.rx1y1 = rx1y1; - mark.rx1y2 = rx1y2; - mark.rx2y1 = rx2y1; - mark.rx2y2 = rx2y2; - } else { - mark.rx = impliedString(rx, "auto"); - mark.ry = impliedString(ry, "auto"); - } -} -function applyRoundedRect(selection2, X12, Y12, X22, Y22, mark) { - const { rx1y1: r11, rx1y2: r12, rx2y1: r21, rx2y2: r22 } = mark; - if (typeof X12 !== "function") X12 = constant(X12); - if (typeof Y12 !== "function") Y12 = constant(Y12); - if (typeof X22 !== "function") X22 = constant(X22); - if (typeof Y22 !== "function") Y22 = constant(Y22); - const rx = Math.max(Math.abs(r11 + r21), Math.abs(r12 + r22)); - const ry = Math.max(Math.abs(r11 + r12), Math.abs(r21 + r22)); - selection2.attr("d", (i) => { - const x12 = X12(i); - const y12 = Y12(i); - const x2 = X22(i); - const y2 = Y22(i); - const ix = x12 > x2; - const iy = y12 > y2; - const l = ix ? x2 : x12; - const r = ix ? x12 : x2; - const t = iy ? y2 : y12; - const b = iy ? y12 : y2; - const k2 = Math.min(1, (r - l) / rx, (b - t) / ry); - const tl = k2 * (ix ? iy ? r22 : r21 : iy ? r12 : r11); - const tr = k2 * (ix ? iy ? r12 : r11 : iy ? r22 : r21); - const br = k2 * (ix ? iy ? r11 : r12 : iy ? r21 : r22); - const bl = k2 * (ix ? iy ? r21 : r22 : iy ? r11 : r12); - return `M${l},${t + biasY(tl, bl)}A${tl},${tl} 0 0 ${tl < 0 ? 0 : 1} ${l + biasX(tl, bl)},${t}H${r - biasX(tr, br)}A${tr},${tr} 0 0 ${tr < 0 ? 0 : 1} ${r},${t + biasY(tr, br)}V${b - biasY(br, tr)}A${br},${br} 0 0 ${br < 0 ? 0 : 1} ${r - biasX(br, tr)},${b}H${l + biasX(bl, tl)}A${bl},${bl} 0 0 ${bl < 0 ? 0 : 1} ${l},${b - biasY(bl, tl)}Z`; - }); -} -function biasX(r1, r2) { - return r2 < 0 ? r1 : Math.abs(r1); -} -function biasY(r1, r2) { - return r2 < 0 ? Math.abs(r1) : r1; -} -function rectY(data, options = {}) { - if (!hasXY(options)) options = { ...options, x: indexOf, y2: identity6, interval: 1 }; - return new Rect(data, maybeStackY(maybeTrivialIntervalX(maybeIdentityY(options)))); -} - -// node_modules/@observablehq/plot/src/marks/frame.js -var defaults5 = { - ariaLabel: "frame", - fill: "none", - stroke: "currentColor", - clip: false -}; -var lineDefaults = { - ariaLabel: "frame", - fill: null, - stroke: "currentColor", - strokeLinecap: "square", - clip: false -}; -var Frame = class extends Mark { - constructor(options = {}) { - const { anchor = null } = options; - super(singleton, void 0, options, anchor == null ? defaults5 : lineDefaults); - this.anchor = maybeKeyword(anchor, "anchor", ["top", "right", "bottom", "left"]); - rectInsets(this, options); - if (!anchor) rectRadii(this, options); - } - render(index2, scales, channels, dimensions, context) { - const { marginTop, marginRight, marginBottom, marginLeft, width, height } = dimensions; - const { anchor, insetTop, insetRight, insetBottom, insetLeft } = this; - const { rx, ry, rx1y1, rx1y2, rx2y1, rx2y2 } = this; - const x12 = marginLeft + insetLeft; - const x2 = width - marginRight - insetRight; - const y12 = marginTop + insetTop; - const y2 = height - marginBottom - insetBottom; - return create2(anchor ? "svg:line" : rx1y1 || rx1y2 || rx2y1 || rx2y2 ? "svg:path" : "svg:rect", context).datum(0).call(applyIndirectStyles, this, dimensions, context).call(applyDirectStyles, this).call(applyChannelStyles, this, channels).call(applyTransform, this, {}).call( - anchor === "left" ? (line2) => line2.attr("x1", x12).attr("x2", x12).attr("y1", y12).attr("y2", y2) : anchor === "right" ? (line2) => line2.attr("x1", x2).attr("x2", x2).attr("y1", y12).attr("y2", y2) : anchor === "top" ? (line2) => line2.attr("x1", x12).attr("x2", x2).attr("y1", y12).attr("y2", y12) : anchor === "bottom" ? (line2) => line2.attr("x1", x12).attr("x2", x2).attr("y1", y2).attr("y2", y2) : rx1y1 || rx1y2 || rx2y1 || rx2y2 ? (path2) => path2.call(applyRoundedRect, x12, y12, x2, y2, this) : (rect2) => rect2.attr("x", x12).attr("y", y12).attr("width", x2 - x12).attr("height", y2 - y12).attr("rx", rx).attr("ry", ry) - ).node(); - } -}; -function frame2(options) { - return new Frame(options); -} - -// node_modules/@observablehq/plot/src/marks/tip.js -var defaults6 = { - ariaLabel: "tip", - fill: "var(--plot-background)", - stroke: "currentColor" -}; -var ignoreChannels = /* @__PURE__ */ new Set(["geometry", "href", "src", "ariaLabel", "scales"]); -var Tip = class extends Mark { - constructor(data, options = {}) { - if (options.tip) options = { ...options, tip: false }; - if (options.title === void 0 && isIterable(data) && isTextual(data)) options = { ...options, title: identity6 }; - const { - x: x2, - y: y2, - x1: x12, - x2: x22, - y1: y12, - y2: y22, - anchor, - preferredAnchor = "bottom", - monospace, - fontFamily = monospace ? "ui-monospace, monospace" : void 0, - fontSize, - fontStyle, - fontVariant, - fontWeight, - lineHeight = 1, - lineWidth = 20, - frameAnchor, - format: format3, - textAnchor = "start", - textOverflow, - textPadding = 8, - title, - pointerSize = 12, - pathFilter = "drop-shadow(0 3px 4px rgba(0,0,0,0.2))" - } = options; - super( - data, - { - x: { value: x12 != null && x22 != null ? null : x2, scale: "x", optional: true }, - // ignore midpoint - y: { value: y12 != null && y22 != null ? null : y2, scale: "y", optional: true }, - // ignore midpoint - x1: { value: x12, scale: "x", optional: x22 == null }, - y1: { value: y12, scale: "y", optional: y22 == null }, - x2: { value: x22, scale: "x", optional: x12 == null }, - y2: { value: y22, scale: "y", optional: y12 == null }, - title: { value: title, optional: true } - // filter: defined - }, - options, - defaults6 - ); - this.anchor = maybeAnchor(anchor, "anchor"); - this.preferredAnchor = maybeAnchor(preferredAnchor, "preferredAnchor"); - this.frameAnchor = maybeFrameAnchor(frameAnchor); - this.textAnchor = impliedString(textAnchor, "middle"); - this.textPadding = +textPadding; - this.pointerSize = +pointerSize; - this.pathFilter = string(pathFilter); - this.lineHeight = +lineHeight; - this.lineWidth = +lineWidth; - this.textOverflow = maybeTextOverflow(textOverflow); - this.monospace = !!monospace; - this.fontFamily = string(fontFamily); - this.fontSize = number5(fontSize); - this.fontStyle = string(fontStyle); - this.fontVariant = string(fontVariant); - this.fontWeight = string(fontWeight); - for (const key in defaults6) if (key in this.channels) this[key] = defaults6[key]; - this.splitLines = splitter(this); - this.clipLine = clipper(this); - this.format = typeof format3 === "string" || typeof format3 === "function" ? { title: format3 } : { ...format3 }; - } - render(index2, scales, values2, dimensions, context) { - const mark = this; - const { x: x2, y: y2, fx, fy } = scales; - const { ownerSVGElement: svg, document: document2 } = context; - const { anchor, monospace, lineHeight, lineWidth } = this; - const { textPadding: r, pointerSize: m, pathFilter } = this; - const { marginTop, marginLeft } = dimensions; - const { x1: X12, y1: Y12, x2: X22, y2: Y22, x: X3 = X12 ?? X22, y: Y3 = Y12 ?? Y22 } = values2; - const ox = fx ? fx(index2.fx) - marginLeft : 0; - const oy = fy ? fy(index2.fy) - marginTop : 0; - const [cx, cy] = applyFrameAnchor(this, dimensions); - const px = anchorX(values2, cx); - const py = anchorY(values2, cy); - const widthof = monospace ? monospaceWidth : defaultWidth; - const ee = widthof(ellipsis); - let sources, format3; - if ("title" in values2) { - sources = getSourceChannels.call(this, { title: values2.channels.title }, scales); - format3 = formatTitle; - } else { - sources = getSourceChannels.call(this, values2.channels, scales); - format3 = formatChannels; - } - const g = create2("svg:g", context).call(applyIndirectStyles, this, dimensions, context).call(applyIndirectTextStyles, this).call(applyTransform, this, { x: X3 && x2, y: Y3 && y2 }).call( - (g2) => g2.selectAll().data(index2).enter().append("g").attr("transform", (i) => `translate(${Math.round(px(i))},${Math.round(py(i))})`).call(applyDirectStyles, this).call((g3) => g3.append("path").attr("filter", pathFilter)).call( - (g3) => g3.append("text").each(function(i) { - const that = select_default2(this); - this.setAttribute("fill", "currentColor"); - this.setAttribute("fill-opacity", 1); - this.setAttribute("stroke", "none"); - const lines = format3.call(mark, i, index2, sources, scales, values2); - if (typeof lines === "string") { - for (const line2 of mark.splitLines(lines)) { - renderLine(that, { value: mark.clipLine(line2) }); - } - } else { - const labels = /* @__PURE__ */ new Set(); - for (const line2 of lines) { - const { label = "" } = line2; - if (label && labels.has(label)) continue; - else labels.add(label); - renderLine(that, line2); - } - } - }) - ) - ); - function renderLine(selection2, { label, value, color: color3, opacity: opacity2 }) { - label ??= "", value ??= ""; - const swatch = color3 != null || opacity2 != null; - let title; - let w = lineWidth * 100; - const [j] = cut(label, w, widthof, ee); - if (j >= 0) { - label = label.slice(0, j).trimEnd() + ellipsis; - title = value.trim(); - value = ""; - } else { - if (label || !value && !swatch) value = " " + value; - const [k2] = cut(value, w - widthof(label), widthof, ee); - if (k2 >= 0) { - title = value.trim(); - value = value.slice(0, k2).trimEnd() + ellipsis; - } - } - const line2 = selection2.append("tspan").attr("x", 0).attr("dy", `${lineHeight}em`).text("\u200B"); - if (label) line2.append("tspan").attr("font-weight", "bold").text(label); - if (value) line2.append(() => document2.createTextNode(value)); - if (swatch) line2.append("tspan").text(" \u25A0").attr("fill", color3).attr("fill-opacity", opacity2).style("user-select", "none"); - if (title) line2.append("title").text(title); - } - function postrender() { - const { width, height } = dimensions.facet ?? dimensions; - g.selectChildren().each(function(i) { - let { x: tx, width: w, height: h } = this.getBBox(); - w = Math.round(w), h = Math.round(h); - let a2 = anchor; - if (a2 === void 0) { - const x3 = px(i) + ox; - const y3 = py(i) + oy; - const fitLeft = x3 + w + m + r * 2 < width; - const fitRight = x3 - w - m - r * 2 > 0; - const fitTop = y3 + h + m + r * 2 < height; - const fitBottom = y3 - h - m - r * 2 > 0; - a2 = fitLeft && fitRight ? fitTop && fitBottom ? mark.preferredAnchor : fitBottom ? "bottom" : "top" : fitTop && fitBottom ? fitLeft ? "left" : "right" : (fitLeft || fitRight) && (fitTop || fitBottom) ? `${fitBottom ? "bottom" : "top"}-${fitLeft ? "left" : "right"}` : mark.preferredAnchor; - } - const path2 = this.firstChild; - const text2 = this.lastChild; - path2.setAttribute("d", getPath(a2, m, r, w, h)); - if (tx) for (const t of text2.childNodes) t.setAttribute("x", -tx); - text2.setAttribute("y", `${+getLineOffset(a2, text2.childNodes.length, lineHeight).toFixed(6)}em`); - text2.setAttribute("transform", `translate(${getTextTranslate(a2, m, r, w, h)})`); - }); - g.attr("visibility", null); - } - if (index2.length) { - g.attr("visibility", "hidden"); - if (svg.isConnected) Promise.resolve().then(postrender); - else if (typeof requestAnimationFrame !== "undefined") requestAnimationFrame(postrender); - } - return g.node(); - } -}; -function tip(data, { x: x2, y: y2, ...options } = {}) { - if (options.frameAnchor === void 0) [x2, y2] = maybeTuple(x2, y2); - return new Tip(data, { ...options, x: x2, y: y2 }); -} -function getLineOffset(anchor, length3, lineHeight) { - return /^top(?:-|$)/.test(anchor) ? 0.94 - lineHeight : /^bottom(?:-|$)/ ? -0.29 - length3 * lineHeight : length3 / 2 * lineHeight; -} -function getTextTranslate(anchor, m, r, width, height) { - switch (anchor) { - case "middle": - return [-width / 2, height / 2]; - case "top-left": - return [r, m + r]; - case "top": - return [-width / 2, m / 2 + r]; - case "top-right": - return [-width - r, m + r]; - case "right": - return [-m / 2 - width - r, height / 2]; - case "bottom-left": - return [r, -m - r]; - case "bottom": - return [-width / 2, -m / 2 - r]; - case "bottom-right": - return [-width - r, -m - r]; - case "left": - return [r + m / 2, height / 2]; - } -} -function getPath(anchor, m, r, width, height) { - const w = width + r * 2; - const h = height + r * 2; - switch (anchor) { - case "middle": - return `M${-w / 2},${-h / 2}h${w}v${h}h${-w}z`; - case "top-left": - return `M0,0l${m},${m}h${w - m}v${h}h${-w}z`; - case "top": - return `M0,0l${m / 2},${m / 2}h${(w - m) / 2}v${h}h${-w}v${-h}h${(w - m) / 2}z`; - case "top-right": - return `M0,0l${-m},${m}h${m - w}v${h}h${w}z`; - case "right": - return `M0,0l${-m / 2},${-m / 2}v${m / 2 - h / 2}h${-w}v${h}h${w}v${m / 2 - h / 2}z`; - case "bottom-left": - return `M0,0l${m},${-m}h${w - m}v${-h}h${-w}z`; - case "bottom": - return `M0,0l${m / 2},${-m / 2}h${(w - m) / 2}v${-h}h${-w}v${h}h${(w - m) / 2}z`; - case "bottom-right": - return `M0,0l${-m},${-m}h${m - w}v${-h}h${w}z`; - case "left": - return `M0,0l${m / 2},${-m / 2}v${m / 2 - h / 2}h${w}v${h}h${-w}v${m / 2 - h / 2}z`; - } -} -function getSourceChannels(channels, scales) { - const sources = {}; - let format3 = this.format; - format3 = maybeExpandPairedFormat(format3, channels, "x"); - format3 = maybeExpandPairedFormat(format3, channels, "y"); - this.format = format3; - for (const key in format3) { - const value = format3[key]; - if (value === null || value === false) { - continue; - } else if (key === "fx" || key === "fy") { - sources[key] = true; - } else { - const source = getSource(channels, key); - if (source) sources[key] = source; - } - } - for (const key in channels) { - if (key in sources || key in format3 || ignoreChannels.has(key)) continue; - if ((key === "x" || key === "y") && channels.geometry) continue; - const source = getSource(channels, key); - if (source) { - if (source.scale == null && source.defaultScale === "color") continue; - sources[key] = source; - } - } - if (this.facet) { - if (scales.fx && !("fx" in format3)) sources.fx = true; - if (scales.fy && !("fy" in format3)) sources.fy = true; - } - for (const key in sources) { - const format4 = this.format[key]; - if (typeof format4 === "string") { - const value = sources[key]?.value ?? scales[key]?.domain() ?? []; - this.format[key] = (isTemporal(value) ? utcFormat : format)(format4); - } else if (format4 === void 0 || format4 === true) { - const scale = scales[key]; - this.format[key] = scale?.bandwidth ? inferTickFormat(scale, scale.domain()) : formatDefault; - } - } - return sources; -} -function maybeExpandPairedFormat(format3, channels, key) { - if (!(key in format3)) return format3; - const key1 = `${key}1`; - const key2 = `${key}2`; - if ((key1 in format3 || !(key1 in channels)) && (key2 in format3 || !(key2 in channels))) return format3; - const entries = Object.entries(format3); - const value = format3[key]; - entries.splice(entries.findIndex(([name]) => name === key) + 1, 0, [key1, value], [key2, value]); - return Object.fromEntries(entries); -} -function formatTitle(i, index2, { title }) { - return this.format.title(title.value[i], i); -} -function* formatChannels(i, index2, channels, scales, values2) { - for (const key in channels) { - if (key === "fx" || key === "fy") { - yield { - label: formatLabel(scales, channels, key), - value: this.format[key](index2[key], i) - }; - continue; - } - if (key === "x1" && "x2" in channels) continue; - if (key === "y1" && "y2" in channels) continue; - const channel = channels[key]; - if (key === "x2" && "x1" in channels) { - yield { - label: formatPairLabel(scales, channels, "x"), - value: formatPair(this.format.x2, channels.x1, channel, i) - }; - } else if (key === "y2" && "y1" in channels) { - yield { - label: formatPairLabel(scales, channels, "y"), - value: formatPair(this.format.y2, channels.y1, channel, i) - }; - } else { - const value = channel.value[i]; - const scale = channel.scale; - if (!defined(value) && scale == null) continue; - yield { - label: formatLabel(scales, channels, key), - value: this.format[key](value, i), - color: scale === "color" ? values2[key][i] : null, - opacity: scale === "opacity" ? values2[key][i] : null - }; - } - } -} -function formatPair(formatValue, c1, c22, i) { - return c22.hint?.length ? `${formatValue(c22.value[i] - c1.value[i], i)}` : `${formatValue(c1.value[i], i)}\u2013${formatValue(c22.value[i], i)}`; -} -function formatPairLabel(scales, channels, key) { - const l1 = formatLabel(scales, channels, `${key}1`, key); - const l2 = formatLabel(scales, channels, `${key}2`, key); - return l1 === l2 ? l1 : `${l1}\u2013${l2}`; -} -function formatLabel(scales, channels, key, defaultLabel = key) { - const channel = channels[key]; - const scale = scales[channel?.scale ?? key]; - return String(scale?.label ?? channel?.label ?? defaultLabel); -} - -// node_modules/@observablehq/plot/src/plot.js -function plot(options = {}) { - const { facet, style, title, subtitle, caption, ariaLabel, ariaDescription } = options; - const className = maybeClassName(options.className); - const marks2 = options.marks === void 0 ? [] : flatMarks(options.marks); - marks2.push(...inferTips(marks2)); - const topFacetState = maybeTopFacet(facet, options); - const facetStateByMark = /* @__PURE__ */ new Map(); - for (const mark of marks2) { - const facetState = maybeMarkFacet(mark, topFacetState, options); - if (facetState) facetStateByMark.set(mark, facetState); - } - const channelsByScale = /* @__PURE__ */ new Map(); - if (topFacetState) addScaleChannels(channelsByScale, [topFacetState], options); - addScaleChannels(channelsByScale, facetStateByMark, options); - const axes = flatMarks(inferAxes(marks2, channelsByScale, options)); - for (const mark of axes) { - const facetState = maybeMarkFacet(mark, topFacetState, options); - if (facetState) facetStateByMark.set(mark, facetState); - } - marks2.unshift(...axes); - let facets = createFacets(channelsByScale, options); - if (facets !== void 0) { - const topFacetsIndex = topFacetState ? facetFilter(facets, topFacetState) : void 0; - for (const mark of marks2) { - if (mark.facet === null || mark.facet === "super") continue; - const facetState = facetStateByMark.get(mark); - if (facetState === void 0) continue; - facetState.facetsIndex = mark.fx != null || mark.fy != null ? facetFilter(facets, facetState) : topFacetsIndex; - } - const nonEmpty = /* @__PURE__ */ new Set(); - for (const { facetsIndex } of facetStateByMark.values()) { - facetsIndex?.forEach((index2, i) => { - if (index2?.length > 0) { - nonEmpty.add(i); - } - }); - } - facets.forEach( - 0 < nonEmpty.size && nonEmpty.size < facets.length ? (f, i) => f.empty = !nonEmpty.has(i) : (f) => f.empty = false - ); - for (const mark of marks2) { - if (mark.facet === "exclude") { - const facetState = facetStateByMark.get(mark); - if (facetState !== void 0) facetState.facetsIndex = facetExclude(facetState.facetsIndex); - } - } - } - for (const key of registry.keys()) { - if (isScaleOptions(options[key]) && key !== "fx" && key !== "fy") { - channelsByScale.set(key, []); - } - } - const stateByMark = /* @__PURE__ */ new Map(); - for (const mark of marks2) { - if (stateByMark.has(mark)) throw new Error("duplicate mark; each mark must be unique"); - const { facetsIndex, channels: facetChannels } = facetStateByMark.get(mark) ?? {}; - const { data, facets: facets2, channels } = mark.initialize(facetsIndex, facetChannels, options); - applyScaleTransforms(channels, options); - stateByMark.set(mark, { data, facets: facets2, channels }); - } - const scaleDescriptors = createScales(addScaleChannels(channelsByScale, stateByMark, options), options); - const dimensions = createDimensions(scaleDescriptors, marks2, options); - autoScaleRange(scaleDescriptors, dimensions); - const scales = createScaleFunctions(scaleDescriptors); - const { fx, fy } = scales; - const subdimensions = fx || fy ? innerDimensions(scaleDescriptors, dimensions) : dimensions; - const superdimensions = fx || fy ? actualDimensions(scales, dimensions) : dimensions; - const context = createContext(options); - const document2 = context.document; - const svg = creator_default("svg").call(document2.documentElement); - let figure = svg; - context.ownerSVGElement = svg; - context.className = className; - context.projection = createProjection(options, subdimensions); - context.path = function() { - return path_default(this.projection ?? xyProjection(scales)); - }; - context.filterFacets = (data, channels) => { - return facetFilter(facets, { channels, groups: facetGroups(data, channels) }); - }; - context.getMarkState = (mark) => { - const state = stateByMark.get(mark); - const facetState = facetStateByMark.get(mark); - return { ...state, channels: { ...state.channels, ...facetState?.channels } }; - }; - context.dispatchValue = (value) => { - if (figure.value === value) return; - figure.value = value; - figure.dispatchEvent(new context.document.defaultView.Event("input", { bubbles: true })); - }; - const newByScale = /* @__PURE__ */ new Set(); - for (const [mark, state] of stateByMark) { - if (mark.initializer != null) { - const dimensions2 = mark.facet === "super" ? superdimensions : subdimensions; - const update = mark.initializer(state.data, state.facets, state.channels, scales, dimensions2, context); - if (update.data !== void 0) { - state.data = update.data; - } - if (update.facets !== void 0) { - state.facets = update.facets; - } - if (update.channels !== void 0) { - const { fx: fx2, fy: fy2, ...channels } = update.channels; - inferChannelScales(channels); - Object.assign(state.channels, channels); - for (const channel of Object.values(channels)) { - const { scale } = channel; - if (scale != null && !isPosition(registry.get(scale))) { - applyScaleTransform(channel, options); - newByScale.add(scale); - } - } - if (fx2 != null || fy2 != null) facetStateByMark.set(mark, true); - } - } - } - if (newByScale.size) { - const newChannelsByScale = /* @__PURE__ */ new Map(); - addScaleChannels(newChannelsByScale, stateByMark, options, (key) => newByScale.has(key)); - addScaleChannels(channelsByScale, stateByMark, options, (key) => newByScale.has(key)); - const newScaleDescriptors = inheritScaleLabels(createScales(newChannelsByScale, options), scaleDescriptors); - const { scales: newExposedScales, ...newScales } = createScaleFunctions(newScaleDescriptors); - Object.assign(scaleDescriptors, newScaleDescriptors); - Object.assign(scales, newScales); - Object.assign(scales.scales, newExposedScales); - } - let facetDomains, facetTranslate; - if (facets !== void 0) { - facetDomains = { x: fx?.domain(), y: fy?.domain() }; - facets = recreateFacets(facets, facetDomains); - facetTranslate = facetTranslator(fx, fy, dimensions); - } - for (const [mark, state] of stateByMark) { - state.values = mark.scale(state.channels, scales, context); - } - const { width, height } = dimensions; - select_default2(svg).attr("class", className).attr("fill", "currentColor").attr("font-family", "system-ui, sans-serif").attr("font-size", 10).attr("text-anchor", "middle").attr("width", width).attr("height", height).attr("viewBox", `0 0 ${width} ${height}`).attr("aria-label", ariaLabel).attr("aria-description", ariaDescription).call( - (svg2) => ( - // Warning: if you edit this, change defaultClassName. - svg2.append("style").text( - `:where(.${className}) { - --plot-background: white; - display: block; - height: auto; - height: intrinsic; - max-width: 100%; -} -:where(.${className} text), -:where(.${className} tspan) { - white-space: pre; -}` - ) - ) - ).call(applyInlineStyles, style); - for (const mark of marks2) { - const { channels, values: values2, facets: indexes2 } = stateByMark.get(mark); - if (facets === void 0 || mark.facet === "super") { - let index2 = null; - if (indexes2) { - index2 = indexes2[0]; - index2 = mark.filter(index2, channels, values2); - if (index2.length === 0) continue; - } - const node = mark.render(index2, scales, values2, superdimensions, context); - if (node == null) continue; - svg.appendChild(node); - } else { - let g; - for (const f of facets) { - if (!(mark.facetAnchor?.(facets, facetDomains, f) ?? !f.empty)) continue; - let index2 = null; - if (indexes2) { - const faceted = facetStateByMark.has(mark); - index2 = indexes2[faceted ? f.i : 0]; - index2 = mark.filter(index2, channels, values2); - if (index2.length === 0) continue; - if (!faceted && index2 === indexes2[0]) index2 = subarray(index2); - index2.fx = f.x, index2.fy = f.y, index2.fi = f.i; - } - const node = mark.render(index2, scales, values2, subdimensions, context); - if (node == null) continue; - (g ??= select_default2(svg).append("g")).append(() => node).datum(f); - for (const name of ["aria-label", "aria-description", "aria-hidden", "transform"]) { - if (node.hasAttribute(name)) { - g.attr(name, node.getAttribute(name)); - node.removeAttribute(name); - } - } - } - g?.selectChildren().each(facetTranslate); - } - } - const legends = createLegends(scaleDescriptors, context, options); - const { figure: figured = title != null || subtitle != null || caption != null || legends.length > 0 } = options; - if (figured) { - figure = document2.createElement("figure"); - figure.className = `${className}-figure`; - figure.style.maxWidth = "initial"; - if (title != null) figure.append(createTitleElement(document2, title, "h2")); - if (subtitle != null) figure.append(createTitleElement(document2, subtitle, "h3")); - figure.append(...legends, svg); - if (caption != null) figure.append(createFigcaption(document2, caption)); - if ("value" in svg) figure.value = svg.value, delete svg.value; - } - figure.scale = exposeScales(scales.scales); - figure.legend = exposeLegends(scaleDescriptors, context, options); - const w = consumeWarnings(); - if (w > 0) { - select_default2(svg).append("text").attr("x", width).attr("y", 20).attr("dy", "-1em").attr("text-anchor", "end").attr("font-family", "initial").text("\u26A0\uFE0F").append("title").text(`${w.toLocaleString("en-US")} warning${w === 1 ? "" : "s"}. Please check the console.`); - } - return figure; -} -function createTitleElement(document2, contents, tag) { - if (contents.ownerDocument) return contents; - const e = document2.createElement(tag); - e.append(contents); - return e; -} -function createFigcaption(document2, caption) { - const e = document2.createElement("figcaption"); - e.append(caption); - return e; -} -function flatMarks(marks2) { - return marks2.flat(Infinity).filter((mark) => mark != null).map(markify); -} -function markify(mark) { - return typeof mark.render === "function" ? mark : new Render(mark); -} -var Render = class extends Mark { - constructor(render) { - if (typeof render !== "function") throw new TypeError("invalid mark; missing render function"); - super(); - this.render = render; - } - render() { - } -}; -function applyScaleTransforms(channels, options) { - for (const name in channels) applyScaleTransform(channels[name], options); - return channels; -} -function applyScaleTransform(channel, options) { - const { scale, transform: t = true } = channel; - if (scale == null || !t) return; - const { - type: type2, - percent, - interval: interval2, - transform: transform2 = percent ? (x2) => x2 == null ? NaN : x2 * 100 : maybeIntervalTransform(interval2, type2) - } = options[scale] ?? {}; - if (transform2 == null) return; - channel.value = map4(channel.value, transform2); - channel.transform = false; -} -function inferChannelScales(channels) { - for (const name in channels) { - inferChannelScale(name, channels[name]); - } -} -function addScaleChannels(channelsByScale, stateByMark, options, filter2 = yes) { - for (const { channels } of stateByMark.values()) { - for (const name in channels) { - const channel = channels[name]; - const { scale } = channel; - if (scale != null && filter2(scale)) { - if (scale === "projection") { - if (!hasProjection(options)) { - const gx = options.x?.domain === void 0; - const gy = options.y?.domain === void 0; - if (gx || gy) { - const [x2, y2] = getGeometryChannels(channel); - if (gx) addScaleChannel(channelsByScale, "x", x2); - if (gy) addScaleChannel(channelsByScale, "y", y2); - } - } - } else { - addScaleChannel(channelsByScale, scale, channel); - } - } - } - } - return channelsByScale; -} -function addScaleChannel(channelsByScale, scale, channel) { - const scaleChannels = channelsByScale.get(scale); - if (scaleChannels !== void 0) scaleChannels.push(channel); - else channelsByScale.set(scale, [channel]); -} -function maybeTopFacet(facet, options) { - if (facet == null) return; - const { x: x2, y: y2 } = facet; - if (x2 == null && y2 == null) return; - const data = dataify(facet.data); - if (data == null) throw new Error("missing facet data"); - const channels = {}; - if (x2 != null) channels.fx = createChannel(data, { value: x2, scale: "fx" }); - if (y2 != null) channels.fy = createChannel(data, { value: y2, scale: "fy" }); - applyScaleTransforms(channels, options); - const groups2 = facetGroups(data, channels); - return { channels, groups: groups2, data: facet.data }; -} -function maybeMarkFacet(mark, topFacetState, options) { - if (mark.facet === null || mark.facet === "super") return; - const { fx, fy } = mark; - if (fx != null || fy != null) { - const data2 = dataify(mark.data ?? fx ?? fy); - if (data2 === void 0) throw new Error(`missing facet data in ${mark.ariaLabel}`); - if (data2 === null) return; - const channels2 = {}; - if (fx != null) channels2.fx = createChannel(data2, { value: fx, scale: "fx" }); - if (fy != null) channels2.fy = createChannel(data2, { value: fy, scale: "fy" }); - applyScaleTransforms(channels2, options); - return { channels: channels2, groups: facetGroups(data2, channels2) }; - } - if (topFacetState === void 0) return; - const { channels, groups: groups2, data } = topFacetState; - if (mark.facet !== "auto" || mark.data === data) return { channels, groups: groups2 }; - if (data.length > 0 && (groups2.size > 1 || groups2.size === 1 && channels.fx && channels.fy && [...groups2][0][1].size > 1) && lengthof(dataify(mark.data)) === lengthof(data)) { - warn( - `Warning: the ${mark.ariaLabel} mark appears to use faceted data, but isn\u2019t faceted. The mark data has the same length as the facet data and the mark facet option is "auto", but the mark data and facet data are distinct. If this mark should be faceted, set the mark facet option to true; otherwise, suppress this warning by setting the mark facet option to false.` - ); - } -} -function derive(mark, options = {}) { - return initializer({ ...options, x: null, y: null }, (data, facets, channels, scales, dimensions, context) => { - return context.getMarkState(mark); - }); -} -function inferTips(marks2) { - const tips = []; - for (const mark of marks2) { - let tipOptions = mark.tip; - if (tipOptions) { - if (tipOptions === true) tipOptions = {}; - else if (typeof tipOptions === "string") tipOptions = { pointer: tipOptions }; - let { pointer: p, preferredAnchor: a2 } = tipOptions; - p = /^x$/i.test(p) ? pointerX : /^y$/i.test(p) ? pointerY : pointer; - tipOptions = p(derive(mark, tipOptions)); - tipOptions.title = null; - if (a2 === void 0) tipOptions.preferredAnchor = p === pointerY ? "left" : "bottom"; - const t = tip(mark.data, tipOptions); - t.facet = mark.facet; - t.facetAnchor = mark.facetAnchor; - tips.push(t); - } - } - return tips; -} -function inferAxes(marks2, channelsByScale, options) { - let { - projection: projection3, - x: x2 = {}, - y: y2 = {}, - fx = {}, - fy = {}, - axis: axis2, - grid, - facet = {}, - facet: { axis: facetAxis = axis2, grid: facetGrid } = facet, - x: { axis: xAxis = axis2, grid: xGrid = xAxis === null ? null : grid } = x2, - y: { axis: yAxis = axis2, grid: yGrid = yAxis === null ? null : grid } = y2, - fx: { axis: fxAxis = facetAxis, grid: fxGrid = fxAxis === null ? null : facetGrid } = fx, - fy: { axis: fyAxis = facetAxis, grid: fyGrid = fyAxis === null ? null : facetGrid } = fy - } = options; - if (projection3 || !isScaleOptions(x2) && !hasPositionChannel("x", marks2)) xAxis = xGrid = null; - if (projection3 || !isScaleOptions(y2) && !hasPositionChannel("y", marks2)) yAxis = yGrid = null; - if (!channelsByScale.has("fx")) fxAxis = fxGrid = null; - if (!channelsByScale.has("fy")) fyAxis = fyGrid = null; - if (xAxis === void 0) xAxis = !hasAxis(marks2, "x"); - if (yAxis === void 0) yAxis = !hasAxis(marks2, "y"); - if (fxAxis === void 0) fxAxis = !hasAxis(marks2, "fx"); - if (fyAxis === void 0) fyAxis = !hasAxis(marks2, "fy"); - if (xAxis === true) xAxis = "bottom"; - if (yAxis === true) yAxis = "left"; - if (fxAxis === true) fxAxis = xAxis === "top" || xAxis === null ? "bottom" : "top"; - if (fyAxis === true) fyAxis = yAxis === "right" || yAxis === null ? "left" : "right"; - const axes = []; - maybeGrid(axes, fyGrid, gridFy, fy); - maybeAxis(axes, fyAxis, axisFy, "right", "left", facet, fy); - maybeGrid(axes, fxGrid, gridFx, fx); - maybeAxis(axes, fxAxis, axisFx, "top", "bottom", facet, fx); - maybeGrid(axes, yGrid, gridY, y2); - maybeAxis(axes, yAxis, axisY, "left", "right", options, y2); - maybeGrid(axes, xGrid, gridX, x2); - maybeAxis(axes, xAxis, axisX, "bottom", "top", options, x2); - return axes; -} -function maybeAxis(axes, axis2, axisType, primary, secondary, defaults9, options) { - if (!axis2) return; - const both = isBoth(axis2); - options = axisOptions(both ? primary : axis2, defaults9, options); - const { line: line2 } = options; - if ((axisType === axisY || axisType === axisX) && line2 && !isNone(line2)) axes.push(frame2(lineOptions(options))); - axes.push(axisType(options)); - if (both) axes.push(axisType({ ...options, anchor: secondary, label: null })); -} -function maybeGrid(axes, grid, gridType, options) { - if (!grid || isNone(grid)) return; - axes.push(gridType(gridOptions(grid, options))); -} -function isBoth(value) { - return /^\s*both\s*$/i.test(value); -} -function axisOptions(anchor, defaults9, { - line: line2 = defaults9.line, - ticks: ticks2, - tickSize, - tickSpacing, - tickPadding, - tickFormat: tickFormat2, - tickRotate, - fontVariant, - ariaLabel, - ariaDescription, - label = defaults9.label, - labelAnchor, - labelArrow = defaults9.labelArrow, - labelOffset -}) { - return { - anchor, - line: line2, - ticks: ticks2, - tickSize, - tickSpacing, - tickPadding, - tickFormat: tickFormat2, - tickRotate, - fontVariant, - ariaLabel, - ariaDescription, - label, - labelAnchor, - labelArrow, - labelOffset - }; -} -function lineOptions(options) { - const { anchor, line: line2 } = options; - return { anchor, facetAnchor: anchor + "-empty", stroke: line2 === true ? void 0 : line2 }; -} -function gridOptions(grid, { - stroke = isColor(grid) ? grid : void 0, - ticks: ticks2 = isGridTicks(grid) ? grid : void 0, - tickSpacing, - ariaLabel, - ariaDescription -}) { - return { - stroke, - ticks: ticks2, - tickSpacing, - ariaLabel, - ariaDescription - }; -} -function isGridTicks(grid) { - switch (typeof grid) { - case "number": - return true; - case "string": - return !isColor(grid); - } - return isIterable(grid) || typeof grid?.range === "function"; -} -function hasAxis(marks2, k2) { - const prefix = `${k2}-axis `; - return marks2.some((m) => m.ariaLabel?.startsWith(prefix)); -} -function hasPositionChannel(k2, marks2) { - for (const mark of marks2) { - for (const key in mark.channels) { - const { scale } = mark.channels[key]; - if (scale === k2 || scale === "projection") { - return true; - } - } - } - return false; -} -function inheritScaleLabels(newScales, scales) { - for (const key in newScales) { - const newScale = newScales[key]; - const scale = scales[key]; - if (newScale.label === void 0 && scale) { - newScale.label = scale.label; - } - } - return newScales; -} -function actualDimensions({ fx, fy }, dimensions) { - const { marginTop, marginRight, marginBottom, marginLeft, width, height } = outerDimensions(dimensions); - const fxr = fx && outerRange(fx); - const fyr = fy && outerRange(fy); - return { - marginTop: fy ? fyr[0] : marginTop, - marginRight: fx ? width - fxr[1] : marginRight, - marginBottom: fy ? height - fyr[1] : marginBottom, - marginLeft: fx ? fxr[0] : marginLeft, - // Some marks, namely the x- and y-axis labels, want to know what the - // desired (rather than actual) margins are for positioning. - inset: { - marginTop: dimensions.marginTop, - marginRight: dimensions.marginRight, - marginBottom: dimensions.marginBottom, - marginLeft: dimensions.marginLeft - }, - width, - height - }; -} -function outerRange(scale) { - const domain = scale.domain(); - if (domain.length === 0) return [0, scale.bandwidth()]; - let x12 = scale(domain[0]); - let x2 = scale(domain[domain.length - 1]); - if (x2 < x12) [x12, x2] = [x2, x12]; - return [x12, x2 + scale.bandwidth()]; -} - -// node_modules/@observablehq/plot/src/curve.js -var curves = /* @__PURE__ */ new Map([ - ["basis", basis_default2], - ["basis-closed", basisClosed_default2], - ["basis-open", basisOpen_default], - ["bundle", bundle_default], - ["bump-x", bumpX], - ["bump-y", bumpY], - ["cardinal", cardinal_default], - ["cardinal-closed", cardinalClosed_default], - ["cardinal-open", cardinalOpen_default], - ["catmull-rom", catmullRom_default], - ["catmull-rom-closed", catmullRomClosed_default], - ["catmull-rom-open", catmullRomOpen_default], - ["linear", linear_default], - ["linear-closed", linearClosed_default], - ["monotone-x", monotoneX], - ["monotone-y", monotoneY], - ["natural", natural_default], - ["step", step_default], - ["step-after", stepAfter], - ["step-before", stepBefore] -]); -function maybeCurve(curve = linear_default, tension) { - if (typeof curve === "function") return curve; - const c4 = curves.get(`${curve}`.toLowerCase()); - if (!c4) throw new Error(`unknown curve: ${curve}`); - if (tension !== void 0) { - if ("beta" in c4) { - return c4.beta(tension); - } else if ("tension" in c4) { - return c4.tension(tension); - } else if ("alpha" in c4) { - return c4.alpha(tension); - } - } - return c4; -} -function maybeCurveAuto(curve = curveAuto, tension) { - return typeof curve !== "function" && `${curve}`.toLowerCase() === "auto" ? curveAuto : maybeCurve(curve, tension); -} -function curveAuto(context) { - return linear_default(context); -} - -// node_modules/@observablehq/plot/src/marks/dot.js -var defaults7 = { - ariaLabel: "dot", - fill: "none", - stroke: "currentColor", - strokeWidth: 1.5 -}; -function withDefaultSort(options) { - return options.sort === void 0 && options.reverse === void 0 ? sort2({ channel: "-r" }, options) : options; -} -var Dot = class extends Mark { - constructor(data, options = {}) { - const { x: x2, y: y2, r, rotate, symbol: symbol2 = circle_default2, frameAnchor } = options; - const [vrotate, crotate] = maybeNumberChannel(rotate, 0); - const [vsymbol, csymbol] = maybeSymbolChannel(symbol2); - const [vr, cr] = maybeNumberChannel(r, vsymbol == null ? 3 : 4.5); - super( - data, - { - x: { value: x2, scale: "x", optional: true }, - y: { value: y2, scale: "y", optional: true }, - r: { value: vr, scale: "r", filter: positive, optional: true }, - rotate: { value: vrotate, optional: true }, - symbol: { value: vsymbol, scale: "auto", optional: true } - }, - withDefaultSort(options), - defaults7 - ); - this.r = cr; - this.rotate = crotate; - this.symbol = csymbol; - this.frameAnchor = maybeFrameAnchor(frameAnchor); - const { channels } = this; - const { symbol: symbolChannel } = channels; - if (symbolChannel) { - const { fill: fillChannel, stroke: strokeChannel } = channels; - symbolChannel.hint = { - fill: fillChannel ? fillChannel.value === symbolChannel.value ? "color" : "currentColor" : this.fill ?? "currentColor", - stroke: strokeChannel ? strokeChannel.value === symbolChannel.value ? "color" : "currentColor" : this.stroke ?? "none" - }; - } - } - render(index2, scales, channels, dimensions, context) { - const { x: x2, y: y2 } = scales; - const { x: X3, y: Y3, r: R, rotate: A5, symbol: S } = channels; - const { r, rotate, symbol: symbol2 } = this; - const [cx, cy] = applyFrameAnchor(this, dimensions); - const circle2 = symbol2 === circle_default2; - const size = R ? void 0 : r * r * Math.PI; - if (negative(r)) index2 = []; - return create2("svg:g", context).call(applyIndirectStyles, this, dimensions, context).call(applyTransform, this, { x: X3 && x2, y: Y3 && y2 }).call( - (g) => g.selectAll().data(index2).enter().append(circle2 ? "circle" : "path").call(applyDirectStyles, this).call( - circle2 ? (selection2) => { - selection2.attr("cx", X3 ? (i) => X3[i] : cx).attr("cy", Y3 ? (i) => Y3[i] : cy).attr("r", R ? (i) => R[i] : r); - } : (selection2) => { - selection2.attr( - "transform", - template`translate(${X3 ? (i) => X3[i] : cx},${Y3 ? (i) => Y3[i] : cy})${A5 ? (i) => ` rotate(${A5[i]})` : rotate ? ` rotate(${rotate})` : ``}` - ).attr( - "d", - R && S ? (i) => { - const p = pathRound(); - S[i].draw(p, R[i] * R[i] * Math.PI); - return p; - } : R ? (i) => { - const p = pathRound(); - symbol2.draw(p, R[i] * R[i] * Math.PI); - return p; - } : S ? (i) => { - const p = pathRound(); - S[i].draw(p, size); - return p; - } : (() => { - const p = pathRound(); - symbol2.draw(p, size); - return p; - })() - ); - } - ).call(applyChannelStyles, this, channels) - ).node(); - } -}; -function dot(data, { x: x2, y: y2, ...options } = {}) { - if (options.frameAnchor === void 0) [x2, y2] = maybeTuple(x2, y2); - return new Dot(data, { ...options, x: x2, y: y2 }); -} - -// node_modules/@observablehq/plot/src/marks/line.js -var defaults8 = { - ariaLabel: "line", - fill: "none", - stroke: "currentColor", - strokeWidth: 1.5, - strokeLinecap: "round", - strokeLinejoin: "round", - strokeMiterlimit: 1 -}; -var Line = class extends Mark { - constructor(data, options = {}) { - const { x: x2, y: y2, z, curve, tension } = options; - super( - data, - { - x: { value: x2, scale: "x" }, - y: { value: y2, scale: "y" }, - z: { value: maybeZ(options), optional: true } - }, - options, - defaults8 - ); - this.z = z; - this.curve = maybeCurveAuto(curve, tension); - markers(this, options); - } - filter(index2) { - return index2; - } - project(channels, values2, context) { - if (this.curve !== curveAuto) { - super.project(channels, values2, context); - } - } - render(index2, scales, channels, dimensions, context) { - const { x: X3, y: Y3 } = channels; - const { curve } = this; - return create2("svg:g", context).call(applyIndirectStyles, this, dimensions, context).call(applyTransform, this, scales).call( - (g) => g.selectAll().data(groupIndex(index2, [X3, Y3], this, channels)).enter().append("path").call(applyDirectStyles, this).call(applyGroupedChannelStyles, this, channels).call(applyGroupedMarkers, this, channels, context).attr( - "d", - curve === curveAuto && context.projection ? sphereLine(context.path(), X3, Y3) : line_default2().curve(curve).defined((i) => i >= 0).x((i) => X3[i]).y((i) => Y3[i]) - ) - ).node(); - } -}; -function sphereLine(path2, X3, Y3) { - X3 = coerceNumbers(X3); - Y3 = coerceNumbers(Y3); - return (I) => { - let line2 = []; - const lines = [line2]; - for (const i of I) { - if (i === -1) { - line2 = []; - lines.push(line2); - } else { - line2.push([X3[i], Y3[i]]); - } - } - return path2({ type: "MultiLineString", coordinates: lines }); - }; -} -function line(data, { x: x2, y: y2, ...options } = {}) { - [x2, y2] = maybeTuple(x2, y2); - return new Line(data, { ...options, x: x2, y: y2 }); -} - -// node_modules/@observablehq/plot/src/index.js -Mark.prototype.plot = function({ marks: marks2 = [], ...options } = {}) { - return plot({ ...options, marks: [...marks2, this] }); -}; - -// src/render/calibration.ts -var RTICHOKE_COLORS = [ - "#1b9e77", - "#d95f02", - "#7570b3", - "#e7298a", - "#07004D", - "#E6AB02", - "#FE5F55", - "#54494B", - "#006E90", - "#BC96E6" -]; -var BASE_STYLE = { - background: "transparent", - color: "#222", - fontFamily: "Arial, Helvetica, sans-serif", - fontSize: "13px" -}; -function formatPointTooltip(datum2, showModel) { - const lines = [ - ...showModel ? [datum2.model] : [], - `Predicted: ${datum2.predicted.toFixed(3)}`, - `Observed: ${datum2.observed.toFixed(3)}` - ]; - if (datum2.method === "discrete" && datum2.events !== void 0 && datum2.total !== void 0) { - lines[lines.length - 1] += ` ( ${datum2.events} / ${datum2.total} )`; - } - return lines.join("\n"); -} -function renderCalibration(spec) { - const models = [...new Set(spec.data.map((datum2) => datum2.model))]; - const showLegend = models.length > 1; - const colorRange = showLegend ? RTICHOKE_COLORS : ["#000000"]; - const plottedData = spec.data.map((datum2) => ({ - ...datum2, - tooltip: formatPointTooltip(datum2, showLegend) - })); - const marks2 = []; - if (spec.references?.some((reference) => reference.type === "identity")) { - marks2.push( - line( - [ - { x: 0, y: 0 }, - { x: 1, y: 1 } - ], - { - x: "x", - y: "y", - stroke: "#BEBEBE", - strokeWidth: 2, - strokeDasharray: "4,4" - } - ) - ); - } - marks2.push( - line(plottedData, { - x: "predicted", - y: "observed", - stroke: "model", - strokeWidth: 2, - title: "tooltip", - tip: true - }) - ); - const discrete = plottedData.filter((datum2) => datum2.method === "discrete"); - if (discrete.length > 0) { - marks2.push( - dot(discrete, { - x: "predicted", - y: "observed", - fill: "model", - stroke: "white", - strokeWidth: 1.5, - r: 5, - title: "tooltip", - tip: true - }) - ); - } - const hasDistribution = (spec.distribution?.length ?? 0) > 0; - const calibration = plot({ - width: 600, - height: hasDistribution ? 480 : 600, - marginLeft: 64, - marginBottom: hasDistribution ? 16 : 56, - style: BASE_STYLE, - x: { - label: hasDistribution ? null : spec.xAxis.label, - domain: spec.xAxis.domain, - grid: false, - ticks: 6, - axis: hasDistribution ? null : "bottom" - }, - y: { - label: spec.yAxis.label, - domain: spec.yAxis.domain, - grid: false, - ticks: 6 - }, - color: { legend: showLegend, range: colorRange }, - marks: marks2 - }); - if (!hasDistribution || !spec.distribution) { - return calibration; - } - const distribution = spec.distribution.map((datum2) => ({ - ...datum2, - tooltip: `${showLegend ? `${datum2.model} -` : ""}${datum2.count} observations in [${(datum2.midpoint - datum2.binWidth / 2).toFixed(3)}, ${(datum2.midpoint + datum2.binWidth / 2).toFixed(3)}]` - })); - const modelCount = new Set(spec.distribution.map((datum2) => datum2.model)).size; - const histogram = plot({ - width: 600, - height: 120, - marginLeft: 64, - marginTop: 0, - marginBottom: 48, - style: BASE_STYLE, - x: { - label: spec.xAxis.label, - domain: spec.xAxis.domain, - grid: false, - ticks: 6 - }, - y: { - label: null, - grid: false, - ticks: 3 - }, - color: { legend: false, range: colorRange }, - marks: [ - rectY(distribution, { - x1: (datum2) => datum2.midpoint - datum2.binWidth / 2, - x2: (datum2) => datum2.midpoint + datum2.binWidth / 2, - y: "count", - fill: "model", - fillOpacity: 1 / Math.max(modelCount, 1), - title: "tooltip", - tip: true - }) - ] - }); - const container = document.createElement("div"); - container.style.width = "600px"; - container.style.maxWidth = "100%"; - container.append(calibration, histogram); - return container; -} - -// src/render/v2.ts -var RTICHOKE_COLORS2 = [ - "#1b9e77", - "#d95f02", - "#7570b3", - "#e7298a", - "#07004D", - "#E6AB02", - "#FE5F55", - "#54494B", - "#006E90", - "#BC96E6" -]; -var RTICHOKE_BROWSER_THEME = { - width: 600, - height: 500, - margins: { top: 28, right: 28, bottom: 58, left: 66 }, - background: "#ffffff", - frame: { color: "#444444", width: 1 }, - typography: { - fontFamily: "Arial, Helvetica, sans-serif", - fontSize: 12, - axisTitleSize: 14, - axisTitleWeight: 400, - legendSize: 12 - }, - axis: { - color: "#444444", - tickSize: 5, - tickPadding: 7, - ticks: 6, - numberFormat: ".1f" - }, - colors: RTICHOKE_COLORS2, - line: { width: 2, dash: null }, - marker: { radius: 2.5, fill: null, stroke: "#ffffff", strokeWidth: 0.5 }, - reference: { color: "#BEBEBE", width: 1.5, dash: "2,3" }, - legend: { position: "top", swatchWidth: 12, columns: null }, - tip: { digits: 3 } -}; -function mergeTheme(options) { - const custom8 = options.theme ?? {}; - return { - ...RTICHOKE_BROWSER_THEME, - width: options.width ?? RTICHOKE_BROWSER_THEME.width, - height: options.height ?? RTICHOKE_BROWSER_THEME.height, - background: custom8.background ?? RTICHOKE_BROWSER_THEME.background, - colors: options.colors ?? RTICHOKE_BROWSER_THEME.colors, - margins: { ...RTICHOKE_BROWSER_THEME.margins, ...custom8.margins }, - frame: { ...RTICHOKE_BROWSER_THEME.frame, ...custom8.frame }, - typography: { ...RTICHOKE_BROWSER_THEME.typography, ...custom8.typography }, - axis: { ...RTICHOKE_BROWSER_THEME.axis, ...custom8.axis }, - line: { ...RTICHOKE_BROWSER_THEME.line, ...custom8.line }, - marker: { ...RTICHOKE_BROWSER_THEME.marker, ...custom8.marker }, - reference: { ...RTICHOKE_BROWSER_THEME.reference, ...custom8.reference }, - legend: { ...RTICHOKE_BROWSER_THEME.legend, ...custom8.legend }, - tip: { ...RTICHOKE_BROWSER_THEME.tip, ...custom8.tip } - }; -} -function resolveV2RenderOptions(groupsOrCount, options = {}) { - const allGroups = options.allGroups ?? (typeof groupsOrCount === "number" ? Array.from( - { length: groupsOrCount }, - (_, index2) => `group-${index2 + 1}` - ) : [...groupsOrCount]); - const theme = mergeTheme(options); - if (!Number.isFinite(theme.width) || theme.width <= 0 || !Number.isFinite(theme.height) || theme.height <= 0) - throw new Error( - "Renderer width and height must be positive finite numbers" - ); - if (!Number.isInteger(theme.tip.digits) || theme.tip.digits < 0 || theme.tip.digits > 20) - throw new Error("Renderer tip digits must be an integer between 0 and 20"); - const colors = allGroups.length <= 1 ? ["#000000"] : [...theme.colors]; - if (colors.length < allGroups.length) - throw new Error( - "Renderer colors must contain at least one color per display group" - ); - const assigned = colors.slice(0, Math.max(allGroups.length, 1)); - const showLegend = options.showLegend ?? allGroups.length > 1; - return { - theme: { ...theme, colors: assigned }, - groups: allGroups, - colors: assigned, - colorByGroup: new Map( - allGroups.map((group2, index2) => [group2, assigned[index2]]) - ), - showLegend - }; -} -function extractOperatingPointValues(spec) { - if (!spec.operatingPoint) return []; - const dim = spec.operatingPoint.dimension; - const key = dim === "probability_threshold" ? spec.type === "decision_curve" || spec.type === "interventions_avoided" ? "threshold" : "cutoff" : "ppcr"; - if (dim === "probability_threshold") { - const seriesIds = spec.series.map((s2) => s2.id); - if (seriesIds.length === 0) return []; - let intersectionSet = null; - for (const id2 of seriesIds) { - const sData = spec.data.filter((datum2) => datum2.seriesId === id2); - const sValues = sData.map((datum2) => datum2[key]).filter( - (val) => typeof val === "number" && Number.isFinite(val) - ); - const sSet = new Set(sValues); - if (intersectionSet === null) { - intersectionSet = sSet; - } else { - const currentIntersection = intersectionSet; - intersectionSet = new Set( - Array.from(currentIntersection).filter((val) => sSet.has(val)) - ); - } - } - return Array.from(intersectionSet ?? []).sort((a2, b) => a2 - b); - } else { - const rawValues = spec.data.map((datum2) => datum2[key]).filter( - (val) => typeof val === "number" && Number.isFinite(val) - ); - const uniqueSorted = [...new Set(rawValues)].sort((a2, b) => a2 - b); - return uniqueSorted; - } -} -function filterSpecByGroups(spec, activeGroups) { - const visibleSeries = spec.series.filter((s2) => activeGroups.has(s2.display.group)); - const visibleSeriesIds = new Set(visibleSeries.map((s2) => s2.id)); - return { - ...spec, - series: visibleSeries, - data: spec.data.filter((d) => visibleSeriesIds.has(d.seriesId)) - }; -} -function renderWithLegendFiltering(spec, options, render, preferredValue, onValueChange) { - const allGroups = displayGroups(spec); - let currentOpVal = preferredValue; - if (allGroups.length <= 1) { - return render(spec, options, currentOpVal, (val) => { - currentOpVal = val; - if (onValueChange) onValueChange(val); - }); - } - const childOptions = { - ...options, - allGroups, - showLegend: false - }; - const resolved = resolveV2RenderOptions(allGroups, childOptions); - const { theme, colorByGroup } = resolved; - const labelByGroup = new Map(spec.series.map((s2) => [s2.display.group, s2.display.label])); - const activeGroups = new Set(allGroups); - const container = document.createElement("div"); - container.className = "rtichoke-legend-chart"; - container.style.maxWidth = `${theme.width}px`; - const legendNav = document.createElement("div"); - legendNav.className = "rtichoke-legend"; - legendNav.style.paddingLeft = `${theme.margins.left}px`; - legendNav.setAttribute("aria-label", "Chart legend"); - const buttonsByGroup = /* @__PURE__ */ new Map(); - allGroups.forEach((group2) => { - const btn = document.createElement("button"); - btn.type = "button"; - btn.className = "rtichoke-legend-item"; - btn.setAttribute("aria-pressed", "true"); - const groupLabel = labelByGroup.get(group2) ?? group2; - btn.setAttribute("aria-label", `Toggle series ${groupLabel}`); - const swatch = document.createElement("span"); - swatch.className = "rtichoke-legend-swatch"; - const lineSpan = document.createElement("span"); - lineSpan.className = "rtichoke-legend-line"; - lineSpan.style.backgroundColor = colorByGroup.get(group2) ?? "#000000"; - swatch.append(lineSpan); - const labelSpan = document.createElement("span"); - labelSpan.className = "rtichoke-legend-label"; - labelSpan.textContent = groupLabel; - btn.append(swatch, labelSpan); - legendNav.append(btn); - buttonsByGroup.set(group2, btn); - }); - const contentArea = document.createElement("div"); - contentArea.className = "rtichoke-legend-content"; - const updateChart = () => { - const filteredSpec = filterSpecByGroups(spec, activeGroups); - const chartContent = render(filteredSpec, childOptions, currentOpVal, (val) => { - currentOpVal = val; - if (onValueChange) onValueChange(val); - }); - contentArea.replaceChildren(chartContent); - }; - allGroups.forEach((group2) => { - const btn = buttonsByGroup.get(group2); - btn.addEventListener("click", () => { - const isCurrentlyActive = activeGroups.has(group2); - if (isCurrentlyActive) { - if (activeGroups.size <= 1) { - return; - } - activeGroups.delete(group2); - btn.setAttribute("aria-pressed", "false"); - } else { - activeGroups.add(group2); - btn.setAttribute("aria-pressed", "true"); - } - updateChart(); - }); - }); - container.append(legendNav, contentArea); - updateChart(); - return container; -} -function renderWithOperatingPointSelection(spec, options, render, preferredValue, onValueChange) { - if (!spec.operatingPoint) return render(spec, void 0); - const values2 = extractOperatingPointValues(spec); - if (values2.length === 0) return render(spec, void 0); - const resolved = resolveV2RenderOptions(displayGroups(spec), options); - const { theme } = resolved; - const container = document.createElement("div"); - container.className = "rtichoke-operating-point-chart"; - container.style.maxWidth = `${theme.width}px`; - const control = document.createElement("div"); - control.className = "rtichoke-operating-point-control"; - control.style.marginLeft = `${theme.margins.left}px`; - control.style.marginRight = `${theme.margins.right}px`; - const ariaLabelText = spec.operatingPoint.dimension === "probability_threshold" ? "Probability threshold" : "Predicted positives condition rate (PPCR)"; - const visibleLabelText = spec.operatingPoint.dimension === "probability_threshold" ? "Probability threshold" : "PPCR"; - const label = document.createElement("label"); - label.className = "rtichoke-operating-point-label"; - const labelSpan = document.createElement("span"); - labelSpan.textContent = `${visibleLabelText}: `; - const valueSpan = document.createElement("span"); - valueSpan.className = "rtichoke-operating-point-value"; - const slider = document.createElement("input"); - slider.type = "range"; - slider.className = "rtichoke-operating-point-slider"; - slider.min = "0"; - slider.max = String(values2.length - 1); - slider.step = "1"; - slider.setAttribute("aria-label", ariaLabelText); - let selectedIndex = 0; - if (preferredValue !== void 0) { - const matchIdx = values2.indexOf(preferredValue); - if (matchIdx !== -1) { - selectedIndex = matchIdx; - } - } - const selectedValue = values2[selectedIndex]; - slider.value = String(selectedIndex); - const formattedVal = selectedValue.toFixed(theme.tip.digits); - valueSpan.textContent = formattedVal; - slider.setAttribute("aria-valuetext", formattedVal); - if (onValueChange) { - onValueChange(selectedValue); - } - label.append(labelSpan, valueSpan); - control.append(label, slider); - const chart = document.createElement("div"); - chart.className = "rtichoke-operating-point-content"; - const draw = (val) => { - chart.replaceChildren(render(spec, val)); - }; - slider.addEventListener("input", () => { - const idx = Number(slider.value); - const val = values2[idx]; - const valFormatted = val.toFixed(theme.tip.digits); - valueSpan.textContent = valFormatted; - slider.setAttribute("aria-valuetext", valFormatted); - if (onValueChange) { - onValueChange(val); - } - draw(val); - }); - container.append(chart, control); - draw(selectedValue); - return container; -} -function displayBySeries(spec) { - return new Map(spec.series.map((series) => [series.id, series.display])); -} -function displayGroups(spec) { - return [...new Set(spec.series.map((series) => series.display.group))]; -} -function seriesRenderData(spec, data) { - const displays = displayBySeries(spec); - return data.map((datum2) => ({ - ...datum2, - group: displays.get(datum2.seriesId).group, - label: displays.get(datum2.seriesId).label - })); -} -function tooltip(digits, fields) { - return fields.filter(([, value]) => value !== void 0).map( - ([label, value]) => `${label}: ${typeof value === "number" ? value.toFixed(digits) : String(value)}` - ).join("\n"); -} -function basePlotOptions(resolved, spec) { - const { theme } = resolved; - const labelByGroup = new Map( - spec.series.map((series) => [series.display.group, series.display.label]) - ); - return { - width: theme.width, - height: theme.height, - marginTop: theme.margins.top, - marginRight: theme.margins.right, - marginBottom: theme.margins.bottom, - marginLeft: theme.margins.left, - style: { - background: theme.background, - color: theme.axis.color, - fontFamily: theme.typography.fontFamily, - fontSize: `${theme.typography.fontSize}px` - }, - color: { - legend: resolved.showLegend, - domain: resolved.groups, - range: resolved.colors, - tickFormat: (group2) => labelByGroup.get(group2) ?? group2 - } - }; -} -function axisOptions2(theme, label, domain) { - return { - label, - domain, - grid: false, - line: true, - ticks: theme.axis.ticks, - tickSize: theme.axis.tickSize, - tickPadding: theme.axis.tickPadding, - tickFormat: theme.axis.numberFormat - }; -} -function referenceMarks(spec, theme) { - const style = { - stroke: theme.reference.color, - strokeWidth: theme.reference.width, - strokeDasharray: theme.reference.dash - }; - const marks2 = []; - for (const reference of spec.references ?? []) { - if (reference.type === "identity") - marks2.push( - line( - [ - { x: 0, y: 0 }, - { x: 1, y: 1 } - ], - { x: "x", y: "y", ...style, title: reference.label } - ) - ); - else if (reference.type === "horizontal" && reference.value !== void 0) - marks2.push( - ruleY([reference.value], { ...style, title: reference.label }) - ); - else if (reference.type === "path" && reference.points) - marks2.push( - line(reference.points, { - x: "x", - y: "y", - ...style, - title: reference.label - }) - ); - } - return marks2; -} -function finishMarks(marks2, theme) { - return marks2; -} -function thinOrdinaryPoints(data, getSeriesId, targetMax = 40) { - const bySeries = /* @__PURE__ */ new Map(); - for (const item of data) { - const id2 = getSeriesId(item); - let list = bySeries.get(id2); - if (!list) { - list = []; - bySeries.set(id2, list); - } - list.push(item); - } - const result = []; - for (const list of bySeries.values()) { - const n = list.length; - if (n <= targetMax) { - result.push(...list); - } else { - const selectedIndices = /* @__PURE__ */ new Set(); - for (let k2 = 0; k2 < targetMax; k2++) { - const idx = Math.round(k2 * (n - 1) / (targetMax - 1)); - selectedIndices.add(idx); - } - for (const idx of selectedIndices) { - result.push(list[idx]); - } - } - } - return result; -} -function ordinaryPointDotMark(data, x2, y2, resolved, customTheme) { - const thinned = thinOrdinaryPoints(data, (d) => d.seriesId, 40); - const theme = resolved.theme; - const r = customTheme?.marker?.radius ?? theme.marker.radius; - const stroke = customTheme?.marker?.stroke ?? theme.marker.stroke; - const strokeWidth = customTheme?.marker?.strokeWidth ?? theme.marker.strokeWidth; - return dot(thinned, { - ariaLabel: "ordinary-point", - x: x2, - y: y2, - fill: "group", - stroke, - strokeWidth, - r, - title: (d) => d.title, - tip: true - }); -} -function operatingPointDotMark(data, x2, y2, resolved, customTheme) { - const isMultiSeries = resolved.groups.length > 1; - const fill = customTheme?.marker?.fill ?? (isMultiSeries ? "group" : "#f6e3be"); - const stroke = customTheme?.marker?.stroke ?? "#1a1a1a"; - const strokeWidth = customTheme?.marker?.strokeWidth ?? 2.5; - const r = customTheme?.marker?.radius ?? 7.5; - return dot(data, { - className: "rtichoke-selected-operating-point", - x: x2, - y: y2, - fill, - stroke, - strokeWidth, - r, - title: (d) => d.title, - tip: true - }); -} -function themedPlot(options, theme) { - const plot2 = plot(options); - for (const label of plot2.querySelectorAll( - '[aria-label$="axis label"] text' - )) { - label.style.fontSize = `${theme.typography.axisTitleSize}px`; - label.style.fontWeight = String(theme.typography.axisTitleWeight); - } - for (const frame3 of plot2.querySelectorAll( - '[aria-label="frame"]' - )) { - frame3.setAttribute("stroke", theme.frame.color); - } - if (plot2 instanceof HTMLElement) { - plot2.style.fontSize = `${theme.typography.legendSize}px`; - for (const swatch of plot2.querySelectorAll( - 'svg[width="15"], div[class*="-swatches"] svg' - )) { - swatch.setAttribute("width", String(theme.legend.swatchWidth)); - swatch.setAttribute("height", "10"); - } - } - return plot2; -} -function renderRocChart(spec, options = {}, selectedOperatingPointValue) { - assertV2ReferentialIntegrity(spec); - const resolved = resolveV2RenderOptions(displayGroups(spec), options); - const { theme } = resolved; - const opDim = spec.operatingPoint?.dimension; - const data = seriesRenderData(spec, spec.data).map((datum2) => { - const fpr = 1 - datum2.specificity; - const fields = [["Series", datum2.label]]; - if (opDim === "ppcr") { - if (datum2.ppcr !== void 0) fields.push(["PPCR", datum2.ppcr]); - fields.push(["Cutoff", datum2.cutoff]); - } else { - fields.push(["Cutoff", datum2.cutoff]); - if (datum2.ppcr !== void 0) fields.push(["PPCR", datum2.ppcr]); - } - fields.push( - ["Sensitivity", datum2.sensitivity], - ["Specificity", datum2.specificity], - ["False Positive Rate", fpr] - ); - return { - ...datum2, - false_positive_rate: fpr, - title: tooltip(theme.tip.digits, fields) - }; - }); - const marks2 = referenceMarks(spec, theme); - marks2.push( - line(data, { - x: "false_positive_rate", - y: "sensitivity", - z: "seriesId", - stroke: "group", - strokeWidth: theme.line.width, - strokeDasharray: theme.line.dash ?? void 0, - title: (d) => d.title, - tip: true - }), - ordinaryPointDotMark( - data, - "false_positive_rate", - "sensitivity", - resolved, - options.theme - ) - ); - if (selectedOperatingPointValue !== void 0 && spec.operatingPoint) { - const dimField = spec.operatingPoint.dimension === "probability_threshold" ? "cutoff" : "ppcr"; - const selectedPoints = data.filter((datum2) => datum2[dimField] === selectedOperatingPointValue); - if (selectedPoints.length > 0) { - marks2.push( - operatingPointDotMark(selectedPoints, "false_positive_rate", "sensitivity", resolved, options.theme) - ); - } - } - return themedPlot( - { - ...basePlotOptions(resolved, spec), - x: axisOptions2(theme, spec.xAxis.label, spec.xAxis.domain), - y: axisOptions2(theme, spec.yAxis.label, spec.yAxis.domain), - marks: finishMarks(marks2, theme) - }, - theme - ); -} -function renderRocV2(spec, options = {}) { - return renderWithLegendFiltering( - spec, - options, - (filteredSpec, opts, preferredOpVal, onOpValChange) => renderWithHorizonSelection( - filteredSpec, - (selected, pOpVal, onOpChange) => renderWithOperatingPointSelection( - selected, - opts, - (specWithOp, activeOpVal) => renderRocChart(specWithOp, opts, activeOpVal), - pOpVal, - onOpChange - ), - preferredOpVal, - onOpValChange - ) - ); -} -function renderCalibrationV2(spec, options = {}) { - assertV2ReferentialIntegrity(spec); - const resolved = resolveV2RenderOptions(displayGroups(spec), options); - const { theme } = resolved; - const data = seriesRenderData(spec, spec.data).map((datum2) => ({ - ...datum2, - title: tooltip(theme.tip.digits, [ - ["Series", datum2.label], - ["Predicted", datum2.predicted], - ["Observed", datum2.observed], - ["Events", datum2.events], - ["Total", datum2.total] - ]) - })); - const marks2 = referenceMarks(spec, theme); - marks2.push( - line(data, { - x: "predicted", - y: "observed", - z: "seriesId", - stroke: "group", - strokeWidth: theme.line.width, - strokeDasharray: theme.line.dash ?? void 0, - title: (d) => d.title, - tip: true - }) - ); - const discrete = data.filter((datum2) => datum2.method === "discrete"); - if (discrete.length > 0) - marks2.push( - dot(discrete, { - x: "predicted", - y: "observed", - fill: theme.marker.fill ?? "group", - stroke: theme.marker.stroke, - strokeWidth: theme.marker.strokeWidth, - r: theme.marker.radius, - title: (d) => d.title, - tip: true - }) - ); - const hasDistribution = (spec.distribution?.length ?? 0) > 0; - const mainHeight = hasDistribution ? Math.round(theme.height * 0.8) : theme.height; - const observedValues = data.map((datum2) => datum2.observed).filter(Number.isFinite); - const yDomain = spec.yAxis.domain ?? [ - Math.min(0, ...observedValues), - Math.max(1, ...observedValues) - ]; - const calibration = themedPlot( - { - ...basePlotOptions(resolved, spec), - height: mainHeight, - marginBottom: hasDistribution ? 8 : theme.margins.bottom, - x: hasDistribution ? { - ...axisOptions2(theme, spec.xAxis.label, spec.xAxis.domain), - axis: null, - label: null - } : axisOptions2(theme, spec.xAxis.label, spec.xAxis.domain), - y: axisOptions2(theme, spec.yAxis.label, yDomain), - marks: finishMarks(marks2, theme) - }, - theme - ); - if (!hasDistribution || !spec.distribution) return calibration; - const distribution = seriesRenderData(spec, spec.distribution).map( - (datum2) => ({ - ...datum2, - title: tooltip(theme.tip.digits, [ - ["Series", datum2.label], - ["Midpoint", datum2.midpoint], - ["Count", datum2.count] - ]) - }) - ); - const histogram = themedPlot( - { - ...basePlotOptions(resolved, spec), - height: theme.height - mainHeight, - marginTop: 0, - marginBottom: theme.margins.bottom, - x: axisOptions2(theme, spec.xAxis.label, spec.xAxis.domain), - y: { - label: null, - grid: false, - ticks: 3, - tickSize: theme.axis.tickSize, - tickPadding: theme.axis.tickPadding - }, - color: { legend: false, domain: resolved.groups, range: resolved.colors }, - marks: finishMarks( - [ - rectY(distribution, { - x1: (datum2) => datum2.midpoint - datum2.binWidth / 2, - x2: (datum2) => datum2.midpoint + datum2.binWidth / 2, - y: "count", - fill: "group", - fillOpacity: 1 / Math.max(resolved.groups.length, 1), - title: (d) => d.title, - tip: true - }) - ], - theme - ) - }, - theme - ); - const container = document.createElement("div"); - container.className = "rtichoke-calibration"; - container.style.width = `${theme.width}px`; - container.style.maxWidth = "100%"; - container.append(calibration, histogram); - return container; -} -function renderLineChart(spec, options, x2, y2, selectedOperatingPointValue) { - assertV2ReferentialIntegrity(spec); - const resolved = resolveV2RenderOptions(displayGroups(spec), options); - const { theme } = resolved; - const opDim = spec.operatingPoint?.dimension; - const data = seriesRenderData( - spec, - spec.data - ).map((datum2) => { - const values2 = datum2; - const fields = [["Series", datum2.label]]; - if (spec.type === "precision_recall") { - if (opDim === "ppcr") { - if (values2.ppcr !== void 0) fields.push(["PPCR", values2.ppcr]); - fields.push(["Cutoff", values2.cutoff]); - } else { - fields.push(["Cutoff", values2.cutoff]); - if (values2.ppcr !== void 0) fields.push(["PPCR", values2.ppcr]); - } - fields.push(["Sensitivity", values2.sensitivity], ["PPV", values2.ppv]); - } else if (spec.type === "gains") { - if (opDim === "probability_threshold") { - fields.push(["Cutoff", values2.cutoff]); - fields.push(["PPCR", values2.ppcr]); - } else { - fields.push(["PPCR", values2.ppcr]); - fields.push(["Cutoff", values2.cutoff]); - } - fields.push(["Sensitivity", values2.sensitivity]); - } else if (spec.type === "lift") { - if (opDim === "probability_threshold") { - fields.push(["Cutoff", values2.cutoff]); - fields.push(["PPCR", values2.ppcr]); - } else { - fields.push(["PPCR", values2.ppcr]); - fields.push(["Cutoff", values2.cutoff]); - } - fields.push(["Lift", values2.lift]); - } - return { - ...datum2, - title: tooltip(theme.tip.digits, fields) - }; - }); - const marks2 = referenceMarks(spec, theme); - marks2.push( - line(data, { - x: x2, - y: y2, - z: "seriesId", - stroke: "group", - strokeWidth: theme.line.width, - strokeDasharray: theme.line.dash ?? void 0, - title: (d) => d.title, - tip: true - }), - ordinaryPointDotMark( - data, - x2, - y2, - resolved, - options.theme - ) - ); - if (selectedOperatingPointValue !== void 0 && spec.operatingPoint) { - const dim = spec.operatingPoint.dimension; - const dimField = dim === "probability_threshold" ? "cutoff" : "ppcr"; - const selectedPoints = data.filter((datum2) => datum2[dimField] === selectedOperatingPointValue); - if (selectedPoints.length > 0) { - marks2.push( - operatingPointDotMark(selectedPoints, x2, y2, resolved, options.theme) - ); - } - } - return themedPlot( - { - ...basePlotOptions(resolved, spec), - x: axisOptions2(theme, spec.xAxis.label, spec.xAxis.domain), - y: axisOptions2(theme, spec.yAxis.label, spec.yAxis.domain), - marks: finishMarks(marks2, theme) - }, - theme - ); -} -function horizons(spec) { - return [ - ...new Set( - spec.series.map((series) => series.horizon).filter((horizon) => horizon !== void 0) - ) - ]; -} -function selectHorizonSpec(spec, horizon) { - const series = spec.series.filter( - (item) => item.horizon === void 0 || item.horizon === horizon - ); - const seriesIds = new Set(series.map((item) => item.id)); - return { - ...spec, - series, - data: spec.data.filter((datum2) => seriesIds.has(datum2.seriesId)), - references: spec.references?.filter( - (reference) => reference.scope !== "population_horizon" || reference.horizon === horizon - ) - }; -} -function renderWithHorizonSelection(spec, render, preferredValue, onValueChange) { - const availableHorizons = horizons(spec); - if (availableHorizons.length <= 1) return render(spec, preferredValue, onValueChange); - let currentOpValue = preferredValue; - const container = document.createElement("div"); - container.className = "rtichoke-horizon-chart"; - const control = document.createElement("label"); - control.className = "rtichoke-horizon-control"; - control.textContent = "Fixed Time Horizon: "; - const select = document.createElement("select"); - select.className = "rtichoke-horizon-select"; - select.setAttribute("aria-label", "Fixed Time Horizon"); - for (const horizon of availableHorizons) { - const option = document.createElement("option"); - option.value = String(horizon); - option.textContent = String(horizon); - select.append(option); - } - control.append(select); - const chart = document.createElement("div"); - const draw = (horizon) => { - chart.replaceChildren( - render( - selectHorizonSpec(spec, horizon), - currentOpValue, - (val) => { - currentOpValue = val; - if (onValueChange) onValueChange(val); - } - ) - ); - }; - select.addEventListener("change", () => draw(Number(select.value))); - container.append(control, chart); - draw(availableHorizons[0]); - return container; -} -function renderHorizonLineChart(spec, options, x2, y2) { - return renderWithLegendFiltering( - spec, - options, - (filteredSpec, opts, preferredOpVal, onOpValChange) => renderWithHorizonSelection( - filteredSpec, - (selected, pOpVal, onOpChange) => renderWithOperatingPointSelection( - selected, - opts, - (specWithOp, activeOpVal) => renderLineChart(specWithOp, opts, x2, y2, activeOpVal), - pOpVal, - onOpChange - ), - preferredOpVal, - onOpValChange - ) - ); -} -function renderPrecisionRecallV2(spec, options = {}) { - return renderHorizonLineChart(spec, options, "sensitivity", "ppv"); -} -function renderGainsV2(spec, options = {}) { - return renderHorizonLineChart(spec, options, "ppcr", "sensitivity"); -} -function renderLiftV2(spec, options = {}) { - return renderHorizonLineChart(spec, options, "ppcr", "lift"); -} - -// src/render/decision-curve.ts -function renderDecisionCurveV2(spec, options = {}) { - assertV2ReferentialIntegrity(spec); - return renderWithLegendFiltering( - spec, - options, - (filteredSpec, opts, preferredOpVal, onOpValChange) => renderWithHorizonSelection( - filteredSpec, - (selected, pOpVal, onOpChange) => renderWithOperatingPointSelection( - selected, - opts, - (specWithOp, activeOpVal) => renderDecisionCurveChart(specWithOp, opts, activeOpVal), - pOpVal, - onOpChange - ), - preferredOpVal, - onOpValChange - ) - ); -} -function renderDecisionCurveChart(spec, options, selectedOperatingPointValue) { - const groups2 = [...new Set(spec.series.map((series) => series.display.group))]; - const resolved = resolveV2RenderOptions(groups2, { ...options, showLegend: false }); - const { theme } = resolved; - const displayBySeries2 = new Map(spec.series.map((series) => [series.id, series.display])); - const labelByGroup = new Map(spec.series.map((series) => [series.display.group, series.display.label])); - const data = spec.data.map((datum2) => ({ - ...datum2, - group: displayBySeries2.get(datum2.seriesId).group, - label: displayBySeries2.get(datum2.seriesId).label, - title: tooltip(theme.tip.digits, [ - ["Series", displayBySeries2.get(datum2.seriesId).label], - ["Threshold", datum2.threshold], - ["Net Benefit", datum2.netBenefit] - ]) - })); - const defaultZeroStyle = { stroke: theme.reference.color, strokeWidth: theme.reference.width, strokeDasharray: theme.reference.dash }; - const defaultPathStyle = { stroke: theme.reference.color, strokeWidth: theme.reference.width, strokeDasharray: "4,3" }; - const marks2 = []; - for (const reference of spec.references) { - if (reference.benchmark === "treat_none") { - marks2.push(ruleY([0], { ...defaultZeroStyle, title: () => reference.label ?? "Treat None" })); - } else { - marks2.push(line(reference.points, { x: "x", y: "y", ...defaultPathStyle, title: () => reference.label ?? `Treat All \u2014 ${reference.population}` })); - } - } - marks2.push( - line(data, { x: "threshold", y: "netBenefit", z: "seriesId", stroke: "group", strokeWidth: theme.line.width, strokeDasharray: theme.line.dash ?? void 0 }), - ordinaryPointDotMark(data, "threshold", "netBenefit", resolved, options.theme) - ); - if (selectedOperatingPointValue !== void 0 && spec.operatingPoint) { - const selectedPoints = data.filter((datum2) => datum2.threshold === selectedOperatingPointValue); - if (selectedPoints.length > 0) { - marks2.push( - operatingPointDotMark(selectedPoints, "threshold", "netBenefit", resolved, options.theme) - ); - } - } - const axis2 = (label, domain) => ({ label, domain, grid: false, line: true, ticks: theme.axis.ticks, tickSize: theme.axis.tickSize, tickPadding: theme.axis.tickPadding, tickFormat: theme.axis.numberFormat }); - return themedPlot({ - width: theme.width, - height: theme.height, - marginTop: theme.margins.top, - marginRight: theme.margins.right, - marginBottom: theme.margins.bottom, - marginLeft: theme.margins.left, - style: { background: theme.background, color: theme.axis.color, fontFamily: theme.typography.fontFamily, fontSize: `${theme.typography.fontSize}px` }, - color: { legend: resolved.showLegend, domain: resolved.groups, range: resolved.colors, tickFormat: (group2) => labelByGroup.get(group2) ?? group2 }, - x: axis2(spec.xAxis.label, spec.xAxis.domain), - y: axis2(spec.yAxis.label, spec.yAxis.domain), - marks: marks2 - }, theme); -} - -// src/render/interventions-avoided.ts -function renderInterventionsAvoidedV2(spec, options = {}) { - assertV2ReferentialIntegrity(spec); - return renderWithLegendFiltering( - spec, - options, - (filteredSpec, opts, preferredOpVal, onOpValChange) => renderWithHorizonSelection( - filteredSpec, - (selected, pOpVal, onOpChange) => renderWithOperatingPointSelection( - selected, - opts, - (specWithOp, activeOpVal) => renderInterventionsAvoidedChart(specWithOp, opts, activeOpVal), - pOpVal, - onOpChange - ), - preferredOpVal, - onOpValChange - ) - ); -} -function renderInterventionsAvoidedChart(spec, options, selectedOperatingPointValue) { - const groups2 = [...new Set(spec.series.map((series) => series.display.group))]; - const resolved = resolveV2RenderOptions(groups2, { ...options, showLegend: false }); - const { theme } = resolved; - const displayBySeries2 = new Map(spec.series.map((series) => [series.id, series.display])); - const labelByGroup = new Map(spec.series.map((series) => [series.display.group, series.display.label])); - const data = spec.data.map((datum2) => ({ - ...datum2, - group: displayBySeries2.get(datum2.seriesId).group, - label: displayBySeries2.get(datum2.seriesId).label, - title: tooltip(theme.tip.digits, [ - ["Series", displayBySeries2.get(datum2.seriesId).label], - ["Threshold", datum2.threshold], - ["Interventions Avoided", datum2.interventionsAvoided] - ]) - })); - const defaultZeroStyle = { stroke: theme.reference.color, strokeWidth: theme.reference.width, strokeDasharray: theme.reference.dash }; - const defaultPathStyle = { stroke: theme.reference.color, strokeWidth: theme.reference.width, strokeDasharray: "4,3" }; - const marks2 = []; - for (const reference of spec.references) { - if (reference.benchmark === "treat_all") { - marks2.push(ruleY([0], { ...defaultZeroStyle, title: () => reference.label ?? "Treat All" })); - } else { - marks2.push(line(reference.points, { x: "x", y: "y", ...defaultPathStyle, title: () => reference.label ?? `Treat None \u2014 ${reference.population}` })); - } - } - marks2.push( - line(data, { x: "threshold", y: "interventionsAvoided", z: "seriesId", stroke: "group", strokeWidth: theme.line.width, strokeDasharray: theme.line.dash ?? void 0 }), - ordinaryPointDotMark(data, "threshold", "interventionsAvoided", resolved, options.theme) - ); - if (selectedOperatingPointValue !== void 0 && spec.operatingPoint) { - const selectedPoints = data.filter((datum2) => datum2.threshold === selectedOperatingPointValue); - if (selectedPoints.length > 0) { - marks2.push( - operatingPointDotMark(selectedPoints, "threshold", "interventionsAvoided", resolved, options.theme) - ); - } - } - const axis2 = (label, domain) => ({ label, domain, grid: false, line: true, ticks: theme.axis.ticks, tickSize: theme.axis.tickSize, tickPadding: theme.axis.tickPadding, tickFormat: theme.axis.numberFormat }); - return themedPlot({ - width: theme.width, - height: theme.height, - marginTop: theme.margins.top, - marginRight: theme.margins.right, - marginBottom: theme.margins.bottom, - marginLeft: theme.margins.left, - style: { background: theme.background, color: theme.axis.color, fontFamily: theme.typography.fontFamily, fontSize: `${theme.typography.fontSize}px` }, - color: { legend: resolved.showLegend, domain: resolved.groups, range: resolved.colors, tickFormat: (group2) => labelByGroup.get(group2) ?? group2 }, - x: axis2(spec.xAxis.label, spec.xAxis.domain), - y: axis2(spec.yAxis.label, spec.yAxis.domain), - marks: marks2 - }, theme); -} - -// src/render/performance-table.ts -var MISSING = "\u2014"; -var PRIMARY_METRIC_ORDER = [ - { id: "sensitivity", defaultLabel: "Sensitivity" }, - { id: "specificity", defaultLabel: "Specificity" }, - { id: "ppv", defaultLabel: "PPV" }, - { id: "npv", defaultLabel: "NPV" }, - { id: "lift", defaultLabel: "Lift" }, - { id: "net_benefit", defaultLabel: "Net Benefit" } -]; -function cell(document2, text2, className) { - const element = document2.createElement("td"); - const contentSpan = document2.createElement("span"); - contentSpan.className = "rtichoke-performance-table__cell-text"; - contentSpan.textContent = text2; - element.append(contentSpan); - if (className) element.className = className; - return element; -} -function header(document2, text2, options) { - const element = document2.createElement("th"); - element.scope = options?.scope ?? "col"; - if (options?.colSpan) element.colSpan = options.colSpan; - if (options?.rowSpan) element.rowSpan = options.rowSpan; - element.textContent = text2; - if (options?.className) element.className = options.className; - if (options?.ariaLabel) element.setAttribute("aria-label", options.ariaLabel); - return element; -} -function extractConfusionCounts(rowValues) { - const map5 = new Map(rowValues.map((v) => [v.metricId, v.estimate])); - const tp = map5.get("true_positives"); - const tn = map5.get("true_negatives"); - const fp = map5.get("false_positives"); - const fn = map5.get("false_negatives"); - if (tp === void 0 || tp === null || isNaN(tp) || tn === void 0 || tn === null || isNaN(tn) || fp === void 0 || fp === null || isNaN(fp) || fn === void 0 || fn === null || isNaN(fn)) { - return null; - } - return { tp, tn, fp, fn }; -} -function renderConfusionCell(document2, val, n, className) { - const td = document2.createElement("td"); - td.className = className; - const valSpan = document2.createElement("span"); - valSpan.className = "rtichoke-performance-table__confusion-val"; - valSpan.textContent = formatCount(val); - const pctSpan = document2.createElement("span"); - pctSpan.className = "rtichoke-performance-table__confusion-pct"; - if (n > 0 && !isNaN(val) && !isNaN(n)) { - const pct = val / n * 100; - pctSpan.textContent = `${pct.toFixed(2)}%`; - } else { - pctSpan.textContent = MISSING; - } - td.append(valSpan, pctSpan); - return td; -} -var tableInstanceCounter = 0; -function humanizeContextValue(val) { - return val.split("_").map((w, i) => i === 0 ? w.charAt(0).toUpperCase() + w.slice(1) : w).join(" "); -} -function formatCount(val) { - if (Number.isInteger(val)) return val.toString(); - return new Intl.NumberFormat("en-US", { maximumFractionDigits: 2 }).format(val); -} -function format2Decimals(val) { - return val.toFixed(2); -} -function determineThresholdPrecision(values2) { - if (values2.length <= 1) return 2; - let decimals = 2; - while (decimals <= 6) { - const formatted = values2.map((v) => v.toFixed(decimals)); - const uniqueFormatted = new Set(formatted); - if (uniqueFormatted.size === new Set(values2).size) { - return decimals; - } - decimals++; - } - return decimals; -} -function formatMetricValue(value, formatter) { - if (!value || value.estimate === null || value.estimate === void 0 || isNaN(value.estimate)) return MISSING; - const est = formatter(value.estimate); - if (value.lower === void 0 && value.upper === void 0) return est; - const lower2 = value.lower === void 0 || value.lower === null || isNaN(value.lower) ? MISSING : formatter(value.lower); - const upper = value.upper === void 0 || value.upper === null || isNaN(value.upper) ? MISSING : formatter(value.upper); - return `${est} [${lower2}, ${upper}]`; -} -function appendInCellBar(td, document2, percent, isDiverging = false, isNegative = false, barStyle = "positive") { - if (isNaN(percent) || !isFinite(percent)) return; - const bar = document2.createElement("div"); - bar.className = "rtichoke-performance-table__bar"; - const fill = document2.createElement("div"); - fill.className = "rtichoke-performance-table__bar-fill"; - if (isDiverging) { - const width = Math.min(Math.max(percent, 0), 50); - fill.style.width = `${width}%`; - if (isNegative) { - fill.classList.add("rtichoke-performance-table__bar-fill--negative"); - fill.style.right = "50%"; - fill.style.left = "auto"; - } else { - fill.classList.add("rtichoke-performance-table__bar-fill--positive"); - fill.style.left = "50%"; - fill.style.right = "auto"; - } - } else { - const width = Math.min(Math.max(percent, 0), 100); - fill.style.width = `${width}%`; - if (barStyle === "neutral") { - fill.classList.add("rtichoke-performance-table__bar-fill--neutral"); - } else { - fill.classList.add("rtichoke-performance-table__bar-fill--positive"); - } - } - bar.append(fill); - td.append(bar); -} -function renderPerformanceTable(spec, document2 = globalThis.document) { - assertPerformanceTableReferentialIntegrity(spec); - const root2 = document2.createElement("div"); - root2.className = "rtichoke-performance-table"; - if (spec.title) { - const title = document2.createElement("div"); - title.className = "rtichoke-performance-table__title"; - title.textContent = spec.title; - root2.append(title); - } - const scrollWrapper = document2.createElement("div"); - scrollWrapper.className = "rtichoke-performance-table__scroll"; - const table = document2.createElement("table"); - table.className = "rtichoke-performance-table__table"; - const evaluationsMap = new Map(spec.evaluations.map((ev) => [ev.id, ev])); - const distinctModels = new Set(spec.evaluations.map((e) => e.model).filter(Boolean)); - const distinctPopulations = new Set(spec.evaluations.map((e) => e.population).filter(Boolean)); - const showModel = distinctModels.size > 1; - const showPopulation = distinctPopulations.size > 1; - const renderModelCol = showModel; - const renderPopulationCol = showPopulation || !showModel && distinctModels.size === 0 && distinctPopulations.size > 1; - const showEvaluationLabel = spec.evaluations.some((e) => { - if (!e.label) return false; - if (showModel && e.label !== e.model) return true; - if (showPopulation && e.label !== e.population) return true; - if (!showModel && !showPopulation && e.label !== e.model && e.label !== e.population) return true; - return false; - }); - const hasHorizon = spec.rows.some((r) => r.horizon !== void 0); - const hasCensoring = spec.rows.some((r) => r.context?.censoringHeuristic !== void 0); - const hasCompetingEvent = spec.rows.some((r) => r.context?.competingEventHeuristic !== void 0); - const operatingTypes = new Set(spec.rows.map((r) => r.operatingPoint.type)); - const isPureThreshold = operatingTypes.size === 1 && operatingTypes.has("probability_threshold"); - const isPurePpcr = operatingTypes.size === 1 && operatingTypes.has("ppcr"); - const specMetricIds = new Set(spec.metrics.map((m) => m.id)); - const hasPredictedPositivesMetric = specMetricIds.has("predicted_positives"); - const hasPpcrMetric = specMetricIds.has("ppcr"); - const canConstructComposite = hasPredictedPositivesMetric && (hasPpcrMetric || isPurePpcr); - const renderThresholdCol = isPureThreshold || !isPurePpcr && operatingTypes.has("probability_threshold"); - const renderCompositePredPosCol = canConstructComposite; - const renderPpcrFallbackCol = isPurePpcr && !canConstructComposite; - const renderGenericOpCol = !isPureThreshold && !isPurePpcr && !canConstructComposite; - const thresholdValues = spec.rows.filter((r) => r.operatingPoint.type === "probability_threshold").map((r) => r.operatingPoint.value); - const thresholdPrecision = determineThresholdPrecision(thresholdValues); - const primaryMetricSpecs = PRIMARY_METRIC_ORDER.map((p) => { - const match = spec.metrics.find((m) => m.id === p.id); - return match ? { id: match.id, label: match.label || p.defaultLabel } : null; - }).filter((m) => m !== null); - const seenLabels = /* @__PURE__ */ new Set(); - const activePrimaryMetrics = primaryMetricSpecs.filter((m) => { - if (seenLabels.has(m.label)) return false; - seenLabels.add(m.label); - return true; - }); - let maxLift = 0; - let maxAbsNB = 0; - for (const row of spec.rows) { - for (const val of row.values) { - if (val.metricId === "lift" && val.estimate !== null && val.estimate !== void 0 && isFinite(val.estimate)) { - if (val.estimate > maxLift) maxLift = val.estimate; - } - if (val.metricId === "net_benefit" && val.estimate !== null && val.estimate !== void 0 && isFinite(val.estimate)) { - const absVal = Math.abs(val.estimate); - if (absVal > maxAbsNB) maxAbsNB = absVal; - } - } - } - const currentTableInstance = ++tableInstanceCounter; - const head = document2.createElement("thead"); - head.className = "rtichoke-performance-table__header"; - const topRow = document2.createElement("tr"); - const bottomRow = document2.createElement("tr"); - let nonMetricColCount = 1; - bottomRow.append(header(document2, "", { ariaLabel: "Row details", className: "rtichoke-performance-table__toggle-header" })); - if (renderModelCol) { - nonMetricColCount++; - bottomRow.append(header(document2, "Model")); - } - if (renderPopulationCol) { - nonMetricColCount++; - bottomRow.append(header(document2, "Population")); - } - if (showEvaluationLabel) { - nonMetricColCount++; - bottomRow.append(header(document2, "Evaluation")); - } - if (renderThresholdCol) { - nonMetricColCount++; - bottomRow.append(header(document2, "Probability Threshold")); - } - if (renderCompositePredPosCol) { - nonMetricColCount++; - bottomRow.append(header(document2, "Predicted Positives")); - } - if (renderPpcrFallbackCol) { - nonMetricColCount++; - bottomRow.append(header(document2, "PPCR")); - } - if (renderGenericOpCol) { - nonMetricColCount++; - bottomRow.append(header(document2, "Operating Point")); - } - if (hasHorizon) { - nonMetricColCount++; - bottomRow.append(header(document2, "Time Horizon")); - } - if (hasCensoring) { - nonMetricColCount++; - bottomRow.append(header(document2, "Censoring")); - } - if (hasCompetingEvent) { - nonMetricColCount++; - bottomRow.append(header(document2, "Competing Event")); - } - if (activePrimaryMetrics.length > 0) { - const emptySpanner = header(document2, "", { colSpan: nonMetricColCount, className: "rtichoke-performance-table__spanner--empty" }); - topRow.append(emptySpanner); - } - if (activePrimaryMetrics.length > 0) { - const metricsSpanner = header(document2, "Performance Metrics", { - colSpan: activePrimaryMetrics.length, - className: "rtichoke-performance-table__spanner" - }); - topRow.append(metricsSpanner); - for (const metric of activePrimaryMetrics) { - bottomRow.append(header(document2, metric.label, { className: "rtichoke-performance-table__metric-header" })); - } - } - head.append(topRow); - head.append(bottomRow); - table.append(head); - const totalColumns = nonMetricColCount + activePrimaryMetrics.length; - const body = document2.createElement("tbody"); - for (let rowIndex = 0; rowIndex < spec.rows.length; rowIndex++) { - const row = spec.rows[rowIndex]; - const evaluation = evaluationsMap.get(row.evaluationId); - const tr = document2.createElement("tr"); - tr.dataset.evaluationId = row.evaluationId; - const confusion = extractConfusionCounts(row.values); - const detailId = `rtichoke-confusion-detail-${currentTableInstance}-${rowIndex}`; - const toggleTd = document2.createElement("td"); - toggleTd.className = "rtichoke-performance-table__toggle-cell"; - let detailTr = null; - if (confusion) { - const toggleBtn = document2.createElement("button"); - toggleBtn.type = "button"; - toggleBtn.className = "rtichoke-performance-table__toggle-btn"; - toggleBtn.setAttribute("aria-expanded", "false"); - toggleBtn.setAttribute("aria-controls", detailId); - toggleBtn.setAttribute("aria-label", "Show confusion matrix detail"); - toggleBtn.textContent = "\u25B8"; - toggleTd.append(toggleBtn); - detailTr = document2.createElement("tr"); - detailTr.className = "rtichoke-performance-table__detail-row"; - detailTr.hidden = true; - const detailTd = document2.createElement("td"); - detailTd.colSpan = totalColumns; - detailTd.className = "rtichoke-performance-table__detail-cell"; - const detailContainer = document2.createElement("div"); - detailContainer.id = detailId; - detailContainer.className = "rtichoke-performance-table__confusion-container"; - if (row.evaluationId) { - detailContainer.setAttribute("data-evaluation-id", row.evaluationId); - } - detailContainer.setAttribute("data-operating-point-type", row.operatingPoint.type); - detailContainer.setAttribute("data-operating-point-value", row.operatingPoint.value.toString()); - const isHorizon = row.horizon !== void 0; - const titleDiv = document2.createElement("div"); - titleDiv.className = "rtichoke-performance-table__confusion-title"; - titleDiv.textContent = isHorizon ? "Estimated Confusion Matrix" : "Confusion Matrix"; - detailContainer.append(titleDiv); - if (isHorizon) { - const captionDiv = document2.createElement("div"); - captionDiv.className = "rtichoke-performance-table__confusion-caption"; - captionDiv.textContent = "Estimated classification quantities at the displayed time horizon."; - detailContainer.append(captionDiv); - } - const matrixTable = document2.createElement("table"); - matrixTable.className = "rtichoke-performance-table__confusion-table"; - const mHead = document2.createElement("thead"); - const mTopRow = document2.createElement("tr"); - mTopRow.append( - header(document2, "", { className: "rtichoke-performance-table__confusion-header-empty" }), - header(document2, "Predicted", { colSpan: 3, className: "rtichoke-performance-table__confusion-spanner" }) - ); - const mSubRow = document2.createElement("tr"); - mSubRow.append( - header(document2, "", { className: "rtichoke-performance-table__confusion-header-empty" }), - header(document2, "Positive"), - header(document2, "Negative"), - header(document2, "Total") - ); - mHead.append(mTopRow, mSubRow); - matrixTable.append(mHead); - const mBody = document2.createElement("tbody"); - const n = confusion.tp + confusion.tn + confusion.fp + confusion.fn; - const actualPosTotal = confusion.tp + confusion.fn; - const actualNegTotal = confusion.fp + confusion.tn; - const predPosTotal = confusion.tp + confusion.fp; - const predNegTotal = confusion.tn + confusion.fn; - const rPos = document2.createElement("tr"); - rPos.append(header(document2, "Actual Positive", { scope: "row" })); - rPos.append(renderConfusionCell(document2, confusion.tp, n, "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--favorable")); - rPos.append(renderConfusionCell(document2, confusion.fn, n, "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--unfavorable")); - rPos.append(renderConfusionCell(document2, actualPosTotal, n, "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--total")); - mBody.append(rPos); - const rNeg = document2.createElement("tr"); - rNeg.append(header(document2, "Actual Negative", { scope: "row" })); - rNeg.append(renderConfusionCell(document2, confusion.fp, n, "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--unfavorable")); - rNeg.append(renderConfusionCell(document2, confusion.tn, n, "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--favorable")); - rNeg.append(renderConfusionCell(document2, actualNegTotal, n, "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--total")); - mBody.append(rNeg); - const rTot = document2.createElement("tr"); - rTot.append(header(document2, "Total", { scope: "row" })); - rTot.append(renderConfusionCell(document2, predPosTotal, n, "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--total")); - rTot.append(renderConfusionCell(document2, predNegTotal, n, "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--total")); - const grandTotalTd = document2.createElement("td"); - grandTotalTd.className = "rtichoke-performance-table__confusion-cell rtichoke-performance-table__confusion-cell--total"; - const grandValSpan = document2.createElement("span"); - grandValSpan.className = "rtichoke-performance-table__confusion-val"; - grandValSpan.textContent = formatCount(n); - const grandPctSpan = document2.createElement("span"); - grandPctSpan.className = "rtichoke-performance-table__confusion-pct"; - grandPctSpan.textContent = n > 0 ? "100.00%" : MISSING; - grandTotalTd.append(grandValSpan, grandPctSpan); - rTot.append(grandTotalTd); - mBody.append(rTot); - matrixTable.append(mBody); - detailContainer.append(matrixTable); - detailTd.append(detailContainer); - detailTr.append(detailTd); - toggleBtn.addEventListener("click", () => { - if (!detailTr) return; - const isExpanded = toggleBtn.getAttribute("aria-expanded") === "true"; - toggleBtn.setAttribute("aria-expanded", isExpanded ? "false" : "true"); - toggleBtn.setAttribute("aria-label", isExpanded ? "Show confusion matrix detail" : "Hide confusion matrix detail"); - toggleBtn.textContent = isExpanded ? "\u25B8" : "\u25BE"; - detailTr.hidden = isExpanded; - }); - } - tr.append(toggleTd); - if (renderModelCol) { - tr.append(cell(document2, evaluation?.model ?? MISSING, "rtichoke-performance-table__model")); - } - if (renderPopulationCol) { - tr.append(cell(document2, evaluation?.population ?? MISSING, "rtichoke-performance-table__population")); - } - if (showEvaluationLabel) { - tr.append(cell(document2, evaluation?.label ?? evaluation?.id ?? MISSING, "rtichoke-performance-table__evaluation")); - } - const valueMap = new Map(row.values.map((v) => [v.metricId, v])); - if (renderThresholdCol) { - const thVal = row.operatingPoint.type === "probability_threshold" ? row.operatingPoint.value : void 0; - const formattedTh = thVal !== void 0 ? thVal.toFixed(thresholdPrecision) : MISSING; - tr.append(cell(document2, formattedTh, "rtichoke-performance-table__op")); - } - if (renderCompositePredPosCol) { - const predPosVal = valueMap.get("predicted_positives")?.estimate; - const ppcrVal = valueMap.get("ppcr")?.estimate ?? (row.operatingPoint.type === "ppcr" ? row.operatingPoint.value : void 0); - let text2 = MISSING; - let ppcrPercent = NaN; - if (predPosVal !== void 0 && predPosVal !== null && ppcrVal !== void 0 && ppcrVal !== null) { - const formattedCount = formatCount(predPosVal); - const formattedPct = (ppcrVal * 100).toFixed(2); - text2 = `${formattedCount} (${formattedPct}%)`; - ppcrPercent = ppcrVal * 100; - } else if (ppcrVal !== void 0 && ppcrVal !== null) { - const formattedPct = (ppcrVal * 100).toFixed(2); - text2 = `${formattedPct}%`; - ppcrPercent = ppcrVal * 100; - } - const td = cell(document2, text2, "rtichoke-performance-table__op"); - if (!isNaN(ppcrPercent)) { - appendInCellBar(td, document2, ppcrPercent, false, false, "neutral"); - } - tr.append(td); - } - if (renderPpcrFallbackCol) { - const ppcrVal = row.operatingPoint.type === "ppcr" ? row.operatingPoint.value : valueMap.get("ppcr")?.estimate; - const text2 = ppcrVal !== void 0 && ppcrVal !== null ? `PPCR ${ppcrVal.toFixed(2)}` : MISSING; - const td = cell(document2, text2, "rtichoke-performance-table__op"); - if (ppcrVal !== void 0 && ppcrVal !== null) { - appendInCellBar(td, document2, ppcrVal * 100, false, false, "neutral"); - } - tr.append(td); - } - if (renderGenericOpCol) { - const opText = row.operatingPoint.type === "ppcr" ? `PPCR ${row.operatingPoint.value.toFixed(2)}` : `Threshold ${row.operatingPoint.value.toFixed(thresholdPrecision)}`; - tr.append(cell(document2, opText, "rtichoke-performance-table__op")); - } - if (hasHorizon) { - tr.append(cell(document2, row.horizon !== void 0 ? formatCount(row.horizon) : MISSING, "rtichoke-performance-table__horizon")); - } - if (hasCensoring) { - const c4 = row.context?.censoringHeuristic; - tr.append(cell(document2, c4 ? humanizeContextValue(c4) : MISSING, "rtichoke-performance-table__context")); - } - if (hasCompetingEvent) { - const ce = row.context?.competingEventHeuristic; - tr.append(cell(document2, ce ? humanizeContextValue(ce) : MISSING, "rtichoke-performance-table__context")); - } - for (const metric of activePrimaryMetrics) { - const val = valueMap.get(metric.id); - const formattedText = formatMetricValue(val, format2Decimals); - const td = cell(document2, formattedText, "rtichoke-performance-table__metric"); - td.dataset.metricId = metric.id; - if (val && val.estimate !== null && val.estimate !== void 0 && isFinite(val.estimate)) { - const est = val.estimate; - if (["sensitivity", "specificity", "ppv", "npv"].includes(metric.id)) { - appendInCellBar(td, document2, est * 100); - } else if (metric.id === "lift") { - const pct = maxLift > 0 ? est / maxLift * 100 : 0; - appendInCellBar(td, document2, pct); - } else if (metric.id === "net_benefit") { - if (maxAbsNB > 0) { - const isNeg = est < 0; - const barWidth = Math.abs(est) / maxAbsNB * 50; - appendInCellBar(td, document2, barWidth, true, isNeg); - } - } - } - tr.append(td); - } - body.append(tr); - if (detailTr) { - body.append(detailTr); - } - } - table.append(body); - scrollWrapper.append(table); - root2.append(scrollWrapper); - return root2; -} - -// src/render/summary-metrics.ts -var MISSING2 = "\u2014"; -function cell2(document2, text2, className) { - const element = document2.createElement("td"); - element.textContent = text2; - if (className) element.className = className; - return element; -} -function header2(document2, text2) { - const element = document2.createElement("th"); - element.scope = "col"; - element.textContent = text2; - return element; -} -function formatEstimate(value) { - if (value === null) return MISSING2; - return value.toFixed(2); -} -function renderSummaryMetrics(spec, document2 = globalThis.document) { - assertSummaryMetricsReferentialIntegrity(spec); - const root2 = document2.createElement("div"); - root2.className = "rtichoke-summary-metrics"; - if (spec.title) { - const title = document2.createElement("div"); - title.className = "rtichoke-summary-metrics__title"; - title.textContent = spec.title; - root2.append(title); - } - const distinctHorizons = []; - for (const item of spec.metrics) { - if ("horizon" in item && item.horizon !== void 0) { - if (!distinctHorizons.includes(item.horizon)) { - distinctHorizons.push(item.horizon); - } - } - } - let selectedHorizon = distinctHorizons.length > 0 ? distinctHorizons[0] : void 0; - const rowsWithHorizon = []; - if (distinctHorizons.length > 1) { - const control = document2.createElement("label"); - control.className = "rtichoke-horizon-control"; - control.textContent = "Fixed Time Horizon: "; - const select = document2.createElement("select"); - select.className = "rtichoke-horizon-select"; - select.setAttribute("aria-label", "Fixed Time Horizon"); - for (const horizon of distinctHorizons) { - const option = document2.createElement("option"); - option.value = String(horizon); - option.textContent = String(horizon); - select.append(option); - } - select.value = String(selectedHorizon); - select.addEventListener("change", () => { - selectedHorizon = Number(select.value); - updateRowVisibility(); - }); - control.append(select); - root2.append(control); - } - const table = document2.createElement("table"); - table.className = "rtichoke-summary-metrics__table"; - const head = document2.createElement("thead"); - const headRow = document2.createElement("tr"); - for (const label of ["Owner", "Metric", "Estimate"]) { - headRow.append(header2(document2, label)); - } - head.append(headRow); - table.append(head); - const evaluations = new Map( - spec.evaluations.map((evaluation) => [evaluation.id, evaluation]) - ); - const populations = new Map( - spec.populations.map((population) => [population.id, population]) - ); - const body = document2.createElement("tbody"); - for (const item of spec.metrics) { - const tr = document2.createElement("tr"); - let ownerLabel = ""; - let metricLabel = ""; - let horizon = void 0; - if (item.metric === "auroc") { - const evaluation = evaluations.get(item.owner.evaluationId); - ownerLabel = evaluation.label ?? evaluation.model ?? evaluation.population ?? evaluation.id; - metricLabel = "AUROC"; - tr.dataset.metric = "auroc"; - tr.dataset.evaluationId = item.owner.evaluationId; - } else if (item.metric === "prevalence") { - const population = populations.get(item.owner.populationId); - ownerLabel = population.label; - metricLabel = "Prevalence"; - tr.dataset.metric = "prevalence"; - tr.dataset.populationId = item.owner.populationId; - } else if (item.metric === "event_risk") { - const population = populations.get(item.owner.populationId); - ownerLabel = population.label; - metricLabel = "Event Risk"; - horizon = item.horizon; - tr.dataset.metric = "event_risk"; - tr.dataset.populationId = item.owner.populationId; - tr.dataset.horizon = String(item.horizon); - } - tr.append( - cell2(document2, ownerLabel, "rtichoke-summary-metrics__owner"), - cell2(document2, metricLabel, "rtichoke-summary-metrics__metric") - ); - const estimateCell = cell2( - document2, - formatEstimate(item.estimate), - "rtichoke-summary-metrics__estimate" - ); - if (item.estimate === null) { - estimateCell.dataset.unavailable = "true"; - } else { - estimateCell.dataset.estimate = String(item.estimate); - } - tr.append(estimateCell); - rowsWithHorizon.push({ element: tr, horizon }); - body.append(tr); - } - table.append(body); - root2.append(table); - function updateRowVisibility() { - for (const { element, horizon } of rowsWithHorizon) { - if (horizon === void 0 || horizon === selectedHorizon) { - element.style.display = ""; - } else { - element.style.display = "none"; - } - } - } - updateRowVisibility(); - return root2; -} - -// node_modules/@sinclair/typebox/build/esm/errors/function.mjs -function DefaultErrorFunction(error) { - switch (error.errorType) { - case ValueErrorType.ArrayContains: - return "Expected array to contain at least one matching value"; - case ValueErrorType.ArrayMaxContains: - return `Expected array to contain no more than ${error.schema.maxContains} matching values`; - case ValueErrorType.ArrayMinContains: - return `Expected array to contain at least ${error.schema.minContains} matching values`; - case ValueErrorType.ArrayMaxItems: - return `Expected array length to be less or equal to ${error.schema.maxItems}`; - case ValueErrorType.ArrayMinItems: - return `Expected array length to be greater or equal to ${error.schema.minItems}`; - case ValueErrorType.ArrayUniqueItems: - return "Expected array elements to be unique"; - case ValueErrorType.Array: - return "Expected array"; - case ValueErrorType.AsyncIterator: - return "Expected AsyncIterator"; - case ValueErrorType.BigIntExclusiveMaximum: - return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`; - case ValueErrorType.BigIntExclusiveMinimum: - return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`; - case ValueErrorType.BigIntMaximum: - return `Expected bigint to be less or equal to ${error.schema.maximum}`; - case ValueErrorType.BigIntMinimum: - return `Expected bigint to be greater or equal to ${error.schema.minimum}`; - case ValueErrorType.BigIntMultipleOf: - return `Expected bigint to be a multiple of ${error.schema.multipleOf}`; - case ValueErrorType.BigInt: - return "Expected bigint"; - case ValueErrorType.Boolean: - return "Expected boolean"; - case ValueErrorType.DateExclusiveMinimumTimestamp: - return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`; - case ValueErrorType.DateExclusiveMaximumTimestamp: - return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`; - case ValueErrorType.DateMinimumTimestamp: - return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`; - case ValueErrorType.DateMaximumTimestamp: - return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`; - case ValueErrorType.DateMultipleOfTimestamp: - return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`; - case ValueErrorType.Date: - return "Expected Date"; - case ValueErrorType.Function: - return "Expected function"; - case ValueErrorType.IntegerExclusiveMaximum: - return `Expected integer to be less than ${error.schema.exclusiveMaximum}`; - case ValueErrorType.IntegerExclusiveMinimum: - return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`; - case ValueErrorType.IntegerMaximum: - return `Expected integer to be less or equal to ${error.schema.maximum}`; - case ValueErrorType.IntegerMinimum: - return `Expected integer to be greater or equal to ${error.schema.minimum}`; - case ValueErrorType.IntegerMultipleOf: - return `Expected integer to be a multiple of ${error.schema.multipleOf}`; - case ValueErrorType.Integer: - return "Expected integer"; - case ValueErrorType.IntersectUnevaluatedProperties: - return "Unexpected property"; - case ValueErrorType.Intersect: - return "Expected all values to match"; - case ValueErrorType.Iterator: - return "Expected Iterator"; - case ValueErrorType.Literal: - return `Expected ${typeof error.schema.const === "string" ? `'${error.schema.const}'` : error.schema.const}`; - case ValueErrorType.Never: - return "Never"; - case ValueErrorType.Not: - return "Value should not match"; - case ValueErrorType.Null: - return "Expected null"; - case ValueErrorType.NumberExclusiveMaximum: - return `Expected number to be less than ${error.schema.exclusiveMaximum}`; - case ValueErrorType.NumberExclusiveMinimum: - return `Expected number to be greater than ${error.schema.exclusiveMinimum}`; - case ValueErrorType.NumberMaximum: - return `Expected number to be less or equal to ${error.schema.maximum}`; - case ValueErrorType.NumberMinimum: - return `Expected number to be greater or equal to ${error.schema.minimum}`; - case ValueErrorType.NumberMultipleOf: - return `Expected number to be a multiple of ${error.schema.multipleOf}`; - case ValueErrorType.Number: - return "Expected number"; - case ValueErrorType.Object: - return "Expected object"; - case ValueErrorType.ObjectAdditionalProperties: - return "Unexpected property"; - case ValueErrorType.ObjectMaxProperties: - return `Expected object to have no more than ${error.schema.maxProperties} properties`; - case ValueErrorType.ObjectMinProperties: - return `Expected object to have at least ${error.schema.minProperties} properties`; - case ValueErrorType.ObjectRequiredProperty: - return "Expected required property"; - case ValueErrorType.Promise: - return "Expected Promise"; - case ValueErrorType.RegExp: - return "Expected string to match regular expression"; - case ValueErrorType.StringFormatUnknown: - return `Unknown format '${error.schema.format}'`; - case ValueErrorType.StringFormat: - return `Expected string to match '${error.schema.format}' format`; - case ValueErrorType.StringMaxLength: - return `Expected string length less or equal to ${error.schema.maxLength}`; - case ValueErrorType.StringMinLength: - return `Expected string length greater or equal to ${error.schema.minLength}`; - case ValueErrorType.StringPattern: - return `Expected string to match '${error.schema.pattern}'`; - case ValueErrorType.String: - return "Expected string"; - case ValueErrorType.Symbol: - return "Expected symbol"; - case ValueErrorType.TupleLength: - return `Expected tuple to have ${error.schema.maxItems || 0} elements`; - case ValueErrorType.Tuple: - return "Expected tuple"; - case ValueErrorType.Uint8ArrayMaxByteLength: - return `Expected byte length less or equal to ${error.schema.maxByteLength}`; - case ValueErrorType.Uint8ArrayMinByteLength: - return `Expected byte length greater or equal to ${error.schema.minByteLength}`; - case ValueErrorType.Uint8Array: - return "Expected Uint8Array"; - case ValueErrorType.Undefined: - return "Expected undefined"; - case ValueErrorType.Union: - return "Expected union value"; - case ValueErrorType.Void: - return "Expected void"; - case ValueErrorType.Kind: - return `Expected kind '${error.schema[Kind]}'`; - default: - return "Unknown error type"; - } -} -var errorFunction = DefaultErrorFunction; -function GetErrorFunction() { - return errorFunction; -} - -// node_modules/@sinclair/typebox/build/esm/value/deref/deref.mjs -var TypeDereferenceError = class extends TypeBoxError { - constructor(schema) { - super(`Unable to dereference schema with $id '${schema.$ref}'`); - this.schema = schema; - } -}; -function Resolve(schema, references) { - const target = references.find((target2) => target2.$id === schema.$ref); - if (target === void 0) - throw new TypeDereferenceError(schema); - return Deref(target, references); -} -function Pushref(schema, references) { - if (!IsString2(schema.$id) || references.some((target) => target.$id === schema.$id)) - return references; - references.push(schema); - return references; -} -function Deref(schema, references) { - return schema[Kind] === "This" || schema[Kind] === "Ref" ? Resolve(schema, references) : schema; -} - -// node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs -var ValueHashError = class extends TypeBoxError { - constructor(value) { - super(`Unable to hash value`); - this.value = value; - } -}; -var ByteMarker; -(function(ByteMarker2) { - ByteMarker2[ByteMarker2["Undefined"] = 0] = "Undefined"; - ByteMarker2[ByteMarker2["Null"] = 1] = "Null"; - ByteMarker2[ByteMarker2["Boolean"] = 2] = "Boolean"; - ByteMarker2[ByteMarker2["Number"] = 3] = "Number"; - ByteMarker2[ByteMarker2["String"] = 4] = "String"; - ByteMarker2[ByteMarker2["Object"] = 5] = "Object"; - ByteMarker2[ByteMarker2["Array"] = 6] = "Array"; - ByteMarker2[ByteMarker2["Date"] = 7] = "Date"; - ByteMarker2[ByteMarker2["Uint8Array"] = 8] = "Uint8Array"; - ByteMarker2[ByteMarker2["Symbol"] = 9] = "Symbol"; - ByteMarker2[ByteMarker2["BigInt"] = 10] = "BigInt"; -})(ByteMarker || (ByteMarker = {})); -var Accumulator = BigInt("14695981039346656037"); -var [Prime, Size] = [BigInt("1099511628211"), BigInt( - "18446744073709551616" - /* 2 ^ 64 */ -)]; -var Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i)); -var F64 = new Float64Array(1); -var F64In = new DataView(F64.buffer); -var F64Out = new Uint8Array(F64.buffer); -function* NumberToBytes(value) { - const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8); - for (let i = 0; i < byteCount; i++) { - yield value >> 8 * (byteCount - 1 - i) & 255; - } -} -function ArrayType2(value) { - FNV1A64(ByteMarker.Array); - for (const item of value) { - Visit4(item); - } -} -function BooleanType(value) { - FNV1A64(ByteMarker.Boolean); - FNV1A64(value ? 1 : 0); -} -function BigIntType(value) { - FNV1A64(ByteMarker.BigInt); - F64In.setBigInt64(0, value); - for (const byte of F64Out) { - FNV1A64(byte); - } -} -function DateType2(value) { - FNV1A64(ByteMarker.Date); - Visit4(value.getTime()); -} -function NullType(value) { - FNV1A64(ByteMarker.Null); -} -function NumberType(value) { - FNV1A64(ByteMarker.Number); - F64In.setFloat64(0, value); - for (const byte of F64Out) { - FNV1A64(byte); - } -} -function ObjectType2(value) { - FNV1A64(ByteMarker.Object); - for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) { - Visit4(key); - Visit4(value[key]); - } -} -function StringType(value) { - FNV1A64(ByteMarker.String); - for (let i = 0; i < value.length; i++) { - for (const byte of NumberToBytes(value.charCodeAt(i))) { - FNV1A64(byte); - } - } -} -function SymbolType(value) { - FNV1A64(ByteMarker.Symbol); - Visit4(value.description); -} -function Uint8ArrayType2(value) { - FNV1A64(ByteMarker.Uint8Array); - for (let i = 0; i < value.length; i++) { - FNV1A64(value[i]); - } -} -function UndefinedType(value) { - return FNV1A64(ByteMarker.Undefined); -} -function Visit4(value) { - if (IsArray2(value)) - return ArrayType2(value); - if (IsBoolean2(value)) - return BooleanType(value); - if (IsBigInt2(value)) - return BigIntType(value); - if (IsDate2(value)) - return DateType2(value); - if (IsNull2(value)) - return NullType(value); - if (IsNumber2(value)) - return NumberType(value); - if (IsObject2(value)) - return ObjectType2(value); - if (IsString2(value)) - return StringType(value); - if (IsSymbol2(value)) - return SymbolType(value); - if (IsUint8Array2(value)) - return Uint8ArrayType2(value); - if (IsUndefined2(value)) - return UndefinedType(value); - throw new ValueHashError(value); -} -function FNV1A64(byte) { - Accumulator = Accumulator ^ Bytes[byte]; - Accumulator = Accumulator * Prime % Size; -} -function Hash(value) { - Accumulator = BigInt("14695981039346656037"); - Visit4(value); - return Accumulator; -} - -// node_modules/@sinclair/typebox/build/esm/value/check/check.mjs -var ValueCheckUnknownTypeError = class extends TypeBoxError { - constructor(schema) { - super(`Unknown type`); - this.schema = schema; - } -}; -function IsAnyOrUnknown(schema) { - return schema[Kind] === "Any" || schema[Kind] === "Unknown"; -} -function IsDefined(value) { - return value !== void 0; -} -function FromAny2(schema, references, value) { - return true; -} -function FromArgument2(schema, references, value) { - return true; -} -function FromArray7(schema, references, value) { - if (!IsArray2(value)) - return false; - if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) { - return false; - } - if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) { - return false; - } - for (const element of value) { - if (!Visit5(schema.items, references, element)) - return false; - } - if (schema.uniqueItems === true && !(function() { - const set3 = /* @__PURE__ */ new Set(); - for (const element of value) { - const hashed = Hash(element); - if (set3.has(hashed)) { - return false; - } else { - set3.add(hashed); - } - } - return true; - })()) { - return false; - } - if (!(IsDefined(schema.contains) || IsNumber2(schema.minContains) || IsNumber2(schema.maxContains))) { - return true; - } - const containsSchema = IsDefined(schema.contains) ? schema.contains : Never(); - const containsCount = value.reduce((acc, value2) => Visit5(containsSchema, references, value2) ? acc + 1 : acc, 0); - if (containsCount === 0) { - return false; - } - if (IsNumber2(schema.minContains) && containsCount < schema.minContains) { - return false; - } - if (IsNumber2(schema.maxContains) && containsCount > schema.maxContains) { - return false; - } - return true; -} -function FromAsyncIterator4(schema, references, value) { - return IsAsyncIterator2(value); -} -function FromBigInt2(schema, references, value) { - if (!IsBigInt2(value)) - return false; - if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { - return false; - } - if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { - return false; - } - if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { - return false; - } - if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { - return false; - } - if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) { - return false; - } - return true; -} -function FromBoolean2(schema, references, value) { - return IsBoolean2(value); -} -function FromConstructor4(schema, references, value) { - return Visit5(schema.returns, references, value.prototype); -} -function FromDate2(schema, references, value) { - if (!IsDate2(value)) - return false; - if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) { - return false; - } - if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) { - return false; - } - if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) { - return false; - } - if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) { - return false; - } - if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) { - return false; - } - return true; -} -function FromFunction4(schema, references, value) { - return IsFunction2(value); -} -function FromImport(schema, references, value) { - const definitions = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - return Visit5(target, [...references, ...definitions], value); -} -function FromInteger2(schema, references, value) { - if (!IsInteger(value)) { - return false; - } - if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { - return false; - } - if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { - return false; - } - if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { - return false; - } - if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { - return false; - } - if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { - return false; - } - return true; -} -function FromIntersect9(schema, references, value) { - const check1 = schema.allOf.every((schema2) => Visit5(schema2, references, value)); - if (schema.unevaluatedProperties === false) { - const keyPattern = new RegExp(KeyOfPattern(schema)); - const check2 = Object.getOwnPropertyNames(value).every((key) => keyPattern.test(key)); - return check1 && check2; - } else if (IsSchema(schema.unevaluatedProperties)) { - const keyCheck = new RegExp(KeyOfPattern(schema)); - const check2 = Object.getOwnPropertyNames(value).every((key) => keyCheck.test(key) || Visit5(schema.unevaluatedProperties, references, value[key])); - return check1 && check2; - } else { - return check1; - } -} -function FromIterator4(schema, references, value) { - return IsIterator2(value); -} -function FromLiteral3(schema, references, value) { - return value === schema.const; -} -function FromNever2(schema, references, value) { - return false; -} -function FromNot2(schema, references, value) { - return !Visit5(schema.not, references, value); -} -function FromNull2(schema, references, value) { - return IsNull2(value); -} -function FromNumber2(schema, references, value) { - if (!TypeSystemPolicy.IsNumberLike(value)) - return false; - if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { - return false; - } - if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { - return false; - } - if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { - return false; - } - if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { - return false; - } - if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { - return false; - } - return true; -} -function FromObject8(schema, references, value) { - if (!TypeSystemPolicy.IsObjectLike(value)) - return false; - if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) { - return false; - } - if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { - return false; - } - const knownKeys = Object.getOwnPropertyNames(schema.properties); - for (const knownKey of knownKeys) { - const property = schema.properties[knownKey]; - if (schema.required && schema.required.includes(knownKey)) { - if (!Visit5(property, references, value[knownKey])) { - return false; - } - if ((ExtendsUndefinedCheck(property) || IsAnyOrUnknown(property)) && !(knownKey in value)) { - return false; - } - } else { - if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey) && !Visit5(property, references, value[knownKey])) { - return false; - } - } - } - if (schema.additionalProperties === false) { - const valueKeys = Object.getOwnPropertyNames(value); - if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) { - return true; - } else { - return valueKeys.every((valueKey) => knownKeys.includes(valueKey)); - } - } else if (typeof schema.additionalProperties === "object") { - const valueKeys = Object.getOwnPropertyNames(value); - return valueKeys.every((key) => knownKeys.includes(key) || Visit5(schema.additionalProperties, references, value[key])); - } else { - return true; - } -} -function FromPromise4(schema, references, value) { - return IsPromise(value); -} -function FromRecord4(schema, references, value) { - if (!TypeSystemPolicy.IsRecordLike(value)) { - return false; - } - if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) { - return false; - } - if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { - return false; - } - const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0]; - const regex = new RegExp(patternKey); - const check1 = Object.entries(value).every(([key, value2]) => { - return regex.test(key) ? Visit5(patternSchema, references, value2) : true; - }); - const check2 = typeof schema.additionalProperties === "object" ? Object.entries(value).every(([key, value2]) => { - return !regex.test(key) ? Visit5(schema.additionalProperties, references, value2) : true; - }) : true; - const check3 = schema.additionalProperties === false ? Object.getOwnPropertyNames(value).every((key) => { - return regex.test(key); - }) : true; - return check1 && check2 && check3; -} -function FromRef5(schema, references, value) { - return Visit5(Deref(schema, references), references, value); -} -function FromRegExp2(schema, references, value) { - const regex = new RegExp(schema.source, schema.flags); - if (IsDefined(schema.minLength)) { - if (!(value.length >= schema.minLength)) - return false; - } - if (IsDefined(schema.maxLength)) { - if (!(value.length <= schema.maxLength)) - return false; - } - return regex.test(value); -} -function FromString2(schema, references, value) { - if (!IsString2(value)) { - return false; - } - if (IsDefined(schema.minLength)) { - if (!(value.length >= schema.minLength)) - return false; - } - if (IsDefined(schema.maxLength)) { - if (!(value.length <= schema.maxLength)) - return false; - } - if (IsDefined(schema.pattern)) { - const regex = new RegExp(schema.pattern); - if (!regex.test(value)) - return false; - } - if (IsDefined(schema.format)) { - if (!format_exports.Has(schema.format)) - return false; - const func = format_exports.Get(schema.format); - return func(value); - } - return true; -} -function FromSymbol2(schema, references, value) { - return IsSymbol2(value); -} -function FromTemplateLiteral4(schema, references, value) { - return IsString2(value) && new RegExp(schema.pattern).test(value); -} -function FromThis(schema, references, value) { - return Visit5(Deref(schema, references), references, value); -} -function FromTuple6(schema, references, value) { - if (!IsArray2(value)) { - return false; - } - if (schema.items === void 0 && !(value.length === 0)) { - return false; - } - if (!(value.length === schema.maxItems)) { - return false; - } - if (!schema.items) { - return true; - } - for (let i = 0; i < schema.items.length; i++) { - if (!Visit5(schema.items[i], references, value[i])) - return false; - } - return true; -} -function FromUndefined2(schema, references, value) { - return IsUndefined2(value); -} -function FromUnion11(schema, references, value) { - return schema.anyOf.some((inner) => Visit5(inner, references, value)); -} -function FromUint8Array2(schema, references, value) { - if (!IsUint8Array2(value)) { - return false; - } - if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) { - return false; - } - if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) { - return false; - } - return true; -} -function FromUnknown2(schema, references, value) { - return true; -} -function FromVoid2(schema, references, value) { - return TypeSystemPolicy.IsVoidLike(value); -} -function FromKind(schema, references, value) { - if (!type_exports2.Has(schema[Kind])) - return false; - const func = type_exports2.Get(schema[Kind]); - return func(schema, value); -} -function Visit5(schema, references, value) { - const references_ = IsDefined(schema.$id) ? Pushref(schema, references) : references; - const schema_ = schema; - switch (schema_[Kind]) { - case "Any": - return FromAny2(schema_, references_, value); - case "Argument": - return FromArgument2(schema_, references_, value); - case "Array": - return FromArray7(schema_, references_, value); - case "AsyncIterator": - return FromAsyncIterator4(schema_, references_, value); - case "BigInt": - return FromBigInt2(schema_, references_, value); - case "Boolean": - return FromBoolean2(schema_, references_, value); - case "Constructor": - return FromConstructor4(schema_, references_, value); - case "Date": - return FromDate2(schema_, references_, value); - case "Function": - return FromFunction4(schema_, references_, value); - case "Import": - return FromImport(schema_, references_, value); - case "Integer": - return FromInteger2(schema_, references_, value); - case "Intersect": - return FromIntersect9(schema_, references_, value); - case "Iterator": - return FromIterator4(schema_, references_, value); - case "Literal": - return FromLiteral3(schema_, references_, value); - case "Never": - return FromNever2(schema_, references_, value); - case "Not": - return FromNot2(schema_, references_, value); - case "Null": - return FromNull2(schema_, references_, value); - case "Number": - return FromNumber2(schema_, references_, value); - case "Object": - return FromObject8(schema_, references_, value); - case "Promise": - return FromPromise4(schema_, references_, value); - case "Record": - return FromRecord4(schema_, references_, value); - case "Ref": - return FromRef5(schema_, references_, value); - case "RegExp": - return FromRegExp2(schema_, references_, value); - case "String": - return FromString2(schema_, references_, value); - case "Symbol": - return FromSymbol2(schema_, references_, value); - case "TemplateLiteral": - return FromTemplateLiteral4(schema_, references_, value); - case "This": - return FromThis(schema_, references_, value); - case "Tuple": - return FromTuple6(schema_, references_, value); - case "Undefined": - return FromUndefined2(schema_, references_, value); - case "Union": - return FromUnion11(schema_, references_, value); - case "Uint8Array": - return FromUint8Array2(schema_, references_, value); - case "Unknown": - return FromUnknown2(schema_, references_, value); - case "Void": - return FromVoid2(schema_, references_, value); - default: - if (!type_exports2.Has(schema_[Kind])) - throw new ValueCheckUnknownTypeError(schema_); - return FromKind(schema_, references_, value); - } -} -function Check(...args) { - return args.length === 3 ? Visit5(args[0], args[1], args[2]) : Visit5(args[0], [], args[1]); -} - -// node_modules/@sinclair/typebox/build/esm/errors/errors.mjs -var ValueErrorType; -(function(ValueErrorType2) { - ValueErrorType2[ValueErrorType2["ArrayContains"] = 0] = "ArrayContains"; - ValueErrorType2[ValueErrorType2["ArrayMaxContains"] = 1] = "ArrayMaxContains"; - ValueErrorType2[ValueErrorType2["ArrayMaxItems"] = 2] = "ArrayMaxItems"; - ValueErrorType2[ValueErrorType2["ArrayMinContains"] = 3] = "ArrayMinContains"; - ValueErrorType2[ValueErrorType2["ArrayMinItems"] = 4] = "ArrayMinItems"; - ValueErrorType2[ValueErrorType2["ArrayUniqueItems"] = 5] = "ArrayUniqueItems"; - ValueErrorType2[ValueErrorType2["Array"] = 6] = "Array"; - ValueErrorType2[ValueErrorType2["AsyncIterator"] = 7] = "AsyncIterator"; - ValueErrorType2[ValueErrorType2["BigIntExclusiveMaximum"] = 8] = "BigIntExclusiveMaximum"; - ValueErrorType2[ValueErrorType2["BigIntExclusiveMinimum"] = 9] = "BigIntExclusiveMinimum"; - ValueErrorType2[ValueErrorType2["BigIntMaximum"] = 10] = "BigIntMaximum"; - ValueErrorType2[ValueErrorType2["BigIntMinimum"] = 11] = "BigIntMinimum"; - ValueErrorType2[ValueErrorType2["BigIntMultipleOf"] = 12] = "BigIntMultipleOf"; - ValueErrorType2[ValueErrorType2["BigInt"] = 13] = "BigInt"; - ValueErrorType2[ValueErrorType2["Boolean"] = 14] = "Boolean"; - ValueErrorType2[ValueErrorType2["DateExclusiveMaximumTimestamp"] = 15] = "DateExclusiveMaximumTimestamp"; - ValueErrorType2[ValueErrorType2["DateExclusiveMinimumTimestamp"] = 16] = "DateExclusiveMinimumTimestamp"; - ValueErrorType2[ValueErrorType2["DateMaximumTimestamp"] = 17] = "DateMaximumTimestamp"; - ValueErrorType2[ValueErrorType2["DateMinimumTimestamp"] = 18] = "DateMinimumTimestamp"; - ValueErrorType2[ValueErrorType2["DateMultipleOfTimestamp"] = 19] = "DateMultipleOfTimestamp"; - ValueErrorType2[ValueErrorType2["Date"] = 20] = "Date"; - ValueErrorType2[ValueErrorType2["Function"] = 21] = "Function"; - ValueErrorType2[ValueErrorType2["IntegerExclusiveMaximum"] = 22] = "IntegerExclusiveMaximum"; - ValueErrorType2[ValueErrorType2["IntegerExclusiveMinimum"] = 23] = "IntegerExclusiveMinimum"; - ValueErrorType2[ValueErrorType2["IntegerMaximum"] = 24] = "IntegerMaximum"; - ValueErrorType2[ValueErrorType2["IntegerMinimum"] = 25] = "IntegerMinimum"; - ValueErrorType2[ValueErrorType2["IntegerMultipleOf"] = 26] = "IntegerMultipleOf"; - ValueErrorType2[ValueErrorType2["Integer"] = 27] = "Integer"; - ValueErrorType2[ValueErrorType2["IntersectUnevaluatedProperties"] = 28] = "IntersectUnevaluatedProperties"; - ValueErrorType2[ValueErrorType2["Intersect"] = 29] = "Intersect"; - ValueErrorType2[ValueErrorType2["Iterator"] = 30] = "Iterator"; - ValueErrorType2[ValueErrorType2["Kind"] = 31] = "Kind"; - ValueErrorType2[ValueErrorType2["Literal"] = 32] = "Literal"; - ValueErrorType2[ValueErrorType2["Never"] = 33] = "Never"; - ValueErrorType2[ValueErrorType2["Not"] = 34] = "Not"; - ValueErrorType2[ValueErrorType2["Null"] = 35] = "Null"; - ValueErrorType2[ValueErrorType2["NumberExclusiveMaximum"] = 36] = "NumberExclusiveMaximum"; - ValueErrorType2[ValueErrorType2["NumberExclusiveMinimum"] = 37] = "NumberExclusiveMinimum"; - ValueErrorType2[ValueErrorType2["NumberMaximum"] = 38] = "NumberMaximum"; - ValueErrorType2[ValueErrorType2["NumberMinimum"] = 39] = "NumberMinimum"; - ValueErrorType2[ValueErrorType2["NumberMultipleOf"] = 40] = "NumberMultipleOf"; - ValueErrorType2[ValueErrorType2["Number"] = 41] = "Number"; - ValueErrorType2[ValueErrorType2["ObjectAdditionalProperties"] = 42] = "ObjectAdditionalProperties"; - ValueErrorType2[ValueErrorType2["ObjectMaxProperties"] = 43] = "ObjectMaxProperties"; - ValueErrorType2[ValueErrorType2["ObjectMinProperties"] = 44] = "ObjectMinProperties"; - ValueErrorType2[ValueErrorType2["ObjectRequiredProperty"] = 45] = "ObjectRequiredProperty"; - ValueErrorType2[ValueErrorType2["Object"] = 46] = "Object"; - ValueErrorType2[ValueErrorType2["Promise"] = 47] = "Promise"; - ValueErrorType2[ValueErrorType2["RegExp"] = 48] = "RegExp"; - ValueErrorType2[ValueErrorType2["StringFormatUnknown"] = 49] = "StringFormatUnknown"; - ValueErrorType2[ValueErrorType2["StringFormat"] = 50] = "StringFormat"; - ValueErrorType2[ValueErrorType2["StringMaxLength"] = 51] = "StringMaxLength"; - ValueErrorType2[ValueErrorType2["StringMinLength"] = 52] = "StringMinLength"; - ValueErrorType2[ValueErrorType2["StringPattern"] = 53] = "StringPattern"; - ValueErrorType2[ValueErrorType2["String"] = 54] = "String"; - ValueErrorType2[ValueErrorType2["Symbol"] = 55] = "Symbol"; - ValueErrorType2[ValueErrorType2["TupleLength"] = 56] = "TupleLength"; - ValueErrorType2[ValueErrorType2["Tuple"] = 57] = "Tuple"; - ValueErrorType2[ValueErrorType2["Uint8ArrayMaxByteLength"] = 58] = "Uint8ArrayMaxByteLength"; - ValueErrorType2[ValueErrorType2["Uint8ArrayMinByteLength"] = 59] = "Uint8ArrayMinByteLength"; - ValueErrorType2[ValueErrorType2["Uint8Array"] = 60] = "Uint8Array"; - ValueErrorType2[ValueErrorType2["Undefined"] = 61] = "Undefined"; - ValueErrorType2[ValueErrorType2["Union"] = 62] = "Union"; - ValueErrorType2[ValueErrorType2["Void"] = 63] = "Void"; -})(ValueErrorType || (ValueErrorType = {})); -var ValueErrorsUnknownTypeError = class extends TypeBoxError { - constructor(schema) { - super("Unknown type"); - this.schema = schema; - } -}; -function EscapeKey(key) { - return key.replace(/~/g, "~0").replace(/\//g, "~1"); -} -function IsDefined2(value) { - return value !== void 0; -} -var ValueErrorIterator = class { - constructor(iterator) { - this.iterator = iterator; - } - [Symbol.iterator]() { - return this.iterator; - } - /** Returns the first value error or undefined if no errors */ - First() { - const next = this.iterator.next(); - return next.done ? void 0 : next.value; - } -}; -function Create(errorType, schema, path2, value, errors = []) { - return { - type: errorType, - schema, - path: path2, - value, - message: GetErrorFunction()({ errorType, path: path2, schema, value, errors }), - errors - }; -} -function* FromAny3(schema, references, path2, value) { -} -function* FromArgument3(schema, references, path2, value) { -} -function* FromArray8(schema, references, path2, value) { - if (!IsArray2(value)) { - return yield Create(ValueErrorType.Array, schema, path2, value); - } - if (IsDefined2(schema.minItems) && !(value.length >= schema.minItems)) { - yield Create(ValueErrorType.ArrayMinItems, schema, path2, value); - } - if (IsDefined2(schema.maxItems) && !(value.length <= schema.maxItems)) { - yield Create(ValueErrorType.ArrayMaxItems, schema, path2, value); - } - for (let i = 0; i < value.length; i++) { - yield* Visit6(schema.items, references, `${path2}/${i}`, value[i]); - } - if (schema.uniqueItems === true && !(function() { - const set3 = /* @__PURE__ */ new Set(); - for (const element of value) { - const hashed = Hash(element); - if (set3.has(hashed)) { - return false; - } else { - set3.add(hashed); - } - } - return true; - })()) { - yield Create(ValueErrorType.ArrayUniqueItems, schema, path2, value); - } - if (!(IsDefined2(schema.contains) || IsDefined2(schema.minContains) || IsDefined2(schema.maxContains))) { - return; - } - const containsSchema = IsDefined2(schema.contains) ? schema.contains : Never(); - const containsCount = value.reduce((acc, value2, index2) => Visit6(containsSchema, references, `${path2}${index2}`, value2).next().done === true ? acc + 1 : acc, 0); - if (containsCount === 0) { - yield Create(ValueErrorType.ArrayContains, schema, path2, value); - } - if (IsNumber2(schema.minContains) && containsCount < schema.minContains) { - yield Create(ValueErrorType.ArrayMinContains, schema, path2, value); - } - if (IsNumber2(schema.maxContains) && containsCount > schema.maxContains) { - yield Create(ValueErrorType.ArrayMaxContains, schema, path2, value); - } -} -function* FromAsyncIterator5(schema, references, path2, value) { - if (!IsAsyncIterator2(value)) - yield Create(ValueErrorType.AsyncIterator, schema, path2, value); -} -function* FromBigInt3(schema, references, path2, value) { - if (!IsBigInt2(value)) - return yield Create(ValueErrorType.BigInt, schema, path2, value); - if (IsDefined2(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { - yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path2, value); - } - if (IsDefined2(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { - yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path2, value); - } - if (IsDefined2(schema.maximum) && !(value <= schema.maximum)) { - yield Create(ValueErrorType.BigIntMaximum, schema, path2, value); - } - if (IsDefined2(schema.minimum) && !(value >= schema.minimum)) { - yield Create(ValueErrorType.BigIntMinimum, schema, path2, value); - } - if (IsDefined2(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) { - yield Create(ValueErrorType.BigIntMultipleOf, schema, path2, value); - } -} -function* FromBoolean3(schema, references, path2, value) { - if (!IsBoolean2(value)) - yield Create(ValueErrorType.Boolean, schema, path2, value); -} -function* FromConstructor5(schema, references, path2, value) { - yield* Visit6(schema.returns, references, path2, value.prototype); -} -function* FromDate3(schema, references, path2, value) { - if (!IsDate2(value)) - return yield Create(ValueErrorType.Date, schema, path2, value); - if (IsDefined2(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) { - yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path2, value); - } - if (IsDefined2(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) { - yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path2, value); - } - if (IsDefined2(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) { - yield Create(ValueErrorType.DateMaximumTimestamp, schema, path2, value); - } - if (IsDefined2(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) { - yield Create(ValueErrorType.DateMinimumTimestamp, schema, path2, value); - } - if (IsDefined2(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) { - yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path2, value); - } -} -function* FromFunction5(schema, references, path2, value) { - if (!IsFunction2(value)) - yield Create(ValueErrorType.Function, schema, path2, value); -} -function* FromImport2(schema, references, path2, value) { - const definitions = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - yield* Visit6(target, [...references, ...definitions], path2, value); -} -function* FromInteger3(schema, references, path2, value) { - if (!IsInteger(value)) - return yield Create(ValueErrorType.Integer, schema, path2, value); - if (IsDefined2(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { - yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path2, value); - } - if (IsDefined2(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { - yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path2, value); - } - if (IsDefined2(schema.maximum) && !(value <= schema.maximum)) { - yield Create(ValueErrorType.IntegerMaximum, schema, path2, value); - } - if (IsDefined2(schema.minimum) && !(value >= schema.minimum)) { - yield Create(ValueErrorType.IntegerMinimum, schema, path2, value); - } - if (IsDefined2(schema.multipleOf) && !(value % schema.multipleOf === 0)) { - yield Create(ValueErrorType.IntegerMultipleOf, schema, path2, value); - } -} -function* FromIntersect10(schema, references, path2, value) { - let hasError = false; - for (const inner of schema.allOf) { - for (const error of Visit6(inner, references, path2, value)) { - hasError = true; - yield error; - } - } - if (hasError) { - return yield Create(ValueErrorType.Intersect, schema, path2, value); - } - if (schema.unevaluatedProperties === false) { - const keyCheck = new RegExp(KeyOfPattern(schema)); - for (const valueKey of Object.getOwnPropertyNames(value)) { - if (!keyCheck.test(valueKey)) { - yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path2}/${valueKey}`, value); - } - } - } - if (typeof schema.unevaluatedProperties === "object") { - const keyCheck = new RegExp(KeyOfPattern(schema)); - for (const valueKey of Object.getOwnPropertyNames(value)) { - if (!keyCheck.test(valueKey)) { - const next = Visit6(schema.unevaluatedProperties, references, `${path2}/${valueKey}`, value[valueKey]).next(); - if (!next.done) - yield next.value; - } - } - } -} -function* FromIterator5(schema, references, path2, value) { - if (!IsIterator2(value)) - yield Create(ValueErrorType.Iterator, schema, path2, value); -} -function* FromLiteral4(schema, references, path2, value) { - if (!(value === schema.const)) - yield Create(ValueErrorType.Literal, schema, path2, value); -} -function* FromNever3(schema, references, path2, value) { - yield Create(ValueErrorType.Never, schema, path2, value); -} -function* FromNot3(schema, references, path2, value) { - if (Visit6(schema.not, references, path2, value).next().done === true) - yield Create(ValueErrorType.Not, schema, path2, value); -} -function* FromNull3(schema, references, path2, value) { - if (!IsNull2(value)) - yield Create(ValueErrorType.Null, schema, path2, value); -} -function* FromNumber3(schema, references, path2, value) { - if (!TypeSystemPolicy.IsNumberLike(value)) - return yield Create(ValueErrorType.Number, schema, path2, value); - if (IsDefined2(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { - yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path2, value); - } - if (IsDefined2(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { - yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path2, value); - } - if (IsDefined2(schema.maximum) && !(value <= schema.maximum)) { - yield Create(ValueErrorType.NumberMaximum, schema, path2, value); - } - if (IsDefined2(schema.minimum) && !(value >= schema.minimum)) { - yield Create(ValueErrorType.NumberMinimum, schema, path2, value); - } - if (IsDefined2(schema.multipleOf) && !(value % schema.multipleOf === 0)) { - yield Create(ValueErrorType.NumberMultipleOf, schema, path2, value); - } -} -function* FromObject9(schema, references, path2, value) { - if (!TypeSystemPolicy.IsObjectLike(value)) - return yield Create(ValueErrorType.Object, schema, path2, value); - if (IsDefined2(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) { - yield Create(ValueErrorType.ObjectMinProperties, schema, path2, value); - } - if (IsDefined2(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { - yield Create(ValueErrorType.ObjectMaxProperties, schema, path2, value); - } - const requiredKeys = Array.isArray(schema.required) ? schema.required : []; - const knownKeys = Object.getOwnPropertyNames(schema.properties); - const unknownKeys = Object.getOwnPropertyNames(value); - for (const requiredKey of requiredKeys) { - if (unknownKeys.includes(requiredKey)) - continue; - yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path2}/${EscapeKey(requiredKey)}`, void 0); - } - if (schema.additionalProperties === false) { - for (const valueKey of unknownKeys) { - if (!knownKeys.includes(valueKey)) { - yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path2}/${EscapeKey(valueKey)}`, value[valueKey]); - } - } - } - if (typeof schema.additionalProperties === "object") { - for (const valueKey of unknownKeys) { - if (knownKeys.includes(valueKey)) - continue; - yield* Visit6(schema.additionalProperties, references, `${path2}/${EscapeKey(valueKey)}`, value[valueKey]); - } - } - for (const knownKey of knownKeys) { - const property = schema.properties[knownKey]; - if (schema.required && schema.required.includes(knownKey)) { - yield* Visit6(property, references, `${path2}/${EscapeKey(knownKey)}`, value[knownKey]); - if (ExtendsUndefinedCheck(schema) && !(knownKey in value)) { - yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path2}/${EscapeKey(knownKey)}`, void 0); - } - } else { - if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) { - yield* Visit6(property, references, `${path2}/${EscapeKey(knownKey)}`, value[knownKey]); - } - } - } -} -function* FromPromise5(schema, references, path2, value) { - if (!IsPromise(value)) - yield Create(ValueErrorType.Promise, schema, path2, value); -} -function* FromRecord5(schema, references, path2, value) { - if (!TypeSystemPolicy.IsRecordLike(value)) - return yield Create(ValueErrorType.Object, schema, path2, value); - if (IsDefined2(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) { - yield Create(ValueErrorType.ObjectMinProperties, schema, path2, value); - } - if (IsDefined2(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { - yield Create(ValueErrorType.ObjectMaxProperties, schema, path2, value); - } - const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0]; - const regex = new RegExp(patternKey); - for (const [propertyKey, propertyValue] of Object.entries(value)) { - if (regex.test(propertyKey)) - yield* Visit6(patternSchema, references, `${path2}/${EscapeKey(propertyKey)}`, propertyValue); - } - if (typeof schema.additionalProperties === "object") { - for (const [propertyKey, propertyValue] of Object.entries(value)) { - if (!regex.test(propertyKey)) - yield* Visit6(schema.additionalProperties, references, `${path2}/${EscapeKey(propertyKey)}`, propertyValue); - } - } - if (schema.additionalProperties === false) { - for (const [propertyKey, propertyValue] of Object.entries(value)) { - if (regex.test(propertyKey)) - continue; - return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path2}/${EscapeKey(propertyKey)}`, propertyValue); - } - } -} -function* FromRef6(schema, references, path2, value) { - yield* Visit6(Deref(schema, references), references, path2, value); -} -function* FromRegExp3(schema, references, path2, value) { - if (!IsString2(value)) - return yield Create(ValueErrorType.String, schema, path2, value); - if (IsDefined2(schema.minLength) && !(value.length >= schema.minLength)) { - yield Create(ValueErrorType.StringMinLength, schema, path2, value); - } - if (IsDefined2(schema.maxLength) && !(value.length <= schema.maxLength)) { - yield Create(ValueErrorType.StringMaxLength, schema, path2, value); - } - const regex = new RegExp(schema.source, schema.flags); - if (!regex.test(value)) { - return yield Create(ValueErrorType.RegExp, schema, path2, value); - } -} -function* FromString3(schema, references, path2, value) { - if (!IsString2(value)) - return yield Create(ValueErrorType.String, schema, path2, value); - if (IsDefined2(schema.minLength) && !(value.length >= schema.minLength)) { - yield Create(ValueErrorType.StringMinLength, schema, path2, value); - } - if (IsDefined2(schema.maxLength) && !(value.length <= schema.maxLength)) { - yield Create(ValueErrorType.StringMaxLength, schema, path2, value); - } - if (IsString2(schema.pattern)) { - const regex = new RegExp(schema.pattern); - if (!regex.test(value)) { - yield Create(ValueErrorType.StringPattern, schema, path2, value); - } - } - if (IsString2(schema.format)) { - if (!format_exports.Has(schema.format)) { - yield Create(ValueErrorType.StringFormatUnknown, schema, path2, value); - } else { - const format3 = format_exports.Get(schema.format); - if (!format3(value)) { - yield Create(ValueErrorType.StringFormat, schema, path2, value); - } - } - } -} -function* FromSymbol3(schema, references, path2, value) { - if (!IsSymbol2(value)) - yield Create(ValueErrorType.Symbol, schema, path2, value); -} -function* FromTemplateLiteral5(schema, references, path2, value) { - if (!IsString2(value)) - return yield Create(ValueErrorType.String, schema, path2, value); - const regex = new RegExp(schema.pattern); - if (!regex.test(value)) { - yield Create(ValueErrorType.StringPattern, schema, path2, value); - } -} -function* FromThis2(schema, references, path2, value) { - yield* Visit6(Deref(schema, references), references, path2, value); -} -function* FromTuple7(schema, references, path2, value) { - if (!IsArray2(value)) - return yield Create(ValueErrorType.Tuple, schema, path2, value); - if (schema.items === void 0 && !(value.length === 0)) { - return yield Create(ValueErrorType.TupleLength, schema, path2, value); - } - if (!(value.length === schema.maxItems)) { - return yield Create(ValueErrorType.TupleLength, schema, path2, value); - } - if (!schema.items) { - return; - } - for (let i = 0; i < schema.items.length; i++) { - yield* Visit6(schema.items[i], references, `${path2}/${i}`, value[i]); - } -} -function* FromUndefined3(schema, references, path2, value) { - if (!IsUndefined2(value)) - yield Create(ValueErrorType.Undefined, schema, path2, value); -} -function* FromUnion12(schema, references, path2, value) { - if (Check(schema, references, value)) - return; - const errors = schema.anyOf.map((variant) => new ValueErrorIterator(Visit6(variant, references, path2, value))); - yield Create(ValueErrorType.Union, schema, path2, value, errors); -} -function* FromUint8Array3(schema, references, path2, value) { - if (!IsUint8Array2(value)) - return yield Create(ValueErrorType.Uint8Array, schema, path2, value); - if (IsDefined2(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) { - yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path2, value); - } - if (IsDefined2(schema.minByteLength) && !(value.length >= schema.minByteLength)) { - yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path2, value); - } -} -function* FromUnknown3(schema, references, path2, value) { -} -function* FromVoid3(schema, references, path2, value) { - if (!TypeSystemPolicy.IsVoidLike(value)) - yield Create(ValueErrorType.Void, schema, path2, value); -} -function* FromKind2(schema, references, path2, value) { - const check = type_exports2.Get(schema[Kind]); - if (!check(schema, value)) - yield Create(ValueErrorType.Kind, schema, path2, value); -} -function* Visit6(schema, references, path2, value) { - const references_ = IsDefined2(schema.$id) ? [...references, schema] : references; - const schema_ = schema; - switch (schema_[Kind]) { - case "Any": - return yield* FromAny3(schema_, references_, path2, value); - case "Argument": - return yield* FromArgument3(schema_, references_, path2, value); - case "Array": - return yield* FromArray8(schema_, references_, path2, value); - case "AsyncIterator": - return yield* FromAsyncIterator5(schema_, references_, path2, value); - case "BigInt": - return yield* FromBigInt3(schema_, references_, path2, value); - case "Boolean": - return yield* FromBoolean3(schema_, references_, path2, value); - case "Constructor": - return yield* FromConstructor5(schema_, references_, path2, value); - case "Date": - return yield* FromDate3(schema_, references_, path2, value); - case "Function": - return yield* FromFunction5(schema_, references_, path2, value); - case "Import": - return yield* FromImport2(schema_, references_, path2, value); - case "Integer": - return yield* FromInteger3(schema_, references_, path2, value); - case "Intersect": - return yield* FromIntersect10(schema_, references_, path2, value); - case "Iterator": - return yield* FromIterator5(schema_, references_, path2, value); - case "Literal": - return yield* FromLiteral4(schema_, references_, path2, value); - case "Never": - return yield* FromNever3(schema_, references_, path2, value); - case "Not": - return yield* FromNot3(schema_, references_, path2, value); - case "Null": - return yield* FromNull3(schema_, references_, path2, value); - case "Number": - return yield* FromNumber3(schema_, references_, path2, value); - case "Object": - return yield* FromObject9(schema_, references_, path2, value); - case "Promise": - return yield* FromPromise5(schema_, references_, path2, value); - case "Record": - return yield* FromRecord5(schema_, references_, path2, value); - case "Ref": - return yield* FromRef6(schema_, references_, path2, value); - case "RegExp": - return yield* FromRegExp3(schema_, references_, path2, value); - case "String": - return yield* FromString3(schema_, references_, path2, value); - case "Symbol": - return yield* FromSymbol3(schema_, references_, path2, value); - case "TemplateLiteral": - return yield* FromTemplateLiteral5(schema_, references_, path2, value); - case "This": - return yield* FromThis2(schema_, references_, path2, value); - case "Tuple": - return yield* FromTuple7(schema_, references_, path2, value); - case "Undefined": - return yield* FromUndefined3(schema_, references_, path2, value); - case "Union": - return yield* FromUnion12(schema_, references_, path2, value); - case "Uint8Array": - return yield* FromUint8Array3(schema_, references_, path2, value); - case "Unknown": - return yield* FromUnknown3(schema_, references_, path2, value); - case "Void": - return yield* FromVoid3(schema_, references_, path2, value); - default: - if (!type_exports2.Has(schema_[Kind])) - throw new ValueErrorsUnknownTypeError(schema); - return yield* FromKind2(schema_, references_, path2, value); - } -} -function Errors(...args) { - const iterator = args.length === 3 ? Visit6(args[0], args[1], "", args[2]) : Visit6(args[0], [], "", args[1]); - return new ValueErrorIterator(iterator); -} - -// node_modules/@sinclair/typebox/build/esm/value/assert/assert.mjs -var __classPrivateFieldSet = function(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; -}; -var __classPrivateFieldGet = function(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -}; -var _AssertError_instances; -var _AssertError_iterator; -var _AssertError_Iterator; -var AssertError = class extends TypeBoxError { - constructor(iterator) { - const error = iterator.First(); - super(error === void 0 ? "Invalid Value" : error.message); - _AssertError_instances.add(this); - _AssertError_iterator.set(this, void 0); - __classPrivateFieldSet(this, _AssertError_iterator, iterator, "f"); - this.error = error; - } - /** Returns an iterator for each error in this value. */ - Errors() { - return new ValueErrorIterator(__classPrivateFieldGet(this, _AssertError_instances, "m", _AssertError_Iterator).call(this)); - } -}; -_AssertError_iterator = /* @__PURE__ */ new WeakMap(), _AssertError_instances = /* @__PURE__ */ new WeakSet(), _AssertError_Iterator = function* _AssertError_Iterator2() { - if (this.error) - yield this.error; - yield* __classPrivateFieldGet(this, _AssertError_iterator, "f"); -}; -function AssertValue(schema, references, value) { - if (Check(schema, references, value)) - return; - throw new AssertError(Errors(schema, references, value)); -} -function Assert(...args) { - return args.length === 3 ? AssertValue(args[0], args[1], args[2]) : AssertValue(args[0], [], args[1]); -} - -// node_modules/@sinclair/typebox/build/esm/value/clone/clone.mjs -function FromObject10(value) { - const Acc = {}; - for (const key of Object.getOwnPropertyNames(value)) { - Acc[key] = Clone2(value[key]); - } - for (const key of Object.getOwnPropertySymbols(value)) { - Acc[key] = Clone2(value[key]); - } - return Acc; -} -function FromArray9(value) { - return value.map((element) => Clone2(element)); -} -function FromTypedArray(value) { - return value.slice(); -} -function FromMap(value) { - return new Map(Clone2([...value.entries()])); -} -function FromSet(value) { - return new Set(Clone2([...value.entries()])); -} -function FromDate4(value) { - return new Date(value.toISOString()); -} -function FromValue2(value) { - return value; -} -function Clone2(value) { - if (IsArray2(value)) - return FromArray9(value); - if (IsDate2(value)) - return FromDate4(value); - if (IsTypedArray(value)) - return FromTypedArray(value); - if (IsMap(value)) - return FromMap(value); - if (IsSet(value)) - return FromSet(value); - if (IsObject2(value)) - return FromObject10(value); - if (IsValueType(value)) - return FromValue2(value); - throw new Error("ValueClone: Unable to clone value"); -} - -// node_modules/@sinclair/typebox/build/esm/value/create/create.mjs -var ValueCreateError = class extends TypeBoxError { - constructor(schema, message) { - super(message); - this.schema = schema; - } -}; -function FromDefault(value) { - return IsFunction2(value) ? value() : Clone2(value); -} -function FromAny4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return {}; - } -} -function FromArgument4(schema, references) { - return {}; -} -function FromArray10(schema, references) { - if (schema.uniqueItems === true && !HasPropertyKey2(schema, "default")) { - throw new ValueCreateError(schema, "Array with the uniqueItems constraint requires a default value"); - } else if ("contains" in schema && !HasPropertyKey2(schema, "default")) { - throw new ValueCreateError(schema, "Array with the contains constraint requires a default value"); - } else if ("default" in schema) { - return FromDefault(schema.default); - } else if (schema.minItems !== void 0) { - return Array.from({ length: schema.minItems }).map((item) => { - return Visit7(schema.items, references); - }); - } else { - return []; - } -} -function FromAsyncIterator6(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return (async function* () { - })(); - } -} -function FromBigInt4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return BigInt(0); - } -} -function FromBoolean4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return false; - } -} -function FromConstructor6(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - const value = Visit7(schema.returns, references); - if (typeof value === "object" && !Array.isArray(value)) { - return class { - constructor() { - for (const [key, val] of Object.entries(value)) { - const self = this; - self[key] = val; - } - } - }; - } else { - return class { - }; - } - } -} -function FromDate5(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else if (schema.minimumTimestamp !== void 0) { - return new Date(schema.minimumTimestamp); - } else { - return /* @__PURE__ */ new Date(); - } -} -function FromFunction6(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return () => Visit7(schema.returns, references); - } -} -function FromImport3(schema, references) { - const definitions = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - return Visit7(target, [...references, ...definitions]); -} -function FromInteger4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else if (schema.minimum !== void 0) { - return schema.minimum; - } else { - return 0; - } -} -function FromIntersect11(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - const value = schema.allOf.reduce((acc, schema2) => { - const next = Visit7(schema2, references); - return typeof next === "object" ? { ...acc, ...next } : next; - }, {}); - if (!Check(schema, references, value)) - throw new ValueCreateError(schema, "Intersect produced invalid value. Consider using a default value."); - return value; - } -} -function FromIterator6(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return (function* () { - })(); - } -} -function FromLiteral5(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return schema.const; - } -} -function FromNever4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - throw new ValueCreateError(schema, "Never types cannot be created. Consider using a default value."); - } -} -function FromNot4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - throw new ValueCreateError(schema, "Not types must have a default value"); - } -} -function FromNull4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return null; - } -} -function FromNumber4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else if (schema.minimum !== void 0) { - return schema.minimum; - } else { - return 0; - } -} -function FromObject11(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - const required = new Set(schema.required); - const Acc = {}; - for (const [key, subschema] of Object.entries(schema.properties)) { - if (!required.has(key)) - continue; - Acc[key] = Visit7(subschema, references); - } - return Acc; - } -} -function FromPromise6(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return Promise.resolve(Visit7(schema.item, references)); - } -} -function FromRecord6(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return {}; - } -} -function FromRef7(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return Visit7(Deref(schema, references), references); - } -} -function FromRegExp4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - throw new ValueCreateError(schema, "RegExp types cannot be created. Consider using a default value."); - } -} -function FromString4(schema, references) { - if (schema.pattern !== void 0) { - if (!HasPropertyKey2(schema, "default")) { - throw new ValueCreateError(schema, "String types with patterns must specify a default value"); - } else { - return FromDefault(schema.default); - } - } else if (schema.format !== void 0) { - if (!HasPropertyKey2(schema, "default")) { - throw new ValueCreateError(schema, "String types with formats must specify a default value"); - } else { - return FromDefault(schema.default); - } - } else { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else if (schema.minLength !== void 0) { - return Array.from({ length: schema.minLength }).map(() => " ").join(""); - } else { - return ""; - } - } -} -function FromSymbol4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else if ("value" in schema) { - return Symbol.for(schema.value); - } else { - return Symbol(); - } -} -function FromTemplateLiteral6(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } - if (!IsTemplateLiteralFinite(schema)) - throw new ValueCreateError(schema, "Can only create template literals that produce a finite variants. Consider using a default value."); - const generated = TemplateLiteralGenerate(schema); - return generated[0]; -} -function FromThis3(schema, references) { - if (recursiveDepth++ > recursiveMaxDepth) - throw new ValueCreateError(schema, "Cannot create recursive type as it appears possibly infinite. Consider using a default."); - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return Visit7(Deref(schema, references), references); - } -} -function FromTuple8(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } - if (schema.items === void 0) { - return []; - } else { - return Array.from({ length: schema.minItems }).map((_, index2) => Visit7(schema.items[index2], references)); - } -} -function FromUndefined4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return void 0; - } -} -function FromUnion13(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else if (schema.anyOf.length === 0) { - throw new Error("ValueCreate.Union: Cannot create Union with zero variants"); - } else { - return Visit7(schema.anyOf[0], references); - } -} -function FromUint8Array4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else if (schema.minByteLength !== void 0) { - return new Uint8Array(schema.minByteLength); - } else { - return new Uint8Array(0); - } -} -function FromUnknown4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return {}; - } -} -function FromVoid4(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - return void 0; - } -} -function FromKind3(schema, references) { - if (HasPropertyKey2(schema, "default")) { - return FromDefault(schema.default); - } else { - throw new Error("User defined types must specify a default value"); - } -} -function Visit7(schema, references) { - const references_ = Pushref(schema, references); - const schema_ = schema; - switch (schema_[Kind]) { - case "Any": - return FromAny4(schema_, references_); - case "Argument": - return FromArgument4(schema_, references_); - case "Array": - return FromArray10(schema_, references_); - case "AsyncIterator": - return FromAsyncIterator6(schema_, references_); - case "BigInt": - return FromBigInt4(schema_, references_); - case "Boolean": - return FromBoolean4(schema_, references_); - case "Constructor": - return FromConstructor6(schema_, references_); - case "Date": - return FromDate5(schema_, references_); - case "Function": - return FromFunction6(schema_, references_); - case "Import": - return FromImport3(schema_, references_); - case "Integer": - return FromInteger4(schema_, references_); - case "Intersect": - return FromIntersect11(schema_, references_); - case "Iterator": - return FromIterator6(schema_, references_); - case "Literal": - return FromLiteral5(schema_, references_); - case "Never": - return FromNever4(schema_, references_); - case "Not": - return FromNot4(schema_, references_); - case "Null": - return FromNull4(schema_, references_); - case "Number": - return FromNumber4(schema_, references_); - case "Object": - return FromObject11(schema_, references_); - case "Promise": - return FromPromise6(schema_, references_); - case "Record": - return FromRecord6(schema_, references_); - case "Ref": - return FromRef7(schema_, references_); - case "RegExp": - return FromRegExp4(schema_, references_); - case "String": - return FromString4(schema_, references_); - case "Symbol": - return FromSymbol4(schema_, references_); - case "TemplateLiteral": - return FromTemplateLiteral6(schema_, references_); - case "This": - return FromThis3(schema_, references_); - case "Tuple": - return FromTuple8(schema_, references_); - case "Undefined": - return FromUndefined4(schema_, references_); - case "Union": - return FromUnion13(schema_, references_); - case "Uint8Array": - return FromUint8Array4(schema_, references_); - case "Unknown": - return FromUnknown4(schema_, references_); - case "Void": - return FromVoid4(schema_, references_); - default: - if (!type_exports2.Has(schema_[Kind])) - throw new ValueCreateError(schema_, "Unknown type"); - return FromKind3(schema_, references_); - } -} -var recursiveMaxDepth = 512; -var recursiveDepth = 0; -function Create2(...args) { - recursiveDepth = 0; - return args.length === 2 ? Visit7(args[0], args[1]) : Visit7(args[0], []); -} - -// node_modules/@sinclair/typebox/build/esm/value/cast/cast.mjs -var ValueCastError = class extends TypeBoxError { - constructor(schema, message) { - super(message); - this.schema = schema; - } -}; -function ScoreUnion(schema, references, value) { - if (schema[Kind] === "Object" && typeof value === "object" && !IsNull2(value)) { - const object = schema; - const keys = Object.getOwnPropertyNames(value); - const entries = Object.entries(object.properties); - return entries.reduce((acc, [key, schema2]) => { - const literal = schema2[Kind] === "Literal" && schema2.const === value[key] ? 100 : 0; - const checks = Check(schema2, references, value[key]) ? 10 : 0; - const exists = keys.includes(key) ? 1 : 0; - return acc + (literal + checks + exists); - }, 0); - } else if (schema[Kind] === "Union") { - const schemas = schema.anyOf.map((schema2) => Deref(schema2, references)); - const scores = schemas.map((schema2) => ScoreUnion(schema2, references, value)); - return Math.max(...scores); - } else { - return Check(schema, references, value) ? 1 : 0; - } -} -function SelectUnion(union, references, value) { - const schemas = union.anyOf.map((schema) => Deref(schema, references)); - let [select, best] = [schemas[0], 0]; - for (const schema of schemas) { - const score = ScoreUnion(schema, references, value); - if (score > best) { - select = schema; - best = score; - } - } - return select; -} -function CastUnion(union, references, value) { - if ("default" in union) { - return typeof value === "function" ? union.default : Clone2(union.default); - } else { - const schema = SelectUnion(union, references, value); - return Cast(schema, references, value); - } -} -function DefaultClone(schema, references, value) { - return Check(schema, references, value) ? Clone2(value) : Create2(schema, references); -} -function Default(schema, references, value) { - return Check(schema, references, value) ? value : Create2(schema, references); -} -function FromArray11(schema, references, value) { - if (Check(schema, references, value)) - return Clone2(value); - const created = IsArray2(value) ? Clone2(value) : Create2(schema, references); - const minimum = IsNumber2(schema.minItems) && created.length < schema.minItems ? [...created, ...Array.from({ length: schema.minItems - created.length }, () => null)] : created; - const maximum = IsNumber2(schema.maxItems) && minimum.length > schema.maxItems ? minimum.slice(0, schema.maxItems) : minimum; - const casted = maximum.map((value2) => Visit8(schema.items, references, value2)); - if (schema.uniqueItems !== true) - return casted; - const unique = [...new Set(casted)]; - if (!Check(schema, references, unique)) - throw new ValueCastError(schema, "Array cast produced invalid data due to uniqueItems constraint"); - return unique; -} -function FromConstructor7(schema, references, value) { - if (Check(schema, references, value)) - return Create2(schema, references); - const required = new Set(schema.returns.required || []); - const result = function() { - }; - for (const [key, property] of Object.entries(schema.returns.properties)) { - if (!required.has(key) && value.prototype[key] === void 0) - continue; - result.prototype[key] = Visit8(property, references, value.prototype[key]); - } - return result; -} -function FromImport4(schema, references, value) { - const definitions = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - return Visit8(target, [...references, ...definitions], value); -} -function IntersectAssign(correct, value) { - if (IsObject2(correct) && !IsObject2(value) || !IsObject2(correct) && IsObject2(value)) - return correct; - if (!IsObject2(correct) || !IsObject2(value)) - return value; - return globalThis.Object.getOwnPropertyNames(correct).reduce((result, key) => { - const property = key in value ? IntersectAssign(correct[key], value[key]) : correct[key]; - return { ...result, [key]: property }; - }, {}); -} -function FromIntersect12(schema, references, value) { - if (Check(schema, references, value)) - return value; - const correct = Create2(schema, references); - const assigned = IntersectAssign(correct, value); - return Check(schema, references, assigned) ? assigned : correct; -} -function FromNever5(schema, references, value) { - throw new ValueCastError(schema, "Never types cannot be cast"); -} -function FromObject12(schema, references, value) { - if (Check(schema, references, value)) - return value; - if (value === null || typeof value !== "object") - return Create2(schema, references); - const required = new Set(schema.required || []); - const result = {}; - for (const [key, property] of Object.entries(schema.properties)) { - if (!required.has(key) && value[key] === void 0) - continue; - result[key] = Visit8(property, references, value[key]); - } - if (typeof schema.additionalProperties === "object") { - const propertyNames = Object.getOwnPropertyNames(schema.properties); - for (const propertyName of Object.getOwnPropertyNames(value)) { - if (propertyNames.includes(propertyName)) - continue; - result[propertyName] = Visit8(schema.additionalProperties, references, value[propertyName]); - } - } - return result; -} -function FromRecord7(schema, references, value) { - if (Check(schema, references, value)) - return Clone2(value); - if (value === null || typeof value !== "object" || Array.isArray(value) || value instanceof Date) - return Create2(schema, references); - const subschemaPropertyName = Object.getOwnPropertyNames(schema.patternProperties)[0]; - const subschema = schema.patternProperties[subschemaPropertyName]; - const result = {}; - for (const [propKey, propValue] of Object.entries(value)) { - result[propKey] = Visit8(subschema, references, propValue); - } - return result; -} -function FromRef8(schema, references, value) { - return Visit8(Deref(schema, references), references, value); -} -function FromThis4(schema, references, value) { - return Visit8(Deref(schema, references), references, value); -} -function FromTuple9(schema, references, value) { - if (Check(schema, references, value)) - return Clone2(value); - if (!IsArray2(value)) - return Create2(schema, references); - if (schema.items === void 0) - return []; - return schema.items.map((schema2, index2) => Visit8(schema2, references, value[index2])); -} -function FromUnion14(schema, references, value) { - return Check(schema, references, value) ? Clone2(value) : CastUnion(schema, references, value); -} -function Visit8(schema, references, value) { - const references_ = IsString2(schema.$id) ? Pushref(schema, references) : references; - const schema_ = schema; - switch (schema[Kind]) { - // -------------------------------------------------------------- - // Structural - // -------------------------------------------------------------- - case "Array": - return FromArray11(schema_, references_, value); - case "Constructor": - return FromConstructor7(schema_, references_, value); - case "Import": - return FromImport4(schema_, references_, value); - case "Intersect": - return FromIntersect12(schema_, references_, value); - case "Never": - return FromNever5(schema_, references_, value); - case "Object": - return FromObject12(schema_, references_, value); - case "Record": - return FromRecord7(schema_, references_, value); - case "Ref": - return FromRef8(schema_, references_, value); - case "This": - return FromThis4(schema_, references_, value); - case "Tuple": - return FromTuple9(schema_, references_, value); - case "Union": - return FromUnion14(schema_, references_, value); - // -------------------------------------------------------------- - // DefaultClone - // -------------------------------------------------------------- - case "Date": - case "Symbol": - case "Uint8Array": - return DefaultClone(schema, references, value); - // -------------------------------------------------------------- - // Default - // -------------------------------------------------------------- - default: - return Default(schema_, references_, value); - } -} -function Cast(...args) { - return args.length === 3 ? Visit8(args[0], args[1], args[2]) : Visit8(args[0], [], args[1]); -} - -// node_modules/@sinclair/typebox/build/esm/value/clean/clean.mjs -function IsCheckable(schema) { - return IsKind(schema) && schema[Kind] !== "Unsafe"; -} -function FromArray12(schema, references, value) { - if (!IsArray2(value)) - return value; - return value.map((value2) => Visit9(schema.items, references, value2)); -} -function FromImport5(schema, references, value) { - const definitions = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - return Visit9(target, [...references, ...definitions], value); -} -function FromIntersect13(schema, references, value) { - const unevaluatedProperties = schema.unevaluatedProperties; - const intersections = schema.allOf.map((schema2) => Visit9(schema2, references, Clone2(value))); - const composite = intersections.reduce((acc, value2) => IsObject2(value2) ? { ...acc, ...value2 } : value2, {}); - if (!IsObject2(value) || !IsObject2(composite) || !IsKind(unevaluatedProperties)) - return composite; - const knownkeys = KeyOfPropertyKeys(schema); - for (const key of Object.getOwnPropertyNames(value)) { - if (knownkeys.includes(key)) - continue; - if (Check(unevaluatedProperties, references, value[key])) { - composite[key] = Visit9(unevaluatedProperties, references, value[key]); - } - } - return composite; -} -function FromObject13(schema, references, value) { - if (!IsObject2(value) || IsArray2(value)) - return value; - const additionalProperties = schema.additionalProperties; - for (const key of Object.getOwnPropertyNames(value)) { - if (HasPropertyKey2(schema.properties, key)) { - value[key] = Visit9(schema.properties[key], references, value[key]); - continue; - } - if (IsKind(additionalProperties) && Check(additionalProperties, references, value[key])) { - value[key] = Visit9(additionalProperties, references, value[key]); - continue; - } - delete value[key]; - } - return value; -} -function FromRecord8(schema, references, value) { - if (!IsObject2(value)) - return value; - const additionalProperties = schema.additionalProperties; - const propertyKeys = Object.getOwnPropertyNames(value); - const [propertyKey, propertySchema] = Object.entries(schema.patternProperties)[0]; - const propertyKeyTest = new RegExp(propertyKey); - for (const key of propertyKeys) { - if (propertyKeyTest.test(key)) { - value[key] = Visit9(propertySchema, references, value[key]); - continue; - } - if (IsKind(additionalProperties) && Check(additionalProperties, references, value[key])) { - value[key] = Visit9(additionalProperties, references, value[key]); - continue; - } - delete value[key]; - } - return value; -} -function FromRef9(schema, references, value) { - return Visit9(Deref(schema, references), references, value); -} -function FromThis5(schema, references, value) { - return Visit9(Deref(schema, references), references, value); -} -function FromTuple10(schema, references, value) { - if (!IsArray2(value)) - return value; - if (IsUndefined2(schema.items)) - return []; - const length3 = Math.min(value.length, schema.items.length); - for (let i = 0; i < length3; i++) { - value[i] = Visit9(schema.items[i], references, value[i]); - } - return value.length > length3 ? value.slice(0, length3) : value; -} -function FromUnion15(schema, references, value) { - for (const inner of schema.anyOf) { - if (IsCheckable(inner) && Check(inner, references, value)) { - return Visit9(inner, references, value); - } - } - return value; -} -function Visit9(schema, references, value) { - const references_ = IsString2(schema.$id) ? Pushref(schema, references) : references; - const schema_ = schema; - switch (schema_[Kind]) { - case "Array": - return FromArray12(schema_, references_, value); - case "Import": - return FromImport5(schema_, references_, value); - case "Intersect": - return FromIntersect13(schema_, references_, value); - case "Object": - return FromObject13(schema_, references_, value); - case "Record": - return FromRecord8(schema_, references_, value); - case "Ref": - return FromRef9(schema_, references_, value); - case "This": - return FromThis5(schema_, references_, value); - case "Tuple": - return FromTuple10(schema_, references_, value); - case "Union": - return FromUnion15(schema_, references_, value); - default: - return value; - } -} -function Clean(...args) { - return args.length === 3 ? Visit9(args[0], args[1], args[2]) : Visit9(args[0], [], args[1]); -} - -// node_modules/@sinclair/typebox/build/esm/value/convert/convert.mjs -function IsStringNumeric(value) { - return IsString2(value) && !isNaN(value) && !isNaN(parseFloat(value)); -} -function IsValueToString(value) { - return IsBigInt2(value) || IsBoolean2(value) || IsNumber2(value); -} -function IsValueTrue(value) { - return value === true || IsNumber2(value) && value === 1 || IsBigInt2(value) && value === BigInt("1") || IsString2(value) && (value.toLowerCase() === "true" || value === "1"); -} -function IsValueFalse(value) { - return value === false || IsNumber2(value) && (value === 0 || Object.is(value, -0)) || IsBigInt2(value) && value === BigInt("0") || IsString2(value) && (value.toLowerCase() === "false" || value === "0" || value === "-0"); -} -function IsTimeStringWithTimeZone(value) { - return IsString2(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(value); -} -function IsTimeStringWithoutTimeZone(value) { - return IsString2(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(value); -} -function IsDateTimeStringWithTimeZone(value) { - return IsString2(value) && /^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(value); -} -function IsDateTimeStringWithoutTimeZone(value) { - return IsString2(value) && /^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(value); -} -function IsDateString(value) { - return IsString2(value) && /^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(value); -} -function TryConvertLiteralString(value, target) { - const conversion = TryConvertString(value); - return conversion === target ? conversion : value; -} -function TryConvertLiteralNumber(value, target) { - const conversion = TryConvertNumber(value); - return conversion === target ? conversion : value; -} -function TryConvertLiteralBoolean(value, target) { - const conversion = TryConvertBoolean(value); - return conversion === target ? conversion : value; -} -function TryConvertLiteral(schema, value) { - return IsString2(schema.const) ? TryConvertLiteralString(value, schema.const) : IsNumber2(schema.const) ? TryConvertLiteralNumber(value, schema.const) : IsBoolean2(schema.const) ? TryConvertLiteralBoolean(value, schema.const) : value; -} -function TryConvertBoolean(value) { - return IsValueTrue(value) ? true : IsValueFalse(value) ? false : value; -} -function TryConvertBigInt(value) { - const truncateInteger = (value2) => value2.split(".")[0]; - return IsStringNumeric(value) ? BigInt(truncateInteger(value)) : IsNumber2(value) ? BigInt(Math.trunc(value)) : IsValueFalse(value) ? BigInt(0) : IsValueTrue(value) ? BigInt(1) : value; -} -function TryConvertString(value) { - return IsSymbol2(value) && value.description !== void 0 ? value.description.toString() : IsValueToString(value) ? value.toString() : value; -} -function TryConvertNumber(value) { - return IsStringNumeric(value) ? parseFloat(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value; -} -function TryConvertInteger(value) { - return IsStringNumeric(value) ? parseInt(value) : IsNumber2(value) ? Math.trunc(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value; -} -function TryConvertNull(value) { - return IsString2(value) && value.toLowerCase() === "null" ? null : value; -} -function TryConvertUndefined(value) { - return IsString2(value) && value === "undefined" ? void 0 : value; -} -function TryConvertDate(value) { - return IsDate2(value) ? value : IsNumber2(value) ? new Date(value) : IsValueTrue(value) ? /* @__PURE__ */ new Date(1) : IsValueFalse(value) ? /* @__PURE__ */ new Date(0) : IsStringNumeric(value) ? new Date(parseInt(value)) : IsTimeStringWithoutTimeZone(value) ? /* @__PURE__ */ new Date(`1970-01-01T${value}.000Z`) : IsTimeStringWithTimeZone(value) ? /* @__PURE__ */ new Date(`1970-01-01T${value}`) : IsDateTimeStringWithoutTimeZone(value) ? /* @__PURE__ */ new Date(`${value}.000Z`) : IsDateTimeStringWithTimeZone(value) ? new Date(value) : IsDateString(value) ? /* @__PURE__ */ new Date(`${value}T00:00:00.000Z`) : value; -} -function Default2(value) { - return value; -} -function FromArray13(schema, references, value) { - const elements = IsArray2(value) ? value : [value]; - return elements.map((element) => Visit10(schema.items, references, element)); -} -function FromBigInt5(schema, references, value) { - return TryConvertBigInt(value); -} -function FromBoolean5(schema, references, value) { - return TryConvertBoolean(value); -} -function FromDate6(schema, references, value) { - return TryConvertDate(value); -} -function FromImport6(schema, references, value) { - const definitions = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - return Visit10(target, [...references, ...definitions], value); -} -function FromInteger5(schema, references, value) { - return TryConvertInteger(value); -} -function FromIntersect14(schema, references, value) { - return schema.allOf.reduce((value2, schema2) => Visit10(schema2, references, value2), value); -} -function FromLiteral6(schema, references, value) { - return TryConvertLiteral(schema, value); -} -function FromNull5(schema, references, value) { - return TryConvertNull(value); -} -function FromNumber5(schema, references, value) { - return TryConvertNumber(value); -} -function FromObject14(schema, references, value) { - if (!IsObject2(value) || IsArray2(value)) - return value; - for (const propertyKey of Object.getOwnPropertyNames(schema.properties)) { - if (!HasPropertyKey2(value, propertyKey)) - continue; - value[propertyKey] = Visit10(schema.properties[propertyKey], references, value[propertyKey]); - } - return value; -} -function FromRecord9(schema, references, value) { - const isConvertable = IsObject2(value) && !IsArray2(value); - if (!isConvertable) - return value; - const propertyKey = Object.getOwnPropertyNames(schema.patternProperties)[0]; - const property = schema.patternProperties[propertyKey]; - for (const [propKey, propValue] of Object.entries(value)) { - value[propKey] = Visit10(property, references, propValue); - } - return value; -} -function FromRef10(schema, references, value) { - return Visit10(Deref(schema, references), references, value); -} -function FromString5(schema, references, value) { - return TryConvertString(value); -} -function FromSymbol5(schema, references, value) { - return IsString2(value) || IsNumber2(value) ? Symbol(value) : value; -} -function FromThis6(schema, references, value) { - return Visit10(Deref(schema, references), references, value); -} -function FromTuple11(schema, references, value) { - const isConvertable = IsArray2(value) && !IsUndefined2(schema.items); - if (!isConvertable) - return value; - return value.map((value2, index2) => { - return index2 < schema.items.length ? Visit10(schema.items[index2], references, value2) : value2; - }); -} -function FromUndefined5(schema, references, value) { - return TryConvertUndefined(value); -} -function FromUnion16(schema, references, value) { - for (const subschema of schema.anyOf) { - if (Check(subschema, references, value)) { - return value; - } - } - for (const subschema of schema.anyOf) { - const converted = Visit10(subschema, references, Clone2(value)); - if (!Check(subschema, references, converted)) - continue; - return converted; - } - return value; -} -function Visit10(schema, references, value) { - const references_ = Pushref(schema, references); - const schema_ = schema; - switch (schema[Kind]) { - case "Array": - return FromArray13(schema_, references_, value); - case "BigInt": - return FromBigInt5(schema_, references_, value); - case "Boolean": - return FromBoolean5(schema_, references_, value); - case "Date": - return FromDate6(schema_, references_, value); - case "Import": - return FromImport6(schema_, references_, value); - case "Integer": - return FromInteger5(schema_, references_, value); - case "Intersect": - return FromIntersect14(schema_, references_, value); - case "Literal": - return FromLiteral6(schema_, references_, value); - case "Null": - return FromNull5(schema_, references_, value); - case "Number": - return FromNumber5(schema_, references_, value); - case "Object": - return FromObject14(schema_, references_, value); - case "Record": - return FromRecord9(schema_, references_, value); - case "Ref": - return FromRef10(schema_, references_, value); - case "String": - return FromString5(schema_, references_, value); - case "Symbol": - return FromSymbol5(schema_, references_, value); - case "This": - return FromThis6(schema_, references_, value); - case "Tuple": - return FromTuple11(schema_, references_, value); - case "Undefined": - return FromUndefined5(schema_, references_, value); - case "Union": - return FromUnion16(schema_, references_, value); - default: - return Default2(value); - } -} -function Convert(...args) { - return args.length === 3 ? Visit10(args[0], args[1], args[2]) : Visit10(args[0], [], args[1]); -} - -// node_modules/@sinclair/typebox/build/esm/value/transform/decode.mjs -var TransformDecodeCheckError = class extends TypeBoxError { - constructor(schema, value, error) { - super(`Unable to decode value as it does not match the expected schema`); - this.schema = schema; - this.value = value; - this.error = error; - } -}; -var TransformDecodeError = class extends TypeBoxError { - constructor(schema, path2, value, error) { - super(error instanceof Error ? error.message : "Unknown error"); - this.schema = schema; - this.path = path2; - this.value = value; - this.error = error; - } -}; -function Default3(schema, path2, value) { - try { - return IsTransform(schema) ? schema[TransformKind].Decode(value) : value; - } catch (error) { - throw new TransformDecodeError(schema, path2, value, error); - } -} -function FromArray14(schema, references, path2, value) { - return IsArray2(value) ? Default3(schema, path2, value.map((value2, index2) => Visit11(schema.items, references, `${path2}/${index2}`, value2))) : Default3(schema, path2, value); -} -function FromIntersect15(schema, references, path2, value) { - if (!IsObject2(value) || IsValueType(value)) - return Default3(schema, path2, value); - const knownEntries = KeyOfPropertyEntries(schema); - const knownKeys = knownEntries.map((entry) => entry[0]); - const knownProperties = { ...value }; - for (const [knownKey, knownSchema] of knownEntries) - if (knownKey in knownProperties) { - knownProperties[knownKey] = Visit11(knownSchema, references, `${path2}/${knownKey}`, knownProperties[knownKey]); - } - if (!IsTransform(schema.unevaluatedProperties)) { - return Default3(schema, path2, knownProperties); - } - const unknownKeys = Object.getOwnPropertyNames(knownProperties); - const unevaluatedProperties = schema.unevaluatedProperties; - const unknownProperties = { ...knownProperties }; - for (const key of unknownKeys) - if (!knownKeys.includes(key)) { - unknownProperties[key] = Default3(unevaluatedProperties, `${path2}/${key}`, unknownProperties[key]); - } - return Default3(schema, path2, unknownProperties); -} -function FromImport7(schema, references, path2, value) { - const additional = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - const result = Visit11(target, [...references, ...additional], path2, value); - return Default3(schema, path2, result); -} -function FromNot5(schema, references, path2, value) { - return Default3(schema, path2, Visit11(schema.not, references, path2, value)); -} -function FromObject15(schema, references, path2, value) { - if (!IsObject2(value)) - return Default3(schema, path2, value); - const knownKeys = KeyOfPropertyKeys(schema); - const knownProperties = { ...value }; - for (const key of knownKeys) { - if (!HasPropertyKey2(knownProperties, key)) - continue; - if (IsUndefined2(knownProperties[key]) && (!IsUndefined3(schema.properties[key]) || TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key))) - continue; - knownProperties[key] = Visit11(schema.properties[key], references, `${path2}/${key}`, knownProperties[key]); - } - if (!IsSchema(schema.additionalProperties)) { - return Default3(schema, path2, knownProperties); - } - const unknownKeys = Object.getOwnPropertyNames(knownProperties); - const additionalProperties = schema.additionalProperties; - const unknownProperties = { ...knownProperties }; - for (const key of unknownKeys) - if (!knownKeys.includes(key)) { - unknownProperties[key] = Default3(additionalProperties, `${path2}/${key}`, unknownProperties[key]); - } - return Default3(schema, path2, unknownProperties); -} -function FromRecord10(schema, references, path2, value) { - if (!IsObject2(value)) - return Default3(schema, path2, value); - const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0]; - const knownKeys = new RegExp(pattern); - const knownProperties = { ...value }; - for (const key of Object.getOwnPropertyNames(value)) - if (knownKeys.test(key)) { - knownProperties[key] = Visit11(schema.patternProperties[pattern], references, `${path2}/${key}`, knownProperties[key]); - } - if (!IsSchema(schema.additionalProperties)) { - return Default3(schema, path2, knownProperties); - } - const unknownKeys = Object.getOwnPropertyNames(knownProperties); - const additionalProperties = schema.additionalProperties; - const unknownProperties = { ...knownProperties }; - for (const key of unknownKeys) - if (!knownKeys.test(key)) { - unknownProperties[key] = Default3(additionalProperties, `${path2}/${key}`, unknownProperties[key]); - } - return Default3(schema, path2, unknownProperties); -} -function FromRef11(schema, references, path2, value) { - const target = Deref(schema, references); - return Default3(schema, path2, Visit11(target, references, path2, value)); -} -function FromThis7(schema, references, path2, value) { - const target = Deref(schema, references); - return Default3(schema, path2, Visit11(target, references, path2, value)); -} -function FromTuple12(schema, references, path2, value) { - return IsArray2(value) && IsArray2(schema.items) ? Default3(schema, path2, schema.items.map((schema2, index2) => Visit11(schema2, references, `${path2}/${index2}`, value[index2]))) : Default3(schema, path2, value); -} -function FromUnion17(schema, references, path2, value) { - for (const subschema of schema.anyOf) { - if (!Check(subschema, references, value)) - continue; - const decoded = Visit11(subschema, references, path2, value); - return Default3(schema, path2, decoded); - } - return Default3(schema, path2, value); -} -function Visit11(schema, references, path2, value) { - const references_ = Pushref(schema, references); - const schema_ = schema; - switch (schema[Kind]) { - case "Array": - return FromArray14(schema_, references_, path2, value); - case "Import": - return FromImport7(schema_, references_, path2, value); - case "Intersect": - return FromIntersect15(schema_, references_, path2, value); - case "Not": - return FromNot5(schema_, references_, path2, value); - case "Object": - return FromObject15(schema_, references_, path2, value); - case "Record": - return FromRecord10(schema_, references_, path2, value); - case "Ref": - return FromRef11(schema_, references_, path2, value); - case "Symbol": - return Default3(schema_, path2, value); - case "This": - return FromThis7(schema_, references_, path2, value); - case "Tuple": - return FromTuple12(schema_, references_, path2, value); - case "Union": - return FromUnion17(schema_, references_, path2, value); - default: - return Default3(schema_, path2, value); - } -} -function TransformDecode(schema, references, value) { - return Visit11(schema, references, "", value); -} - -// node_modules/@sinclair/typebox/build/esm/value/transform/encode.mjs -var TransformEncodeCheckError = class extends TypeBoxError { - constructor(schema, value, error) { - super(`The encoded value does not match the expected schema`); - this.schema = schema; - this.value = value; - this.error = error; - } -}; -var TransformEncodeError = class extends TypeBoxError { - constructor(schema, path2, value, error) { - super(`${error instanceof Error ? error.message : "Unknown error"}`); - this.schema = schema; - this.path = path2; - this.value = value; - this.error = error; - } -}; -function Default4(schema, path2, value) { - try { - return IsTransform(schema) ? schema[TransformKind].Encode(value) : value; - } catch (error) { - throw new TransformEncodeError(schema, path2, value, error); - } -} -function FromArray15(schema, references, path2, value) { - const defaulted = Default4(schema, path2, value); - return IsArray2(defaulted) ? defaulted.map((value2, index2) => Visit12(schema.items, references, `${path2}/${index2}`, value2)) : defaulted; -} -function FromImport8(schema, references, path2, value) { - const additional = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - const result = Default4(schema, path2, value); - return Visit12(target, [...references, ...additional], path2, result); -} -function FromIntersect16(schema, references, path2, value) { - const defaulted = Default4(schema, path2, value); - if (!IsObject2(value) || IsValueType(value)) - return defaulted; - const knownEntries = KeyOfPropertyEntries(schema); - const knownKeys = knownEntries.map((entry) => entry[0]); - const knownProperties = { ...defaulted }; - for (const [knownKey, knownSchema] of knownEntries) - if (knownKey in knownProperties) { - knownProperties[knownKey] = Visit12(knownSchema, references, `${path2}/${knownKey}`, knownProperties[knownKey]); - } - if (!IsTransform(schema.unevaluatedProperties)) { - return knownProperties; - } - const unknownKeys = Object.getOwnPropertyNames(knownProperties); - const unevaluatedProperties = schema.unevaluatedProperties; - const properties = { ...knownProperties }; - for (const key of unknownKeys) - if (!knownKeys.includes(key)) { - properties[key] = Default4(unevaluatedProperties, `${path2}/${key}`, properties[key]); - } - return properties; -} -function FromNot6(schema, references, path2, value) { - return Default4(schema.not, path2, Default4(schema, path2, value)); -} -function FromObject16(schema, references, path2, value) { - const defaulted = Default4(schema, path2, value); - if (!IsObject2(defaulted)) - return defaulted; - const knownKeys = KeyOfPropertyKeys(schema); - const knownProperties = { ...defaulted }; - for (const key of knownKeys) { - if (!HasPropertyKey2(knownProperties, key)) - continue; - if (IsUndefined2(knownProperties[key]) && (!IsUndefined3(schema.properties[key]) || TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key))) - continue; - knownProperties[key] = Visit12(schema.properties[key], references, `${path2}/${key}`, knownProperties[key]); - } - if (!IsSchema(schema.additionalProperties)) { - return knownProperties; - } - const unknownKeys = Object.getOwnPropertyNames(knownProperties); - const additionalProperties = schema.additionalProperties; - const properties = { ...knownProperties }; - for (const key of unknownKeys) - if (!knownKeys.includes(key)) { - properties[key] = Default4(additionalProperties, `${path2}/${key}`, properties[key]); - } - return properties; -} -function FromRecord11(schema, references, path2, value) { - const defaulted = Default4(schema, path2, value); - if (!IsObject2(value)) - return defaulted; - const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0]; - const knownKeys = new RegExp(pattern); - const knownProperties = { ...defaulted }; - for (const key of Object.getOwnPropertyNames(value)) - if (knownKeys.test(key)) { - knownProperties[key] = Visit12(schema.patternProperties[pattern], references, `${path2}/${key}`, knownProperties[key]); - } - if (!IsSchema(schema.additionalProperties)) { - return knownProperties; - } - const unknownKeys = Object.getOwnPropertyNames(knownProperties); - const additionalProperties = schema.additionalProperties; - const properties = { ...knownProperties }; - for (const key of unknownKeys) - if (!knownKeys.test(key)) { - properties[key] = Default4(additionalProperties, `${path2}/${key}`, properties[key]); - } - return properties; -} -function FromRef12(schema, references, path2, value) { - const target = Deref(schema, references); - const resolved = Visit12(target, references, path2, value); - return Default4(schema, path2, resolved); -} -function FromThis8(schema, references, path2, value) { - const target = Deref(schema, references); - const resolved = Visit12(target, references, path2, value); - return Default4(schema, path2, resolved); -} -function FromTuple13(schema, references, path2, value) { - const value1 = Default4(schema, path2, value); - return IsArray2(schema.items) ? schema.items.map((schema2, index2) => Visit12(schema2, references, `${path2}/${index2}`, value1[index2])) : []; -} -function FromUnion18(schema, references, path2, value) { - for (const subschema of schema.anyOf) { - if (!Check(subschema, references, value)) - continue; - const value1 = Visit12(subschema, references, path2, value); - return Default4(schema, path2, value1); - } - for (const subschema of schema.anyOf) { - const value1 = Visit12(subschema, references, path2, value); - if (!Check(schema, references, value1)) - continue; - return Default4(schema, path2, value1); - } - return Default4(schema, path2, value); -} -function Visit12(schema, references, path2, value) { - const references_ = Pushref(schema, references); - const schema_ = schema; - switch (schema[Kind]) { - case "Array": - return FromArray15(schema_, references_, path2, value); - case "Import": - return FromImport8(schema_, references_, path2, value); - case "Intersect": - return FromIntersect16(schema_, references_, path2, value); - case "Not": - return FromNot6(schema_, references_, path2, value); - case "Object": - return FromObject16(schema_, references_, path2, value); - case "Record": - return FromRecord11(schema_, references_, path2, value); - case "Ref": - return FromRef12(schema_, references_, path2, value); - case "This": - return FromThis8(schema_, references_, path2, value); - case "Tuple": - return FromTuple13(schema_, references_, path2, value); - case "Union": - return FromUnion18(schema_, references_, path2, value); - default: - return Default4(schema_, path2, value); - } -} -function TransformEncode(schema, references, value) { - return Visit12(schema, references, "", value); -} - -// node_modules/@sinclair/typebox/build/esm/value/transform/has.mjs -function FromArray16(schema, references) { - return IsTransform(schema) || Visit13(schema.items, references); -} -function FromAsyncIterator7(schema, references) { - return IsTransform(schema) || Visit13(schema.items, references); -} -function FromConstructor8(schema, references) { - return IsTransform(schema) || Visit13(schema.returns, references) || schema.parameters.some((schema2) => Visit13(schema2, references)); -} -function FromFunction7(schema, references) { - return IsTransform(schema) || Visit13(schema.returns, references) || schema.parameters.some((schema2) => Visit13(schema2, references)); -} -function FromIntersect17(schema, references) { - return IsTransform(schema) || IsTransform(schema.unevaluatedProperties) || schema.allOf.some((schema2) => Visit13(schema2, references)); -} -function FromImport9(schema, references) { - const additional = globalThis.Object.getOwnPropertyNames(schema.$defs).reduce((result, key) => [...result, schema.$defs[key]], []); - const target = schema.$defs[schema.$ref]; - return IsTransform(schema) || Visit13(target, [...additional, ...references]); -} -function FromIterator7(schema, references) { - return IsTransform(schema) || Visit13(schema.items, references); -} -function FromNot7(schema, references) { - return IsTransform(schema) || Visit13(schema.not, references); -} -function FromObject17(schema, references) { - return IsTransform(schema) || Object.values(schema.properties).some((schema2) => Visit13(schema2, references)) || IsSchema(schema.additionalProperties) && Visit13(schema.additionalProperties, references); -} -function FromPromise7(schema, references) { - return IsTransform(schema) || Visit13(schema.item, references); -} -function FromRecord12(schema, references) { - const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0]; - const property = schema.patternProperties[pattern]; - return IsTransform(schema) || Visit13(property, references) || IsSchema(schema.additionalProperties) && IsTransform(schema.additionalProperties); -} -function FromRef13(schema, references) { - if (IsTransform(schema)) - return true; - return Visit13(Deref(schema, references), references); -} -function FromThis9(schema, references) { - if (IsTransform(schema)) - return true; - return Visit13(Deref(schema, references), references); -} -function FromTuple14(schema, references) { - return IsTransform(schema) || !IsUndefined2(schema.items) && schema.items.some((schema2) => Visit13(schema2, references)); -} -function FromUnion19(schema, references) { - return IsTransform(schema) || schema.anyOf.some((schema2) => Visit13(schema2, references)); -} -function Visit13(schema, references) { - const references_ = Pushref(schema, references); - const schema_ = schema; - if (schema.$id && visited.has(schema.$id)) - return false; - if (schema.$id) - visited.add(schema.$id); - switch (schema[Kind]) { - case "Array": - return FromArray16(schema_, references_); - case "AsyncIterator": - return FromAsyncIterator7(schema_, references_); - case "Constructor": - return FromConstructor8(schema_, references_); - case "Function": - return FromFunction7(schema_, references_); - case "Import": - return FromImport9(schema_, references_); - case "Intersect": - return FromIntersect17(schema_, references_); - case "Iterator": - return FromIterator7(schema_, references_); - case "Not": - return FromNot7(schema_, references_); - case "Object": - return FromObject17(schema_, references_); - case "Promise": - return FromPromise7(schema_, references_); - case "Record": - return FromRecord12(schema_, references_); - case "Ref": - return FromRef13(schema_, references_); - case "This": - return FromThis9(schema_, references_); - case "Tuple": - return FromTuple14(schema_, references_); - case "Union": - return FromUnion19(schema_, references_); - default: - return IsTransform(schema); - } -} -var visited = /* @__PURE__ */ new Set(); -function HasTransform(schema, references) { - visited.clear(); - return Visit13(schema, references); -} - -// node_modules/@sinclair/typebox/build/esm/value/decode/decode.mjs -function Decode(...args) { - const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]]; - if (!Check(schema, references, value)) - throw new TransformDecodeCheckError(schema, value, Errors(schema, references, value).First()); - return HasTransform(schema, references) ? TransformDecode(schema, references, value) : value; -} - -// node_modules/@sinclair/typebox/build/esm/value/default/default.mjs -function ValueOrDefault(schema, value) { - const defaultValue = HasPropertyKey2(schema, "default") ? schema.default : void 0; - const clone = IsFunction2(defaultValue) ? defaultValue() : Clone2(defaultValue); - return IsUndefined2(value) ? clone : IsObject2(value) && IsObject2(clone) ? Object.assign(clone, value) : value; -} -function HasDefaultProperty(schema) { - return IsKind(schema) && "default" in schema; -} -function FromArray17(schema, references, value) { - if (IsArray2(value)) { - for (let i = 0; i < value.length; i++) { - value[i] = Visit14(schema.items, references, value[i]); - } - return value; - } - const defaulted = ValueOrDefault(schema, value); - if (!IsArray2(defaulted)) - return defaulted; - for (let i = 0; i < defaulted.length; i++) { - defaulted[i] = Visit14(schema.items, references, defaulted[i]); - } - return defaulted; -} -function FromDate7(schema, references, value) { - return IsDate2(value) ? value : ValueOrDefault(schema, value); -} -function FromImport10(schema, references, value) { - const definitions = globalThis.Object.values(schema.$defs); - const target = schema.$defs[schema.$ref]; - return Visit14(target, [...references, ...definitions], value); -} -function FromIntersect18(schema, references, value) { - const defaulted = ValueOrDefault(schema, value); - return schema.allOf.reduce((acc, schema2) => { - const next = Visit14(schema2, references, defaulted); - return IsObject2(next) ? { ...acc, ...next } : next; - }, {}); -} -function FromObject18(schema, references, value) { - const defaulted = ValueOrDefault(schema, value); - if (!IsObject2(defaulted)) - return defaulted; - const knownPropertyKeys = Object.getOwnPropertyNames(schema.properties); - for (const key of knownPropertyKeys) { - const propertyValue = Visit14(schema.properties[key], references, defaulted[key]); - if (IsUndefined2(propertyValue)) - continue; - defaulted[key] = Visit14(schema.properties[key], references, defaulted[key]); - } - if (!HasDefaultProperty(schema.additionalProperties)) - return defaulted; - for (const key of Object.getOwnPropertyNames(defaulted)) { - if (knownPropertyKeys.includes(key)) - continue; - defaulted[key] = Visit14(schema.additionalProperties, references, defaulted[key]); - } - return defaulted; -} -function FromRecord13(schema, references, value) { - const defaulted = ValueOrDefault(schema, value); - if (!IsObject2(defaulted)) - return defaulted; - const additionalPropertiesSchema = schema.additionalProperties; - const [propertyKeyPattern, propertySchema] = Object.entries(schema.patternProperties)[0]; - const knownPropertyKey = new RegExp(propertyKeyPattern); - for (const key of Object.getOwnPropertyNames(defaulted)) { - if (!(knownPropertyKey.test(key) && HasDefaultProperty(propertySchema))) - continue; - defaulted[key] = Visit14(propertySchema, references, defaulted[key]); - } - if (!HasDefaultProperty(additionalPropertiesSchema)) - return defaulted; - for (const key of Object.getOwnPropertyNames(defaulted)) { - if (knownPropertyKey.test(key)) - continue; - defaulted[key] = Visit14(additionalPropertiesSchema, references, defaulted[key]); - } - return defaulted; -} -function FromRef14(schema, references, value) { - return Visit14(Deref(schema, references), references, ValueOrDefault(schema, value)); -} -function FromThis10(schema, references, value) { - return Visit14(Deref(schema, references), references, value); -} -function FromTuple15(schema, references, value) { - const defaulted = ValueOrDefault(schema, value); - if (!IsArray2(defaulted) || IsUndefined2(schema.items)) - return defaulted; - const [items, max3] = [schema.items, Math.max(schema.items.length, defaulted.length)]; - for (let i = 0; i < max3; i++) { - if (i < items.length) - defaulted[i] = Visit14(items[i], references, defaulted[i]); - } - return defaulted; -} -function FromUnion20(schema, references, value) { - const defaulted = ValueOrDefault(schema, value); - for (const inner of schema.anyOf) { - const result = Visit14(inner, references, Clone2(defaulted)); - if (Check(inner, references, result)) { - return result; - } - } - return defaulted; -} -function Visit14(schema, references, value) { - const references_ = Pushref(schema, references); - const schema_ = schema; - switch (schema_[Kind]) { - case "Array": - return FromArray17(schema_, references_, value); - case "Date": - return FromDate7(schema_, references_, value); - case "Import": - return FromImport10(schema_, references_, value); - case "Intersect": - return FromIntersect18(schema_, references_, value); - case "Object": - return FromObject18(schema_, references_, value); - case "Record": - return FromRecord13(schema_, references_, value); - case "Ref": - return FromRef14(schema_, references_, value); - case "This": - return FromThis10(schema_, references_, value); - case "Tuple": - return FromTuple15(schema_, references_, value); - case "Union": - return FromUnion20(schema_, references_, value); - default: - return ValueOrDefault(schema_, value); - } -} -function Default5(...args) { - return args.length === 3 ? Visit14(args[0], args[1], args[2]) : Visit14(args[0], [], args[1]); -} - -// node_modules/@sinclair/typebox/build/esm/value/pointer/pointer.mjs -var pointer_exports = {}; -__export(pointer_exports, { - Delete: () => Delete3, - Format: () => Format, - Get: () => Get3, - Has: () => Has3, - Set: () => Set4, - ValuePointerRootDeleteError: () => ValuePointerRootDeleteError, - ValuePointerRootSetError: () => ValuePointerRootSetError -}); -var ValuePointerRootSetError = class extends TypeBoxError { - constructor(value, path2, update) { - super("Cannot set root value"); - this.value = value; - this.path = path2; - this.update = update; - } -}; -var ValuePointerRootDeleteError = class extends TypeBoxError { - constructor(value, path2) { - super("Cannot delete root value"); - this.value = value; - this.path = path2; - } -}; -function Escape2(component) { - return component.indexOf("~") === -1 ? component : component.replace(/~1/g, "/").replace(/~0/g, "~"); -} -function* Format(pointer2) { - if (pointer2 === "") - return; - let [start2, end] = [0, 0]; - for (let i = 0; i < pointer2.length; i++) { - const char = pointer2.charAt(i); - if (char === "/") { - if (i === 0) { - start2 = i + 1; - } else { - end = i; - yield Escape2(pointer2.slice(start2, end)); - start2 = i + 1; - } - } else { - end = i; - } - } - yield Escape2(pointer2.slice(start2)); -} -function Set4(value, pointer2, update) { - if (pointer2 === "") - throw new ValuePointerRootSetError(value, pointer2, update); - let [owner, next, key] = [null, value, ""]; - for (const component of Format(pointer2)) { - if (next[component] === void 0) - next[component] = {}; - owner = next; - next = next[component]; - key = component; - } - owner[key] = update; -} -function Delete3(value, pointer2) { - if (pointer2 === "") - throw new ValuePointerRootDeleteError(value, pointer2); - let [owner, next, key] = [null, value, ""]; - for (const component of Format(pointer2)) { - if (next[component] === void 0 || next[component] === null) - return; - owner = next; - next = next[component]; - key = component; - } - if (Array.isArray(owner)) { - const index2 = parseInt(key); - owner.splice(index2, 1); - } else { - delete owner[key]; - } -} -function Has3(value, pointer2) { - if (pointer2 === "") - return true; - let [owner, next, key] = [null, value, ""]; - for (const component of Format(pointer2)) { - if (next[component] === void 0) - return false; - owner = next; - next = next[component]; - key = component; - } - return Object.getOwnPropertyNames(owner).includes(key); -} -function Get3(value, pointer2) { - if (pointer2 === "") - return value; - let current = value; - for (const component of Format(pointer2)) { - if (current[component] === void 0) - return void 0; - current = current[component]; - } - return current; -} - -// node_modules/@sinclair/typebox/build/esm/value/equal/equal.mjs -function ObjectType3(left2, right2) { - if (!IsObject2(right2)) - return false; - const leftKeys = [...Object.keys(left2), ...Object.getOwnPropertySymbols(left2)]; - const rightKeys = [...Object.keys(right2), ...Object.getOwnPropertySymbols(right2)]; - if (leftKeys.length !== rightKeys.length) - return false; - return leftKeys.every((key) => Equal(left2[key], right2[key])); -} -function DateType3(left2, right2) { - return IsDate2(right2) && left2.getTime() === right2.getTime(); -} -function ArrayType3(left2, right2) { - if (!IsArray2(right2) || left2.length !== right2.length) - return false; - return left2.every((value, index2) => Equal(value, right2[index2])); -} -function TypedArrayType(left2, right2) { - if (!IsTypedArray(right2) || left2.length !== right2.length || Object.getPrototypeOf(left2).constructor.name !== Object.getPrototypeOf(right2).constructor.name) - return false; - return left2.every((value, index2) => Equal(value, right2[index2])); -} -function ValueType(left2, right2) { - return left2 === right2; -} -function Equal(left2, right2) { - if (IsDate2(left2)) - return DateType3(left2, right2); - if (IsTypedArray(left2)) - return TypedArrayType(left2, right2); - if (IsArray2(left2)) - return ArrayType3(left2, right2); - if (IsObject2(left2)) - return ObjectType3(left2, right2); - if (IsValueType(left2)) - return ValueType(left2, right2); - throw new Error("ValueEquals: Unable to compare value"); -} - -// node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs -var Insert = Object2({ - type: Literal("insert"), - path: String2(), - value: Unknown() -}); -var Update = Object2({ - type: Literal("update"), - path: String2(), - value: Unknown() -}); -var Delete4 = Object2({ - type: Literal("delete"), - path: String2() -}); -var Edit = Union([Insert, Update, Delete4]); -var ValueDiffError = class extends TypeBoxError { - constructor(value, message) { - super(message); - this.value = value; - } -}; -function CreateUpdate(path2, value) { - return { type: "update", path: path2, value }; -} -function CreateInsert(path2, value) { - return { type: "insert", path: path2, value }; -} -function CreateDelete(path2) { - return { type: "delete", path: path2 }; -} -function AssertDiffable(value) { - if (globalThis.Object.getOwnPropertySymbols(value).length > 0) - throw new ValueDiffError(value, "Cannot diff objects with symbols"); -} -function* ObjectType4(path2, current, next) { - AssertDiffable(current); - AssertDiffable(next); - if (!IsStandardObject(next)) - return yield CreateUpdate(path2, next); - const currentKeys = globalThis.Object.getOwnPropertyNames(current); - const nextKeys = globalThis.Object.getOwnPropertyNames(next); - for (const key of nextKeys) { - if (HasPropertyKey2(current, key)) - continue; - yield CreateInsert(`${path2}/${key}`, next[key]); - } - for (const key of currentKeys) { - if (!HasPropertyKey2(next, key)) - continue; - if (Equal(current, next)) - continue; - yield* Visit15(`${path2}/${key}`, current[key], next[key]); - } - for (const key of currentKeys) { - if (HasPropertyKey2(next, key)) - continue; - yield CreateDelete(`${path2}/${key}`); - } -} -function* ArrayType4(path2, current, next) { - if (!IsArray2(next)) - return yield CreateUpdate(path2, next); - for (let i = 0; i < Math.min(current.length, next.length); i++) { - yield* Visit15(`${path2}/${i}`, current[i], next[i]); - } - for (let i = 0; i < next.length; i++) { - if (i < current.length) - continue; - yield CreateInsert(`${path2}/${i}`, next[i]); - } - for (let i = current.length - 1; i >= 0; i--) { - if (i < next.length) - continue; - yield CreateDelete(`${path2}/${i}`); - } -} -function* TypedArrayType2(path2, current, next) { - if (!IsTypedArray(next) || current.length !== next.length || globalThis.Object.getPrototypeOf(current).constructor.name !== globalThis.Object.getPrototypeOf(next).constructor.name) - return yield CreateUpdate(path2, next); - for (let i = 0; i < Math.min(current.length, next.length); i++) { - yield* Visit15(`${path2}/${i}`, current[i], next[i]); - } -} -function* ValueType2(path2, current, next) { - if (current === next) - return; - yield CreateUpdate(path2, next); -} -function* Visit15(path2, current, next) { - if (IsStandardObject(current)) - return yield* ObjectType4(path2, current, next); - if (IsArray2(current)) - return yield* ArrayType4(path2, current, next); - if (IsTypedArray(current)) - return yield* TypedArrayType2(path2, current, next); - if (IsValueType(current)) - return yield* ValueType2(path2, current, next); - throw new ValueDiffError(current, "Unable to diff value"); -} -function Diff(current, next) { - return [...Visit15("", current, next)]; -} -function IsRootUpdate(edits) { - return edits.length > 0 && edits[0].path === "" && edits[0].type === "update"; -} -function IsIdentity(edits) { - return edits.length === 0; -} -function Patch(current, edits) { - if (IsRootUpdate(edits)) { - return Clone2(edits[0].value); - } - if (IsIdentity(edits)) { - return Clone2(current); - } - const clone = Clone2(current); - for (const edit of edits) { - switch (edit.type) { - case "insert": { - pointer_exports.Set(clone, edit.path, edit.value); - break; - } - case "update": { - pointer_exports.Set(clone, edit.path, edit.value); - break; - } - case "delete": { - pointer_exports.Delete(clone, edit.path); - break; - } - } - } - return clone; -} - -// node_modules/@sinclair/typebox/build/esm/value/encode/encode.mjs -function Encode(...args) { - const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]]; - const encoded = HasTransform(schema, references) ? TransformEncode(schema, references, value) : value; - if (!Check(schema, references, encoded)) - throw new TransformEncodeCheckError(schema, encoded, Errors(schema, references, encoded).First()); - return encoded; -} - -// node_modules/@sinclair/typebox/build/esm/value/mutate/mutate.mjs -function IsStandardObject2(value) { - return IsObject2(value) && !IsArray2(value); -} -var ValueMutateError = class extends TypeBoxError { - constructor(message) { - super(message); - } -}; -function ObjectType5(root2, path2, current, next) { - if (!IsStandardObject2(current)) { - pointer_exports.Set(root2, path2, Clone2(next)); - } else { - const currentKeys = Object.getOwnPropertyNames(current); - const nextKeys = Object.getOwnPropertyNames(next); - for (const currentKey of currentKeys) { - if (!nextKeys.includes(currentKey)) { - delete current[currentKey]; - } - } - for (const nextKey of nextKeys) { - if (!currentKeys.includes(nextKey)) { - current[nextKey] = null; - } - } - for (const nextKey of nextKeys) { - Visit16(root2, `${path2}/${nextKey}`, current[nextKey], next[nextKey]); - } - } -} -function ArrayType5(root2, path2, current, next) { - if (!IsArray2(current)) { - pointer_exports.Set(root2, path2, Clone2(next)); - } else { - for (let index2 = 0; index2 < next.length; index2++) { - Visit16(root2, `${path2}/${index2}`, current[index2], next[index2]); - } - current.splice(next.length); - } -} -function TypedArrayType3(root2, path2, current, next) { - if (IsTypedArray(current) && current.length === next.length) { - for (let i = 0; i < current.length; i++) { - current[i] = next[i]; - } - } else { - pointer_exports.Set(root2, path2, Clone2(next)); - } -} -function ValueType3(root2, path2, current, next) { - if (current === next) - return; - pointer_exports.Set(root2, path2, next); -} -function Visit16(root2, path2, current, next) { - if (IsArray2(next)) - return ArrayType5(root2, path2, current, next); - if (IsTypedArray(next)) - return TypedArrayType3(root2, path2, current, next); - if (IsStandardObject2(next)) - return ObjectType5(root2, path2, current, next); - if (IsValueType(next)) - return ValueType3(root2, path2, current, next); -} -function IsNonMutableValue(value) { - return IsTypedArray(value) || IsValueType(value); -} -function IsMismatchedValue(current, next) { - return IsStandardObject2(current) && IsArray2(next) || IsArray2(current) && IsStandardObject2(next); -} -function Mutate(current, next) { - if (IsNonMutableValue(current) || IsNonMutableValue(next)) - throw new ValueMutateError("Only object and array types can be mutated at the root level"); - if (IsMismatchedValue(current, next)) - throw new ValueMutateError("Cannot assign due type mismatch of assignable values"); - Visit16(current, "", current, next); -} - -// node_modules/@sinclair/typebox/build/esm/value/parse/parse.mjs -var ParseError = class extends TypeBoxError { - constructor(message) { - super(message); - } -}; -var ParseRegistry; -(function(ParseRegistry2) { - const registry2 = /* @__PURE__ */ new Map([ - ["Assert", (type2, references, value) => { - Assert(type2, references, value); - return value; - }], - ["Cast", (type2, references, value) => Cast(type2, references, value)], - ["Clean", (type2, references, value) => Clean(type2, references, value)], - ["Clone", (_type, _references, value) => Clone2(value)], - ["Convert", (type2, references, value) => Convert(type2, references, value)], - ["Decode", (type2, references, value) => HasTransform(type2, references) ? TransformDecode(type2, references, value) : value], - ["Default", (type2, references, value) => Default5(type2, references, value)], - ["Encode", (type2, references, value) => HasTransform(type2, references) ? TransformEncode(type2, references, value) : value] - ]); - function Delete5(key) { - registry2.delete(key); - } - ParseRegistry2.Delete = Delete5; - function Set5(key, callback) { - registry2.set(key, callback); - } - ParseRegistry2.Set = Set5; - function Get4(key) { - return registry2.get(key); - } - ParseRegistry2.Get = Get4; -})(ParseRegistry || (ParseRegistry = {})); -var ParseDefault = [ - "Clone", - "Clean", - "Default", - "Convert", - "Assert", - "Decode" -]; -function ParseValue(operations, type2, references, value) { - return operations.reduce((value2, operationKey) => { - const operation = ParseRegistry.Get(operationKey); - if (IsUndefined2(operation)) - throw new ParseError(`Unable to find Parse operation '${operationKey}'`); - return operation(type2, references, value2); - }, value); -} -function Parse(...args) { - const [operations, schema, references, value] = args.length === 4 ? [args[0], args[1], args[2], args[3]] : args.length === 3 ? IsArray2(args[0]) ? [args[0], args[1], [], args[2]] : [ParseDefault, args[0], args[1], args[2]] : args.length === 2 ? [ParseDefault, args[0], [], args[1]] : (() => { - throw new ParseError("Invalid Arguments"); - })(); - return ParseValue(operations, schema, references, value); -} - -// node_modules/@sinclair/typebox/build/esm/value/value/value.mjs -var value_exports2 = {}; -__export(value_exports2, { - Assert: () => Assert, - Cast: () => Cast, - Check: () => Check, - Clean: () => Clean, - Clone: () => Clone2, - Convert: () => Convert, - Create: () => Create2, - Decode: () => Decode, - Default: () => Default5, - Diff: () => Diff, - Edit: () => Edit, - Encode: () => Encode, - Equal: () => Equal, - Errors: () => Errors, - Hash: () => Hash, - Mutate: () => Mutate, - Parse: () => Parse, - Patch: () => Patch, - ValueErrorIterator: () => ValueErrorIterator -}); - -// src/render/report.ts -function renderStandaloneComponentContent(spec) { - switch (spec.type) { - case "summary_metrics": - return renderSummaryMetrics(spec); - case "performance_table": - return renderPerformanceTable(spec); - case "roc": - return renderRocV2(spec); - case "calibration": - return renderCalibrationV2(spec); - case "precision_recall": - return renderPrecisionRecallV2(spec); - case "gains": - return renderGainsV2(spec); - case "lift": - return renderLiftV2(spec); - case "decision_curve": - return renderDecisionCurveV2(spec); - case "interventions_avoided": - return renderInterventionsAvoidedV2(spec); - } +var y3=Object.defineProperty;var oa=(e,t)=>{for(var r in t)y3(e,r,{get:t[r],enumerable:!0})};var tr={};oa(tr,{HasPropertyKey:()=>Xu,IsArray:()=>xt,IsAsyncIterator:()=>Rh,IsBigInt:()=>jf,IsBoolean:()=>Oo,IsDate:()=>ia,IsFunction:()=>Ch,IsIterator:()=>Ah,IsNull:()=>Ph,IsNumber:()=>Nr,IsObject:()=>$e,IsRegExp:()=>Bf,IsString:()=>ze,IsSymbol:()=>kh,IsUint8Array:()=>Ro,IsUndefined:()=>gt});function Xu(e,t){return t in e}function Rh(e){return $e(e)&&!xt(e)&&!Ro(e)&&Symbol.asyncIterator in e}function xt(e){return Array.isArray(e)}function jf(e){return typeof e=="bigint"}function Oo(e){return typeof e=="boolean"}function ia(e){return e instanceof globalThis.Date}function Ch(e){return typeof e=="function"}function Ah(e){return $e(e)&&!xt(e)&&!Ro(e)&&Symbol.iterator in e}function Ph(e){return e===null}function Nr(e){return typeof e=="number"}function $e(e){return typeof e=="object"&&e!==null}function Bf(e){return e instanceof globalThis.RegExp}function ze(e){return typeof e=="string"}function kh(e){return typeof e=="symbol"}function Ro(e){return e instanceof globalThis.Uint8Array}function gt(e){return e===void 0}function x3(e){return e.map(t=>Zu(t))}function g3(e){return new Date(e.getTime())}function b3(e){return new Uint8Array(e)}function w3(e){return new RegExp(e.source,e.flags)}function S3(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Zu(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Zu(e[r]);return t}function Zu(e){return xt(e)?x3(e):ia(e)?g3(e):Ro(e)?b3(e):Bf(e)?w3(e):$e(e)?S3(e):e}function Xe(e){return Zu(e)}function rs(e,t){return t===void 0?Xe(e):Xe({...t,...e})}function Qu(e){return me(e)&&globalThis.Symbol.asyncIterator in e}function Ju(e){return me(e)&&globalThis.Symbol.iterator in e}function Nh(e){return me(e)&&(globalThis.Object.getPrototypeOf(e)===Object.prototype||globalThis.Object.getPrototypeOf(e)===null)}function el(e){return e instanceof globalThis.Promise}function ur(e){return e instanceof Date&&globalThis.Number.isFinite(e.getTime())}function p1(e){return e instanceof globalThis.Map}function m1(e){return e instanceof globalThis.Set}function Yr(e){return globalThis.ArrayBuffer.isView(e)}function ns(e){return e instanceof globalThis.Uint8Array}function se(e,t){return t in e}function me(e){return e!==null&&typeof e=="object"}function fe(e){return globalThis.Array.isArray(e)&&!globalThis.ArrayBuffer.isView(e)}function Ze(e){return e===void 0}function Co(e){return e===null}function Yn(e){return typeof e=="boolean"}function Qe(e){return typeof e=="number"}function tl(e){return globalThis.Number.isInteger(e)}function xn(e){return typeof e=="bigint"}function Ee(e){return typeof e=="string"}function hi(e){return typeof e=="function"}function Ao(e){return typeof e=="symbol"}function Fr(e){return xn(e)||Yn(e)||Co(e)||Qe(e)||Ee(e)||Ao(e)||Ze(e)}var It;(function(e){e.InstanceMode="default",e.ExactOptionalPropertyTypes=!1,e.AllowArrayObject=!1,e.AllowNaN=!1,e.AllowNullVoid=!1;function t(a,s){return e.ExactOptionalPropertyTypes?s in a:a[s]!==void 0}e.IsExactOptionalProperty=t;function r(a){let s=me(a);return e.AllowArrayObject?s:s&&!fe(a)}e.IsObjectLike=r;function n(a){return r(a)&&!(a instanceof Date)&&!(a instanceof Uint8Array)}e.IsRecordLike=n;function o(a){return e.AllowNaN?Qe(a):Number.isFinite(a)}e.IsNumberLike=o;function i(a){let s=Ze(a);return e.AllowNullVoid?s||a===null:s}e.IsVoidLike=i})(It||(It={}));function I3(e){return globalThis.Object.freeze(e).map(t=>Gf(t))}function _3(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Gf(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Gf(e[r]);return globalThis.Object.freeze(t)}function Gf(e){return xt(e)?I3(e):ia(e)?e:Ro(e)?e:Bf(e)?e:$e(e)?_3(e):e}function P(e,t){let r=t!==void 0?{...t,...e}:e;switch(It.InstanceMode){case"freeze":return Gf(r);case"clone":return Xe(r);default:return r}}var ce=class extends Error{constructor(t){super(t)}};var tt=Symbol.for("TypeBox.Transform"),gn=Symbol.for("TypeBox.Readonly"),Ht=Symbol.for("TypeBox.Optional"),Wr=Symbol.for("TypeBox.Hint"),k=Symbol.for("TypeBox.Kind");function os(e){return $e(e)&&e[gn]==="Readonly"}function br(e){return $e(e)&&e[Ht]==="Optional"}function Fh(e){return Ie(e,"Any")}function Eh(e){return Ie(e,"Argument")}function bn(e){return Ie(e,"Array")}function aa(e){return Ie(e,"AsyncIterator")}function sa(e){return Ie(e,"BigInt")}function Po(e){return Ie(e,"Boolean")}function wn(e){return Ie(e,"Computed")}function Sn(e){return Ie(e,"Constructor")}function v3(e){return Ie(e,"Date")}function In(e){return Ie(e,"Function")}function _n(e){return Ie(e,"Integer")}function st(e){return Ie(e,"Intersect")}function fa(e){return Ie(e,"Iterator")}function Ie(e,t){return $e(e)&&k in e&&e[k]===t}function rl(e){return Oo(e)||Nr(e)||ze(e)}function Er(e){return Ie(e,"Literal")}function $r(e){return Ie(e,"MappedKey")}function Je(e){return Ie(e,"MappedResult")}function yi(e){return Ie(e,"Never")}function T3(e){return Ie(e,"Not")}function zf(e){return Ie(e,"Null")}function vn(e){return Ie(e,"Number")}function bt(e){return Ie(e,"Object")}function ca(e){return Ie(e,"Promise")}function ua(e){return Ie(e,"Record")}function lt(e){return Ie(e,"Ref")}function $h(e){return Ie(e,"RegExp")}function ko(e){return Ie(e,"String")}function Kf(e){return Ie(e,"Symbol")}function Lr(e){return Ie(e,"TemplateLiteral")}function M3(e){return Ie(e,"This")}function Re(e){return $e(e)&&tt in e}function Dr(e){return Ie(e,"Tuple")}function No(e){return Ie(e,"Undefined")}function ve(e){return Ie(e,"Union")}function O3(e){return Ie(e,"Uint8Array")}function R3(e){return Ie(e,"Unknown")}function C3(e){return Ie(e,"Unsafe")}function A3(e){return Ie(e,"Void")}function xi(e){return $e(e)&&k in e&&ze(e[k])}function rt(e){return Fh(e)||Eh(e)||bn(e)||Po(e)||sa(e)||aa(e)||wn(e)||Sn(e)||v3(e)||In(e)||_n(e)||st(e)||fa(e)||Er(e)||$r(e)||Je(e)||yi(e)||T3(e)||zf(e)||vn(e)||bt(e)||ca(e)||ua(e)||lt(e)||$h(e)||ko(e)||Kf(e)||Lr(e)||M3(e)||Dr(e)||No(e)||ve(e)||O3(e)||R3(e)||C3(e)||A3(e)||xi(e)}var _={};oa(_,{IsAny:()=>x1,IsArgument:()=>g1,IsArray:()=>b1,IsAsyncIterator:()=>w1,IsBigInt:()=>S1,IsBoolean:()=>I1,IsComputed:()=>_1,IsConstructor:()=>v1,IsDate:()=>T1,IsFunction:()=>M1,IsImport:()=>$3,IsInteger:()=>O1,IsIntersect:()=>R1,IsIterator:()=>C1,IsKind:()=>t2,IsKindOf:()=>be,IsLiteral:()=>Hf,IsLiteralBoolean:()=>L3,IsLiteralNumber:()=>P1,IsLiteralString:()=>A1,IsLiteralValue:()=>k1,IsMappedKey:()=>N1,IsMappedResult:()=>F1,IsNever:()=>E1,IsNot:()=>$1,IsNull:()=>L1,IsNumber:()=>D1,IsObject:()=>V1,IsOptional:()=>E3,IsPromise:()=>U1,IsProperties:()=>nl,IsReadonly:()=>F3,IsRecord:()=>j1,IsRecursive:()=>D3,IsRef:()=>B1,IsRegExp:()=>G1,IsSchema:()=>kt,IsString:()=>z1,IsSymbol:()=>K1,IsTemplateLiteral:()=>q1,IsThis:()=>H1,IsTransform:()=>Y1,IsTuple:()=>W1,IsUint8Array:()=>Z1,IsUndefined:()=>X1,IsUnion:()=>Uh,IsUnionLiteral:()=>V3,IsUnknown:()=>Q1,IsUnsafe:()=>J1,IsVoid:()=>e2,TypeGuardUnknownTypeError:()=>Lh});var Lh=class extends ce{},P3=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function d1(e){try{return new RegExp(e),!0}catch{return!1}}function Dh(e){if(!ze(e))return!1;for(let t=0;t=7&&r<=13||r===27||r===127)return!1}return!0}function h1(e){return Vh(e)||kt(e)}function qf(e){return gt(e)||jf(e)}function Ke(e){return gt(e)||Nr(e)}function Vh(e){return gt(e)||Oo(e)}function Le(e){return gt(e)||ze(e)}function k3(e){return gt(e)||ze(e)&&Dh(e)&&d1(e)}function N3(e){return gt(e)||ze(e)&&Dh(e)}function y1(e){return gt(e)||kt(e)}function F3(e){return $e(e)&&e[gn]==="Readonly"}function E3(e){return $e(e)&&e[Ht]==="Optional"}function x1(e){return be(e,"Any")&&Le(e.$id)}function g1(e){return be(e,"Argument")&&Nr(e.index)}function b1(e){return be(e,"Array")&&e.type==="array"&&Le(e.$id)&&kt(e.items)&&Ke(e.minItems)&&Ke(e.maxItems)&&Vh(e.uniqueItems)&&y1(e.contains)&&Ke(e.minContains)&&Ke(e.maxContains)}function w1(e){return be(e,"AsyncIterator")&&e.type==="AsyncIterator"&&Le(e.$id)&&kt(e.items)}function S1(e){return be(e,"BigInt")&&e.type==="bigint"&&Le(e.$id)&&qf(e.exclusiveMaximum)&&qf(e.exclusiveMinimum)&&qf(e.maximum)&&qf(e.minimum)&&qf(e.multipleOf)}function I1(e){return be(e,"Boolean")&&e.type==="boolean"&&Le(e.$id)}function _1(e){return be(e,"Computed")&&ze(e.target)&&xt(e.parameters)&&e.parameters.every(t=>kt(t))}function v1(e){return be(e,"Constructor")&&e.type==="Constructor"&&Le(e.$id)&&xt(e.parameters)&&e.parameters.every(t=>kt(t))&&kt(e.returns)}function T1(e){return be(e,"Date")&&e.type==="Date"&&Le(e.$id)&&Ke(e.exclusiveMaximumTimestamp)&&Ke(e.exclusiveMinimumTimestamp)&&Ke(e.maximumTimestamp)&&Ke(e.minimumTimestamp)&&Ke(e.multipleOfTimestamp)}function M1(e){return be(e,"Function")&&e.type==="Function"&&Le(e.$id)&&xt(e.parameters)&&e.parameters.every(t=>kt(t))&&kt(e.returns)}function $3(e){return be(e,"Import")&&Xu(e,"$defs")&&$e(e.$defs)&&nl(e.$defs)&&Xu(e,"$ref")&&ze(e.$ref)&&e.$ref in e.$defs}function O1(e){return be(e,"Integer")&&e.type==="integer"&&Le(e.$id)&&Ke(e.exclusiveMaximum)&&Ke(e.exclusiveMinimum)&&Ke(e.maximum)&&Ke(e.minimum)&&Ke(e.multipleOf)}function nl(e){return $e(e)&&Object.entries(e).every(([t,r])=>Dh(t)&&kt(r))}function R1(e){return be(e,"Intersect")&&!(ze(e.type)&&e.type!=="object")&&xt(e.allOf)&&e.allOf.every(t=>kt(t)&&!Y1(t))&&Le(e.type)&&(Vh(e.unevaluatedProperties)||y1(e.unevaluatedProperties))&&Le(e.$id)}function C1(e){return be(e,"Iterator")&&e.type==="Iterator"&&Le(e.$id)&&kt(e.items)}function be(e,t){return $e(e)&&k in e&&e[k]===t}function A1(e){return Hf(e)&&ze(e.const)}function P1(e){return Hf(e)&&Nr(e.const)}function L3(e){return Hf(e)&&Oo(e.const)}function Hf(e){return be(e,"Literal")&&Le(e.$id)&&k1(e.const)}function k1(e){return Oo(e)||Nr(e)||ze(e)}function N1(e){return be(e,"MappedKey")&&xt(e.keys)&&e.keys.every(t=>Nr(t)||ze(t))}function F1(e){return be(e,"MappedResult")&&nl(e.properties)}function E1(e){return be(e,"Never")&&$e(e.not)&&Object.getOwnPropertyNames(e.not).length===0}function $1(e){return be(e,"Not")&&kt(e.not)}function L1(e){return be(e,"Null")&&e.type==="null"&&Le(e.$id)}function D1(e){return be(e,"Number")&&e.type==="number"&&Le(e.$id)&&Ke(e.exclusiveMaximum)&&Ke(e.exclusiveMinimum)&&Ke(e.maximum)&&Ke(e.minimum)&&Ke(e.multipleOf)}function V1(e){return be(e,"Object")&&e.type==="object"&&Le(e.$id)&&nl(e.properties)&&h1(e.additionalProperties)&&Ke(e.minProperties)&&Ke(e.maxProperties)}function U1(e){return be(e,"Promise")&&e.type==="Promise"&&Le(e.$id)&&kt(e.item)}function j1(e){return be(e,"Record")&&e.type==="object"&&Le(e.$id)&&h1(e.additionalProperties)&&$e(e.patternProperties)&&(t=>{let r=Object.getOwnPropertyNames(t.patternProperties);return r.length===1&&d1(r[0])&&$e(t.patternProperties)&&kt(t.patternProperties[r[0]])})(e)}function D3(e){return $e(e)&&Wr in e&&e[Wr]==="Recursive"}function B1(e){return be(e,"Ref")&&Le(e.$id)&&ze(e.$ref)}function G1(e){return be(e,"RegExp")&&Le(e.$id)&&ze(e.source)&&ze(e.flags)&&Ke(e.maxLength)&&Ke(e.minLength)}function z1(e){return be(e,"String")&&e.type==="string"&&Le(e.$id)&&Ke(e.minLength)&&Ke(e.maxLength)&&k3(e.pattern)&&N3(e.format)}function K1(e){return be(e,"Symbol")&&e.type==="symbol"&&Le(e.$id)}function q1(e){return be(e,"TemplateLiteral")&&e.type==="string"&&ze(e.pattern)&&e.pattern[0]==="^"&&e.pattern[e.pattern.length-1]==="$"}function H1(e){return be(e,"This")&&Le(e.$id)&&ze(e.$ref)}function Y1(e){return $e(e)&&tt in e}function W1(e){return be(e,"Tuple")&&e.type==="array"&&Le(e.$id)&&Nr(e.minItems)&&Nr(e.maxItems)&&e.minItems===e.maxItems&&(gt(e.items)&>(e.additionalItems)&&e.minItems===0||xt(e.items)&&e.items.every(t=>kt(t)))}function X1(e){return be(e,"Undefined")&&e.type==="undefined"&&Le(e.$id)}function V3(e){return Uh(e)&&e.anyOf.every(t=>A1(t)||P1(t))}function Uh(e){return be(e,"Union")&&Le(e.$id)&&$e(e)&&xt(e.anyOf)&&e.anyOf.every(t=>kt(t))}function Z1(e){return be(e,"Uint8Array")&&e.type==="Uint8Array"&&Le(e.$id)&&Ke(e.minByteLength)&&Ke(e.maxByteLength)}function Q1(e){return be(e,"Unknown")&&Le(e.$id)}function J1(e){return be(e,"Unsafe")}function e2(e){return be(e,"Void")&&e.type==="void"&&Le(e.$id)}function t2(e){return $e(e)&&k in e&&ze(e[k])&&!P3.includes(e[k])}function kt(e){return $e(e)&&(x1(e)||g1(e)||b1(e)||I1(e)||S1(e)||w1(e)||_1(e)||v1(e)||T1(e)||M1(e)||O1(e)||R1(e)||C1(e)||Hf(e)||N1(e)||F1(e)||E1(e)||$1(e)||L1(e)||D1(e)||V1(e)||U1(e)||j1(e)||B1(e)||G1(e)||z1(e)||K1(e)||q1(e)||H1(e)||W1(e)||X1(e)||Uh(e)||Z1(e)||Q1(e)||J1(e)||e2(e)||t2(e))}var jh="(true|false)",Yf="(0|[1-9][0-9]*)",Bh="(.*)",U3="(?!.*)",QU=`^${jh}$`,gi=`^${Yf}$`,bi=`^${Bh}$`,r2=`^${U3}$`;var wi={};oa(wi,{Clear:()=>B3,Delete:()=>G3,Entries:()=>j3,Get:()=>q3,Has:()=>z3,Set:()=>K3});var is=new Map;function j3(){return new Map(is)}function B3(){return is.clear()}function G3(e){return is.delete(e)}function z3(e){return is.has(e)}function K3(e,t){is.set(e,t)}function q3(e){return is.get(e)}var Tn={};oa(Tn,{Clear:()=>Y3,Delete:()=>W3,Entries:()=>H3,Get:()=>Q3,Has:()=>X3,Set:()=>Z3});var as=new Map;function H3(){return new Map(as)}function Y3(){return as.clear()}function W3(e){return as.delete(e)}function X3(e){return as.has(e)}function Z3(e,t){as.set(e,t)}function Q3(e){return as.get(e)}function n2(e,t){return e.includes(t)}function o2(e){return[...new Set(e)]}function J3(e,t){return e.filter(r=>t.includes(r))}function e5(e,t){return e.reduce((r,n)=>J3(r,n),t)}function i2(e){return e.length===1?e[0]:e.length>1?e5(e.slice(1),e[0]):[]}function a2(e){let t=[];for(let r of e)t.push(...r);return t}function Si(e){return P({[k]:"Any"},e)}function ss(e,t){return P({[k]:"Array",type:"array",items:e},t)}function s2(e){return P({[k]:"Argument",index:e})}function fs(e,t){return P({[k]:"AsyncIterator",type:"AsyncIterator",items:e},t)}function He(e,t,r){return P({[k]:"Computed",target:e,parameters:t},r)}function t5(e,t){let{[t]:r,...n}=e;return n}function ft(e,t){return t.reduce((r,n)=>t5(r,n),e)}function ge(e){return P({[k]:"Never",not:{}},e)}function Te(e){return P({[k]:"MappedResult",properties:e})}function cs(e,t,r){return P({[k]:"Constructor",type:"Constructor",parameters:e,returns:t},r)}function Wn(e,t,r){return P({[k]:"Function",type:"Function",parameters:e,returns:t},r)}function Wf(e,t){return P({[k]:"Union",anyOf:e},t)}function r5(e){return e.some(t=>br(t))}function f2(e){return e.map(t=>br(t)?n5(t):t)}function n5(e){return ft(e,[Ht])}function o5(e,t){return r5(e)?rr(Wf(f2(e),t)):Wf(f2(e),t)}function Xn(e,t){return e.length===1?P(e[0],t):e.length===0?ge(t):o5(e,t)}function Ce(e,t){return e.length===0?ge(t):e.length===1?P(e[0],t):Wf(e,t)}var ol=class extends ce{};function i5(e){return e.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function Gh(e,t,r){return e[t]===r&&e.charCodeAt(t-1)!==92}function Eo(e,t){return Gh(e,t,"(")}function Xf(e,t){return Gh(e,t,")")}function c2(e,t){return Gh(e,t,"|")}function a5(e){if(!(Eo(e,0)&&Xf(e,e.length-1)))return!1;let t=0;for(let r=0;r0&&n.push(us(a)),r=i+1}let o=e.slice(r);return o.length>0&&n.push(us(o)),n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"or",expr:n}}function l5(e){function t(o,i){if(!Eo(o,i))throw new ol("TemplateLiteralParser: Index must point to open parens");let a=0;for(let s=i;s0&&n.push(us(s)),o=a-1}return n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"and",expr:n}}function us(e){return a5(e)?us(s5(e)):f5(e)?u5(e):c5(e)?l5(e):{type:"const",const:i5(e)}}function ls(e){return us(e.slice(1,e.length-1))}var zh=class extends ce{};function p5(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="0"&&e.expr[1].type==="const"&&e.expr[1].const==="[1-9][0-9]*"}function m5(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="true"&&e.expr[1].type==="const"&&e.expr[1].const==="false"}function d5(e){return e.type==="const"&&e.const===".*"}function la(e){return p5(e)||d5(e)?!1:m5(e)?!0:e.type==="and"?e.expr.every(t=>la(t)):e.type==="or"?e.expr.every(t=>la(t)):e.type==="const"?!0:(()=>{throw new zh("Unknown expression type")})()}function il(e){let t=ls(e.pattern);return la(t)}var Kh=class extends ce{};function*u2(e){if(e.length===1)return yield*e[0];for(let t of e[0])for(let r of u2(e.slice(1)))yield`${t}${r}`}function*h5(e){return yield*u2(e.expr.map(t=>[...Zf(t)]))}function*y5(e){for(let t of e.expr)yield*Zf(t)}function*x5(e){return yield e.const}function*Zf(e){return e.type==="and"?yield*h5(e):e.type==="or"?yield*y5(e):e.type==="const"?yield*x5(e):(()=>{throw new Kh("Unknown expression")})()}function ps(e){let t=ls(e.pattern);return la(t)?[...Zf(t)]:[]}function _e(e,t){return P({[k]:"Literal",const:e,type:typeof e},t)}function al(e){return P({[k]:"Boolean",type:"boolean"},e)}function ms(e){return P({[k]:"BigInt",type:"bigint"},e)}function Xr(e){return P({[k]:"Number",type:"number"},e)}function lr(e){return P({[k]:"String",type:"string"},e)}function*g5(e){let t=e.trim().replace(/"|'/g,"");return t==="boolean"?yield al():t==="number"?yield Xr():t==="bigint"?yield ms():t==="string"?yield lr():yield(()=>{let r=t.split("|").map(n=>_e(n.trim()));return r.length===0?ge():r.length===1?r[0]:Xn(r)})()}function*b5(e){if(e[1]!=="{"){let t=_e("$"),r=qh(e.slice(1));return yield*[t,...r]}for(let t=2;tp2(r,t)).join("|")})`:vn(e)?`${t}${Yf}`:_n(e)?`${t}${Yf}`:sa(e)?`${t}${Yf}`:ko(e)?`${t}${Bh}`:Er(e)?`${t}${w5(e.const.toString())}`:Po(e)?`${t}${jh}`:(()=>{throw new Hh(`Unexpected Kind '${e[k]}'`)})()}function Yh(e){return`^${e.map(t=>p2(t,"")).join("")}$`}function pa(e){let r=ps(e).map(n=>_e(n));return Xn(r)}function sl(e,t){let r=ze(e)?Yh(l2(e)):Yh(e);return P({[k]:"TemplateLiteral",type:"string",pattern:r},t)}function S5(e){return ps(e).map(r=>r.toString())}function I5(e){let t=[];for(let r of e)t.push(...wr(r));return t}function _5(e){return[e.toString()]}function wr(e){return[...new Set(Lr(e)?S5(e):ve(e)?I5(e.anyOf):Er(e)?_5(e.const):vn(e)?["[number]"]:_n(e)?["[number]"]:[])]}function v5(e,t,r){let n={};for(let o of Object.getOwnPropertyNames(t))n[o]=Ii(e,wr(t[o]),r);return n}function T5(e,t,r){return v5(e,t.properties,r)}function m2(e,t,r){let n=T5(e,t,r);return Te(n)}function h2(e,t){return e.map(r=>y2(r,t))}function M5(e){return e.filter(t=>!yi(t))}function O5(e,t){return fl(M5(h2(e,t)))}function R5(e){return e.some(t=>yi(t))?[]:e}function C5(e,t){return Xn(R5(h2(e,t)))}function A5(e,t){return t in e?e[t]:t==="[number]"?Xn(e):ge()}function P5(e,t){return t==="[number]"?e:ge()}function k5(e,t){return t in e?e[t]:ge()}function y2(e,t){return st(e)?O5(e.allOf,t):ve(e)?C5(e.anyOf,t):Dr(e)?A5(e.items??[],t):bn(e)?P5(e.items,t):bt(e)?k5(e.properties,t):ge()}function Qf(e,t){return t.map(r=>y2(e,r))}function d2(e,t){return Xn(Qf(e,t))}function Ii(e,t,r){if(lt(e)||lt(t)){let n="Index types using Ref parameters require both Type and Key to be of TSchema";if(!rt(e)||!rt(t))throw new ce(n);return He("Index",[e,t])}return Je(t)?m2(e,t,r):$r(t)?x2(e,t,r):P(rt(t)?d2(e,wr(t)):d2(e,t),r)}function N5(e,t,r){return{[t]:Ii(e,[t],Xe(r))}}function F5(e,t,r){return t.reduce((n,o)=>({...n,...N5(e,o,r)}),{})}function E5(e,t,r){return F5(e,t.keys,r)}function x2(e,t,r){let n=E5(e,t,r);return Te(n)}function ds(e,t){return P({[k]:"Iterator",type:"Iterator",items:e},t)}function $5(e){return globalThis.Object.keys(e).filter(t=>!br(e[t]))}function L5(e,t){let r=$5(e),n=r.length>0?{[k]:"Object",type:"object",required:r,properties:e}:{[k]:"Object",type:"object",properties:e};return P(n,t)}var Ae=L5;function cl(e,t){return P({[k]:"Promise",type:"Promise",item:e},t)}function D5(e){return P(ft(e,[gn]))}function V5(e){return P({...e,[gn]:"Readonly"})}function U5(e,t){return t===!1?D5(e):V5(e)}function Sr(e,t){let r=t??!0;return Je(e)?g2(e,r):U5(e,r)}function j5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Sr(e[n],t);return r}function B5(e,t){return j5(e.properties,t)}function g2(e,t){let r=B5(e,t);return Te(r)}function Zr(e,t){return P(e.length>0?{[k]:"Tuple",type:"array",items:e,additionalItems:!1,minItems:e.length,maxItems:e.length}:{[k]:"Tuple",type:"array",minItems:e.length,maxItems:e.length},t)}function b2(e,t){return e in t?Qr(e,t[e]):Te(t)}function G5(e){return{[e]:_e(e)}}function z5(e){let t={};for(let r of e)t[r]=_e(r);return t}function K5(e,t){return n2(t,e)?G5(e):z5(t)}function q5(e,t){let r=K5(e,t);return b2(e,r)}function Jf(e,t){return t.map(r=>Qr(e,r))}function H5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(t))r[n]=Qr(e,t[n]);return r}function Qr(e,t){let r={...t};return br(t)?rr(Qr(e,ft(t,[Ht]))):os(t)?Sr(Qr(e,ft(t,[gn]))):Je(t)?b2(e,t.properties):$r(t)?q5(e,t.keys):Sn(t)?cs(Jf(e,t.parameters),Qr(e,t.returns),r):In(t)?Wn(Jf(e,t.parameters),Qr(e,t.returns),r):aa(t)?fs(Qr(e,t.items),r):fa(t)?ds(Qr(e,t.items),r):st(t)?nr(Jf(e,t.allOf),r):ve(t)?Ce(Jf(e,t.anyOf),r):Dr(t)?Zr(Jf(e,t.items??[]),r):bt(t)?Ae(H5(e,t.properties),r):bn(t)?ss(Qr(e,t.items),r):ca(t)?cl(Qr(e,t.item),r):t}function Y5(e,t){let r={};for(let n of e)r[n]=Qr(n,t);return r}function w2(e,t,r){let n=rt(e)?wr(e):e,o=t({[k]:"MappedKey",keys:n}),i=Y5(n,o);return Ae(i,r)}function W5(e){return P(ft(e,[Ht]))}function X5(e){return P({...e,[Ht]:"Optional"})}function Z5(e,t){return t===!1?W5(e):X5(e)}function rr(e,t){let r=t??!0;return Je(e)?S2(e,r):Z5(e,r)}function Q5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=rr(e[n],t);return r}function J5(e,t){return Q5(e.properties,t)}function S2(e,t){let r=J5(e,t);return Te(r)}function ec(e,t={}){let r=e.every(o=>bt(o)),n=rt(t.unevaluatedProperties)?{unevaluatedProperties:t.unevaluatedProperties}:{};return P(t.unevaluatedProperties===!1||rt(t.unevaluatedProperties)||r?{...n,[k]:"Intersect",type:"object",allOf:e}:{...n,[k]:"Intersect",allOf:e},t)}function eO(e){return e.every(t=>br(t))}function tO(e){return ft(e,[Ht])}function I2(e){return e.map(t=>br(t)?tO(t):t)}function rO(e,t){return eO(e)?rr(ec(I2(e),t)):ec(I2(e),t)}function fl(e,t={}){if(e.length===1)return P(e[0],t);if(e.length===0)return ge(t);if(e.some(r=>Re(r)))throw new Error("Cannot intersect transform types");return rO(e,t)}function nr(e,t){if(e.length===1)return P(e[0],t);if(e.length===0)return ge(t);if(e.some(r=>Re(r)))throw new Error("Cannot intersect transform types");return ec(e,t)}function Zn(...e){let[t,r]=typeof e[0]=="string"?[e[0],e[1]]:[e[0].$id,e[1]];if(typeof t!="string")throw new ce("Ref: $ref must be a string");return P({[k]:"Ref",$ref:t},r)}function nO(e,t){return He("Awaited",[He(e,t)])}function oO(e){return He("Awaited",[Zn(e)])}function iO(e){return nr(_2(e))}function aO(e){return Ce(_2(e))}function sO(e){return hs(e)}function _2(e){return e.map(t=>hs(t))}function hs(e,t){return P(wn(e)?nO(e.target,e.parameters):st(e)?iO(e.allOf):ve(e)?aO(e.anyOf):ca(e)?sO(e.item):lt(e)?oO(e.$ref):e,t)}function v2(e){let t=[];for(let r of e)t.push(Ir(r));return t}function fO(e){let t=v2(e);return a2(t)}function cO(e){let t=v2(e);return i2(t)}function uO(e){return e.map((t,r)=>r.toString())}function lO(e){return["[number]"]}function pO(e){return globalThis.Object.getOwnPropertyNames(e)}function mO(e){return Wh?globalThis.Object.getOwnPropertyNames(e).map(r=>r[0]==="^"&&r[r.length-1]==="$"?r.slice(1,r.length-1):r):[]}function Ir(e){return st(e)?fO(e.allOf):ve(e)?cO(e.anyOf):Dr(e)?uO(e.items??[]):bn(e)?lO(e.items):bt(e)?pO(e.properties):ua(e)?mO(e.patternProperties):[]}var Wh=!1;function ys(e){Wh=!0;let t=Ir(e);return Wh=!1,`^(${t.map(n=>`(${n})`).join("|")})$`}function dO(e,t){return He("KeyOf",[He(e,t)])}function hO(e){return He("KeyOf",[Zn(e)])}function yO(e,t){let r=Ir(e),n=xO(r),o=Xn(n);return P(o,t)}function xO(e){return e.map(t=>t==="[number]"?Xr():_e(t))}function xs(e,t){return wn(e)?dO(e.target,e.parameters):lt(e)?hO(e.$ref):Je(e)?T2(e,t):yO(e,t)}function gO(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=xs(e[n],Xe(t));return r}function bO(e,t){return gO(e.properties,t)}function T2(e,t){let r=bO(e,t);return Te(r)}function ul(e){let t=Ir(e),r=Qf(e,t);return t.map((n,o)=>[t[o],r[o]])}function wO(e){let t=[];for(let r of e)t.push(...Ir(r));return o2(t)}function SO(e){return e.filter(t=>!yi(t))}function IO(e,t){let r=[];for(let n of e)r.push(...Qf(n,[t]));return SO(r)}function _O(e,t){let r={};for(let n of t)r[n]=fl(IO(e,n));return r}function M2(e,t){let r=wO(e),n=_O(e,r);return Ae(n,t)}function ll(e){return P({[k]:"Date",type:"Date"},e)}function pl(e){return P({[k]:"Null",type:"null"},e)}function ml(e){return P({[k]:"Symbol",type:"symbol"},e)}function dl(e){return P({[k]:"Undefined",type:"undefined"},e)}function hl(e){return P({[k]:"Uint8Array",type:"Uint8Array"},e)}function Mn(e){return P({[k]:"Unknown"},e)}function vO(e){return e.map(t=>Xh(t,!1))}function TO(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=Sr(Xh(e[r],!1));return t}function yl(e,t){return t===!0?e:Sr(e)}function Xh(e,t){return Rh(e)?yl(Si(),t):Ah(e)?yl(Si(),t):xt(e)?Sr(Zr(vO(e))):Ro(e)?hl():ia(e)?ll():$e(e)?yl(Ae(TO(e)),t):Ch(e)?yl(Wn([],Mn()),t):gt(e)?dl():Ph(e)?pl():kh(e)?ml():jf(e)?ms():Nr(e)?_e(e):Oo(e)?_e(e):ze(e)?_e(e):Ae({})}function O2(e,t){return P(Xh(e,!0),t)}function R2(e,t){return Sn(e)?Zr(e.parameters,t):ge(t)}function C2(e,t){if(gt(e))throw new Error("Enum undefined or empty");let r=globalThis.Object.getOwnPropertyNames(e).filter(i=>isNaN(i)).map(i=>e[i]),o=[...new Set(r)].map(i=>_e(i));return Ce(o,{...t,[Wr]:"Enum"})}var Qh=class extends ce{},N;(function(e){e[e.Union=0]="Union",e[e.True=1]="True",e[e.False=2]="False"})(N||(N={}));function Jr(e){return e===N.False?e:N.True}function gs(e){throw new Qh(e)}function _t(e){return _.IsNever(e)||_.IsIntersect(e)||_.IsUnion(e)||_.IsUnknown(e)||_.IsAny(e)}function vt(e,t){return _.IsNever(t)?$2(e,t):_.IsIntersect(t)?xl(e,t):_.IsUnion(t)?r0(e,t):_.IsUnknown(t)?U2(e,t):_.IsAny(t)?t0(e,t):gs("StructuralRight")}function t0(e,t){return N.True}function MO(e,t){return _.IsIntersect(t)?xl(e,t):_.IsUnion(t)&&t.anyOf.some(r=>_.IsAny(r)||_.IsUnknown(r))?N.True:_.IsUnion(t)?N.Union:_.IsUnknown(t)||_.IsAny(t)?N.True:N.Union}function OO(e,t){return _.IsUnknown(e)?N.False:_.IsAny(e)?N.Union:_.IsNever(e)?N.True:N.False}function RO(e,t){return _.IsObject(t)&&gl(t)?N.True:_t(t)?vt(e,t):_.IsArray(t)?Jr(De(e.items,t.items)):N.False}function CO(e,t){return _t(t)?vt(e,t):_.IsAsyncIterator(t)?Jr(De(e.items,t.items)):N.False}function AO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsBigInt(t)?N.True:N.False}function F2(e,t){return _.IsLiteralBoolean(e)||_.IsBoolean(e)?N.True:N.False}function PO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsBoolean(t)?N.True:N.False}function kO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsConstructor(t)?e.parameters.length>t.parameters.length?N.False:e.parameters.every((r,n)=>Jr(De(t.parameters[n],r))===N.True)?Jr(De(e.returns,t.returns)):N.False:N.False}function NO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsDate(t)?N.True:N.False}function FO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsFunction(t)?e.parameters.length>t.parameters.length?N.False:e.parameters.every((r,n)=>Jr(De(t.parameters[n],r))===N.True)?Jr(De(e.returns,t.returns)):N.False:N.False}function E2(e,t){return _.IsLiteral(e)&&tr.IsNumber(e.const)||_.IsNumber(e)||_.IsInteger(e)?N.True:N.False}function EO(e,t){return _.IsInteger(t)||_.IsNumber(t)?N.True:_t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):N.False}function xl(e,t){return t.allOf.every(r=>De(e,r)===N.True)?N.True:N.False}function $O(e,t){return e.allOf.some(r=>De(r,t)===N.True)?N.True:N.False}function LO(e,t){return _t(t)?vt(e,t):_.IsIterator(t)?Jr(De(e.items,t.items)):N.False}function DO(e,t){return _.IsLiteral(t)&&t.const===e.const?N.True:_t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsString(t)?V2(e,t):_.IsNumber(t)?L2(e,t):_.IsInteger(t)?E2(e,t):_.IsBoolean(t)?F2(e,t):N.False}function $2(e,t){return N.False}function VO(e,t){return N.True}function A2(e){let[t,r]=[e,0];for(;_.IsNot(t);)t=t.not,r+=1;return r%2===0?t:Mn()}function UO(e,t){return _.IsNot(e)?De(A2(e),t):_.IsNot(t)?De(e,A2(t)):gs("Invalid fallthrough for Not")}function jO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsNull(t)?N.True:N.False}function L2(e,t){return _.IsLiteralNumber(e)||_.IsNumber(e)||_.IsInteger(e)?N.True:N.False}function BO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsInteger(t)||_.IsNumber(t)?N.True:N.False}function _r(e,t){return Object.getOwnPropertyNames(e.properties).length===t}function P2(e){return gl(e)}function k2(e){return _r(e,0)||_r(e,1)&&"description"in e.properties&&_.IsUnion(e.properties.description)&&e.properties.description.anyOf.length===2&&(_.IsString(e.properties.description.anyOf[0])&&_.IsUndefined(e.properties.description.anyOf[1])||_.IsString(e.properties.description.anyOf[1])&&_.IsUndefined(e.properties.description.anyOf[0]))}function Zh(e){return _r(e,0)}function N2(e){return _r(e,0)}function GO(e){return _r(e,0)}function zO(e){return _r(e,0)}function KO(e){return gl(e)}function qO(e){let t=Xr();return _r(e,0)||_r(e,1)&&"length"in e.properties&&Jr(De(e.properties.length,t))===N.True}function HO(e){return _r(e,0)}function gl(e){let t=Xr();return _r(e,0)||_r(e,1)&&"length"in e.properties&&Jr(De(e.properties.length,t))===N.True}function YO(e){let t=Wn([Si()],Si());return _r(e,0)||_r(e,1)&&"then"in e.properties&&Jr(De(e.properties.then,t))===N.True}function D2(e,t){return De(e,t)===N.False||_.IsOptional(e)&&!_.IsOptional(t)?N.False:N.True}function or(e,t){return _.IsUnknown(e)?N.False:_.IsAny(e)?N.Union:_.IsNever(e)||_.IsLiteralString(e)&&P2(t)||_.IsLiteralNumber(e)&&Zh(t)||_.IsLiteralBoolean(e)&&N2(t)||_.IsSymbol(e)&&k2(t)||_.IsBigInt(e)&&GO(t)||_.IsString(e)&&P2(t)||_.IsSymbol(e)&&k2(t)||_.IsNumber(e)&&Zh(t)||_.IsInteger(e)&&Zh(t)||_.IsBoolean(e)&&N2(t)||_.IsUint8Array(e)&&KO(t)||_.IsDate(e)&&zO(t)||_.IsConstructor(e)&&HO(t)||_.IsFunction(e)&&qO(t)?N.True:_.IsRecord(e)&&_.IsString(Jh(e))?t[Wr]==="Record"?N.True:N.False:_.IsRecord(e)&&_.IsNumber(Jh(e))?_r(t,0)?N.True:N.False:N.False}function WO(e,t){return _t(t)?vt(e,t):_.IsRecord(t)?en(e,t):_.IsObject(t)?(()=>{for(let r of Object.getOwnPropertyNames(t.properties)){if(!(r in e.properties)&&!_.IsOptional(t.properties[r]))return N.False;if(_.IsOptional(t.properties[r]))return N.True;if(D2(e.properties[r],t.properties[r])===N.False)return N.False}return N.True})():N.False}function XO(e,t){return _t(t)?vt(e,t):_.IsObject(t)&&YO(t)?N.True:_.IsPromise(t)?Jr(De(e.item,t.item)):N.False}function Jh(e){return gi in e.patternProperties?Xr():bi in e.patternProperties?lr():gs("Unknown record key pattern")}function e0(e){return gi in e.patternProperties?e.patternProperties[gi]:bi in e.patternProperties?e.patternProperties[bi]:gs("Unable to get record value schema")}function en(e,t){let[r,n]=[Jh(t),e0(t)];return _.IsLiteralString(e)&&_.IsNumber(r)&&Jr(De(e,n))===N.True?N.True:_.IsUint8Array(e)&&_.IsNumber(r)||_.IsString(e)&&_.IsNumber(r)||_.IsArray(e)&&_.IsNumber(r)?De(e,n):_.IsObject(e)?(()=>{for(let o of Object.getOwnPropertyNames(e.properties))if(D2(n,e.properties[o])===N.False)return N.False;return N.True})():N.False}function ZO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?De(e0(e),e0(t)):N.False}function QO(e,t){let r=_.IsRegExp(e)?lr():e,n=_.IsRegExp(t)?lr():t;return De(r,n)}function V2(e,t){return _.IsLiteral(e)&&tr.IsString(e.const)||_.IsString(e)?N.True:N.False}function JO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsString(t)?N.True:N.False}function e4(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsSymbol(t)?N.True:N.False}function t4(e,t){return _.IsTemplateLiteral(e)?De(pa(e),t):_.IsTemplateLiteral(t)?De(e,pa(t)):gs("Invalid fallthrough for TemplateLiteral")}function r4(e,t){return _.IsArray(t)&&e.items!==void 0&&e.items.every(r=>De(r,t.items)===N.True)}function n4(e,t){return _.IsNever(e)?N.True:_.IsUnknown(e)?N.False:_.IsAny(e)?N.Union:N.False}function o4(e,t){return _t(t)?vt(e,t):_.IsObject(t)&&gl(t)||_.IsArray(t)&&r4(e,t)?N.True:_.IsTuple(t)?tr.IsUndefined(e.items)&&!tr.IsUndefined(t.items)||!tr.IsUndefined(e.items)&&tr.IsUndefined(t.items)?N.False:tr.IsUndefined(e.items)&&!tr.IsUndefined(t.items)||e.items.every((r,n)=>De(r,t.items[n])===N.True)?N.True:N.False:N.False}function i4(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsUint8Array(t)?N.True:N.False}function a4(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsVoid(t)?c4(e,t):_.IsUndefined(t)?N.True:N.False}function r0(e,t){return t.anyOf.some(r=>De(e,r)===N.True)?N.True:N.False}function s4(e,t){return e.anyOf.every(r=>De(r,t)===N.True)?N.True:N.False}function U2(e,t){return N.True}function f4(e,t){return _.IsNever(t)?$2(e,t):_.IsIntersect(t)?xl(e,t):_.IsUnion(t)?r0(e,t):_.IsAny(t)?t0(e,t):_.IsString(t)?V2(e,t):_.IsNumber(t)?L2(e,t):_.IsInteger(t)?E2(e,t):_.IsBoolean(t)?F2(e,t):_.IsArray(t)?OO(e,t):_.IsTuple(t)?n4(e,t):_.IsObject(t)?or(e,t):_.IsUnknown(t)?N.True:N.False}function c4(e,t){return _.IsUndefined(e)||_.IsUndefined(e)?N.True:N.False}function u4(e,t){return _.IsIntersect(t)?xl(e,t):_.IsUnion(t)?r0(e,t):_.IsUnknown(t)?U2(e,t):_.IsAny(t)?t0(e,t):_.IsObject(t)?or(e,t):_.IsVoid(t)?N.True:N.False}function De(e,t){return _.IsTemplateLiteral(e)||_.IsTemplateLiteral(t)?t4(e,t):_.IsRegExp(e)||_.IsRegExp(t)?QO(e,t):_.IsNot(e)||_.IsNot(t)?UO(e,t):_.IsAny(e)?MO(e,t):_.IsArray(e)?RO(e,t):_.IsBigInt(e)?AO(e,t):_.IsBoolean(e)?PO(e,t):_.IsAsyncIterator(e)?CO(e,t):_.IsConstructor(e)?kO(e,t):_.IsDate(e)?NO(e,t):_.IsFunction(e)?FO(e,t):_.IsInteger(e)?EO(e,t):_.IsIntersect(e)?$O(e,t):_.IsIterator(e)?LO(e,t):_.IsLiteral(e)?DO(e,t):_.IsNever(e)?VO(e,t):_.IsNull(e)?jO(e,t):_.IsNumber(e)?BO(e,t):_.IsObject(e)?WO(e,t):_.IsRecord(e)?ZO(e,t):_.IsString(e)?JO(e,t):_.IsSymbol(e)?e4(e,t):_.IsTuple(e)?o4(e,t):_.IsPromise(e)?XO(e,t):_.IsUint8Array(e)?i4(e,t):_.IsUndefined(e)?a4(e,t):_.IsUnion(e)?s4(e,t):_.IsUnknown(e)?f4(e,t):_.IsVoid(e)?u4(e,t):gs(`Unknown left type operand '${e[k]}'`)}function _i(e,t){return De(e,t)}function l4(e,t,r,n,o){let i={};for(let a of globalThis.Object.getOwnPropertyNames(e))i[a]=bs(e[a],t,r,n,Xe(o));return i}function p4(e,t,r,n,o){return l4(e.properties,t,r,n,o)}function j2(e,t,r,n,o){let i=p4(e,t,r,n,o);return Te(i)}function m4(e,t,r,n){let o=_i(e,t);return o===N.Union?Ce([r,n]):o===N.True?r:n}function bs(e,t,r,n,o){return Je(e)?j2(e,t,r,n,o):$r(e)?P(B2(e,t,r,n,o)):P(m4(e,t,r,n),o)}function d4(e,t,r,n,o){return{[e]:bs(_e(e),t,r,n,Xe(o))}}function h4(e,t,r,n,o){return e.reduce((i,a)=>({...i,...d4(a,t,r,n,o)}),{})}function y4(e,t,r,n,o){return h4(e.keys,t,r,n,o)}function B2(e,t,r,n,o){let i=y4(e,t,r,n,o);return Te(i)}function x4(e){return e.allOf.every(t=>ma(t))}function g4(e){return e.anyOf.some(t=>ma(t))}function b4(e){return!ma(e.not)}function ma(e){return e[k]==="Intersect"?x4(e):e[k]==="Union"?g4(e):e[k]==="Not"?b4(e):e[k]==="Undefined"}function G2(e,t){return ws(pa(e),t)}function w4(e,t){let r=e.filter(n=>_i(n,t)===N.False);return r.length===1?r[0]:Ce(r)}function ws(e,t,r={}){return Lr(e)?P(G2(e,t),r):Je(e)?P(z2(e,t),r):P(ve(e)?w4(e.anyOf,t):_i(e,t)!==N.False?ge():e,r)}function S4(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=ws(e[n],t);return r}function I4(e,t){return S4(e.properties,t)}function z2(e,t){let r=I4(e,t);return Te(r)}function K2(e,t){return Ss(pa(e),t)}function _4(e,t){let r=e.filter(n=>_i(n,t)!==N.False);return r.length===1?r[0]:Ce(r)}function Ss(e,t,r){return Lr(e)?P(K2(e,t),r):Je(e)?P(q2(e,t),r):P(ve(e)?_4(e.anyOf,t):_i(e,t)!==N.False?e:ge(),r)}function v4(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Ss(e[n],t);return r}function T4(e,t){return v4(e.properties,t)}function q2(e,t){let r=T4(e,t);return Te(r)}function H2(e,t){return Sn(e)?P(e.returns,t):ge(t)}function bl(e){return Sr(rr(e))}function da(e,t,r){return P({[k]:"Record",type:"object",patternProperties:{[e]:t}},r)}function n0(e,t,r){let n={};for(let o of e)n[o]=t;return Ae(n,{...r,[Wr]:"Record"})}function M4(e,t,r){return il(e)?n0(wr(e),t,r):da(e.pattern,t,r)}function O4(e,t,r){return n0(wr(Ce(e)),t,r)}function R4(e,t,r){return n0([e.toString()],t,r)}function C4(e,t,r){return da(e.source,t,r)}function A4(e,t,r){let n=gt(e.pattern)?bi:e.pattern;return da(n,t,r)}function P4(e,t,r){return da(bi,t,r)}function k4(e,t,r){return da(r2,t,r)}function N4(e,t,r){return Ae({true:t,false:t},r)}function F4(e,t,r){return da(gi,t,r)}function E4(e,t,r){return da(gi,t,r)}function wl(e,t,r={}){return ve(e)?O4(e.anyOf,t,r):Lr(e)?M4(e,t,r):Er(e)?R4(e.const,t,r):Po(e)?N4(e,t,r):_n(e)?F4(e,t,r):vn(e)?E4(e,t,r):$h(e)?C4(e,t,r):ko(e)?A4(e,t,r):Fh(e)?P4(e,t,r):yi(e)?k4(e,t,r):ge(r)}function Sl(e){return globalThis.Object.getOwnPropertyNames(e.patternProperties)[0]}function Y2(e){let t=Sl(e);return t===bi?lr():t===gi?Xr():lr({pattern:t})}function Il(e){return e.patternProperties[Sl(e)]}function $4(e,t){return t.parameters=tc(e,t.parameters),t.returns=On(e,t.returns),t}function L4(e,t){return t.parameters=tc(e,t.parameters),t.returns=On(e,t.returns),t}function D4(e,t){return t.allOf=tc(e,t.allOf),t}function V4(e,t){return t.anyOf=tc(e,t.anyOf),t}function U4(e,t){return gt(t.items)||(t.items=tc(e,t.items)),t}function j4(e,t){return t.items=On(e,t.items),t}function B4(e,t){return t.items=On(e,t.items),t}function G4(e,t){return t.items=On(e,t.items),t}function z4(e,t){return t.item=On(e,t.item),t}function K4(e,t){let r=W4(e,t.properties);return{...t,...Ae(r)}}function q4(e,t){let r=On(e,Y2(t)),n=On(e,Il(t)),o=wl(r,n);return{...t,...o}}function H4(e,t){return t.index in e?e[t.index]:Mn()}function Y4(e,t){let r=os(t),n=br(t),o=On(e,t);return r&&n?bl(o):r&&!n?Sr(o):!r&&n?rr(o):o}function W4(e,t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:Y4(e,t[n])}),{})}function tc(e,t){return t.map(r=>On(e,r))}function On(e,t){return Sn(t)?$4(e,t):In(t)?L4(e,t):st(t)?D4(e,t):ve(t)?V4(e,t):Dr(t)?U4(e,t):bn(t)?j4(e,t):aa(t)?B4(e,t):fa(t)?G4(e,t):ca(t)?z4(e,t):bt(t)?K4(e,t):ua(t)?q4(e,t):Eh(t)?H4(e,t):t}function W2(e,t){return On(t,rs(e))}function X2(e){return P({[k]:"Integer",type:"integer"},e)}function X4(e,t,r){return{[e]:Rn(_e(e),t,Xe(r))}}function Z4(e,t,r){return e.reduce((o,i)=>({...o,...X4(i,t,r)}),{})}function Q4(e,t,r){return Z4(e.keys,t,r)}function Z2(e,t,r){let n=Q4(e,t,r);return Te(n)}function J4(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toLowerCase(),r].join("")}function eR(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toUpperCase(),r].join("")}function tR(e){return e.toUpperCase()}function rR(e){return e.toLowerCase()}function nR(e,t,r){let n=ls(e.pattern);if(!la(n))return{...e,pattern:Q2(e.pattern,t)};let a=[...Zf(n)].map(u=>_e(u)),s=J2(a,t),f=Ce(s);return sl([f],r)}function Q2(e,t){return typeof e=="string"?t==="Uncapitalize"?J4(e):t==="Capitalize"?eR(e):t==="Uppercase"?tR(e):t==="Lowercase"?rR(e):e:e.toString()}function J2(e,t){return e.map(r=>Rn(r,t))}function Rn(e,t,r={}){return $r(e)?Z2(e,t,r):Lr(e)?nR(e,t,r):ve(e)?Ce(J2(e.anyOf,t),r):Er(e)?_e(Q2(e.const,t),r):P(e,r)}function ew(e,t={}){return Rn(e,"Capitalize",t)}function tw(e,t={}){return Rn(e,"Lowercase",t)}function rw(e,t={}){return Rn(e,"Uncapitalize",t)}function nw(e,t={}){return Rn(e,"Uppercase",t)}function oR(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=vi(e[o],t,Xe(r));return n}function iR(e,t,r){return oR(e.properties,t,r)}function ow(e,t,r){let n=iR(e,t,r);return Te(n)}function aR(e,t){return e.map(r=>o0(r,t))}function sR(e,t){return e.map(r=>o0(r,t))}function fR(e,t){let{[t]:r,...n}=e;return n}function cR(e,t){return t.reduce((r,n)=>fR(r,n),e)}function uR(e,t,r){let n=ft(e,[tt,"$id","required","properties"]),o=cR(r,t);return Ae(o,n)}function lR(e){let t=e.reduce((r,n)=>rl(n)?[...r,_e(n)]:r,[]);return Ce(t)}function o0(e,t){return st(e)?nr(aR(e.allOf,t)):ve(e)?Ce(sR(e.anyOf,t)):bt(e)?uR(e,t,e.properties):Ae({})}function vi(e,t,r){let n=xt(t)?lR(t):t,o=rt(t)?wr(t):t,i=lt(e),a=lt(t);return Je(e)?ow(e,o,r):$r(t)?iw(e,t,r):i&&a?He("Omit",[e,n],r):!i&&a?He("Omit",[e,n],r):i&&!a?He("Omit",[e,n],r):P({...o0(e,o),...r})}function pR(e,t,r){return{[t]:vi(e,[t],Xe(r))}}function mR(e,t,r){return t.reduce((n,o)=>({...n,...pR(e,o,r)}),{})}function dR(e,t,r){return mR(e,t.keys,r)}function iw(e,t,r){let n=dR(e,t,r);return Te(n)}function hR(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=Ti(e[o],t,Xe(r));return n}function yR(e,t,r){return hR(e.properties,t,r)}function aw(e,t,r){let n=yR(e,t,r);return Te(n)}function xR(e,t){return e.map(r=>i0(r,t))}function gR(e,t){return e.map(r=>i0(r,t))}function bR(e,t){let r={};for(let n of t)n in e&&(r[n]=e[n]);return r}function wR(e,t,r){let n=ft(e,[tt,"$id","required","properties"]),o=bR(r,t);return Ae(o,n)}function SR(e){let t=e.reduce((r,n)=>rl(n)?[...r,_e(n)]:r,[]);return Ce(t)}function i0(e,t){return st(e)?nr(xR(e.allOf,t)):ve(e)?Ce(gR(e.anyOf,t)):bt(e)?wR(e,t,e.properties):Ae({})}function Ti(e,t,r){let n=xt(t)?SR(t):t,o=rt(t)?wr(t):t,i=lt(e),a=lt(t);return Je(e)?aw(e,o,r):$r(t)?sw(e,t,r):i&&a?He("Pick",[e,n],r):!i&&a?He("Pick",[e,n],r):i&&!a?He("Pick",[e,n],r):P({...i0(e,o),...r})}function IR(e,t,r){return{[t]:Ti(e,[t],Xe(r))}}function _R(e,t,r){return t.reduce((n,o)=>({...n,...IR(e,o,r)}),{})}function vR(e,t,r){return _R(e,t.keys,r)}function sw(e,t,r){let n=vR(e,t,r);return Te(n)}function TR(e,t){return He("Partial",[He(e,t)])}function MR(e){return He("Partial",[Zn(e)])}function OR(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=rr(e[r]);return t}function RR(e,t){let r=ft(e,[tt,"$id","required","properties"]),n=OR(t);return Ae(n,r)}function fw(e){return e.map(t=>cw(t))}function cw(e){return wn(e)?TR(e.target,e.parameters):lt(e)?MR(e.$ref):st(e)?nr(fw(e.allOf)):ve(e)?Ce(fw(e.anyOf)):bt(e)?RR(e,e.properties):sa(e)||Po(e)||_n(e)||Er(e)||zf(e)||vn(e)||ko(e)||Kf(e)||No(e)?e:Ae({})}function Is(e,t){return Je(e)?uw(e,t):P({...cw(e),...t})}function CR(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Is(e[n],Xe(t));return r}function AR(e,t){return CR(e.properties,t)}function uw(e,t){let r=AR(e,t);return Te(r)}function PR(e,t){return He("Required",[He(e,t)])}function kR(e){return He("Required",[Zn(e)])}function NR(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=ft(e[r],[Ht]);return t}function FR(e,t){let r=ft(e,[tt,"$id","required","properties"]),n=NR(t);return Ae(n,r)}function lw(e){return e.map(t=>pw(t))}function pw(e){return wn(e)?PR(e.target,e.parameters):lt(e)?kR(e.$ref):st(e)?nr(lw(e.allOf)):ve(e)?Ce(lw(e.anyOf)):bt(e)?FR(e,e.properties):sa(e)||Po(e)||_n(e)||Er(e)||zf(e)||vn(e)||ko(e)||Kf(e)||No(e)?e:Ae({})}function _s(e,t){return Je(e)?mw(e,t):P({...pw(e),...t})}function ER(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=_s(e[n],t);return r}function $R(e,t){return ER(e.properties,t)}function mw(e,t){let r=$R(e,t);return Te(r)}function LR(e,t){return t.map(r=>lt(r)?a0(e,r.$ref):Vr(e,r))}function a0(e,t){return t in e?lt(e[t])?a0(e,e[t].$ref):Vr(e,e[t]):ge()}function DR(e){return hs(e[0])}function VR(e){return Ii(e[0],e[1])}function UR(e){return xs(e[0])}function jR(e){return Is(e[0])}function BR(e){return vi(e[0],e[1])}function GR(e){return Ti(e[0],e[1])}function zR(e){return _s(e[0])}function KR(e,t,r){let n=LR(e,r);return t==="Awaited"?DR(n):t==="Index"?VR(n):t==="KeyOf"?UR(n):t==="Partial"?jR(n):t==="Omit"?BR(n):t==="Pick"?GR(n):t==="Required"?zR(n):ge()}function qR(e,t){return ss(Vr(e,t))}function HR(e,t){return fs(Vr(e,t))}function YR(e,t,r){return cs(rc(e,t),Vr(e,r))}function WR(e,t,r){return Wn(rc(e,t),Vr(e,r))}function XR(e,t){return nr(rc(e,t))}function ZR(e,t){return ds(Vr(e,t))}function QR(e,t){return Ae(globalThis.Object.keys(t).reduce((r,n)=>({...r,[n]:Vr(e,t[n])}),{}))}function JR(e,t){let[r,n]=[Vr(e,Il(t)),Sl(t)],o=rs(t);return o.patternProperties[n]=r,o}function eC(e,t){return lt(t)?{...a0(e,t.$ref),[tt]:t[tt]}:t}function tC(e,t){return Zr(rc(e,t))}function rC(e,t){return Ce(rc(e,t))}function rc(e,t){return t.map(r=>Vr(e,r))}function Vr(e,t){return br(t)?P(Vr(e,ft(t,[Ht])),t):os(t)?P(Vr(e,ft(t,[gn])),t):Re(t)?P(eC(e,t),t):bn(t)?P(qR(e,t.items),t):aa(t)?P(HR(e,t.items),t):wn(t)?P(KR(e,t.target,t.parameters)):Sn(t)?P(YR(e,t.parameters,t.returns),t):In(t)?P(WR(e,t.parameters,t.returns),t):st(t)?P(XR(e,t.allOf),t):fa(t)?P(ZR(e,t.items),t):bt(t)?P(QR(e,t.properties),t):ua(t)?P(JR(e,t)):Dr(t)?P(tC(e,t.items||[]),t):ve(t)?P(rC(e,t.anyOf),t):t}function nC(e,t){return t in e?Vr(e,e[t]):ge()}function dw(e){return globalThis.Object.getOwnPropertyNames(e).reduce((t,r)=>({...t,[r]:nC(e,r)}),{})}var s0=class{constructor(t){let r=dw(t),n=this.WithIdentifiers(r);this.$defs=n}Import(t,r){let n={...this.$defs,[t]:P(this.$defs[t],r)};return P({[k]:"Import",$defs:n,$ref:t})}WithIdentifiers(t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:{...t[n],$id:n}}),{})}};function hw(e){return new s0(e)}function yw(e,t){return P({[k]:"Not",not:e},t)}function xw(e,t){return In(e)?Zr(e.parameters,t):ge()}var oC=0;function gw(e,t={}){gt(t.$id)&&(t.$id=`T${oC++}`);let r=rs(e({[k]:"This",$ref:`${t.$id}`}));return r.$id=t.$id,P({[Wr]:"Recursive",...r},t)}function bw(e,t){let r=ze(e)?new globalThis.RegExp(e):e;return P({[k]:"RegExp",type:"RegExp",source:r.source,flags:r.flags},t)}function iC(e){return st(e)?e.allOf:ve(e)?e.anyOf:Dr(e)?e.items??[]:[]}function ww(e){return iC(e)}function Sw(e,t){return In(e)?P(e.returns,t):ge(t)}var f0=class{constructor(t){this.schema=t}Decode(t){return new c0(this.schema,t)}},c0=class{constructor(t,r){this.schema=t,this.decode=r}EncodeTransform(t,r){let i={Encode:a=>r[tt].Encode(t(a)),Decode:a=>this.decode(r[tt].Decode(a))};return{...r,[tt]:i}}EncodeSchema(t,r){let n={Decode:this.decode,Encode:t};return{...r,[tt]:n}}Encode(t){return Re(this.schema)?this.EncodeTransform(t,this.schema):this.EncodeSchema(t,this.schema)}};function Iw(e){return new f0(e)}function _w(e={}){return P({[k]:e[k]??"Unsafe"},e)}function vw(e){return P({[k]:"Void",type:"void"},e)}var u0={};oa(u0,{Any:()=>Si,Argument:()=>s2,Array:()=>ss,AsyncIterator:()=>fs,Awaited:()=>hs,BigInt:()=>ms,Boolean:()=>al,Capitalize:()=>ew,Composite:()=>M2,Const:()=>O2,Constructor:()=>cs,ConstructorParameters:()=>R2,Date:()=>ll,Enum:()=>C2,Exclude:()=>ws,Extends:()=>bs,Extract:()=>Ss,Function:()=>Wn,Index:()=>Ii,InstanceType:()=>H2,Instantiate:()=>W2,Integer:()=>X2,Intersect:()=>nr,Iterator:()=>ds,KeyOf:()=>xs,Literal:()=>_e,Lowercase:()=>tw,Mapped:()=>w2,Module:()=>hw,Never:()=>ge,Not:()=>yw,Null:()=>pl,Number:()=>Xr,Object:()=>Ae,Omit:()=>vi,Optional:()=>rr,Parameters:()=>xw,Partial:()=>Is,Pick:()=>Ti,Promise:()=>cl,Readonly:()=>Sr,ReadonlyOptional:()=>bl,Record:()=>wl,Recursive:()=>gw,Ref:()=>Zn,RegExp:()=>bw,Required:()=>_s,Rest:()=>ww,ReturnType:()=>Sw,String:()=>lr,Symbol:()=>ml,TemplateLiteral:()=>sl,Transform:()=>Iw,Tuple:()=>Zr,Uint8Array:()=>hl,Uncapitalize:()=>rw,Undefined:()=>dl,Union:()=>Ce,Unknown:()=>Mn,Unsafe:()=>_w,Uppercase:()=>nw,Void:()=>vw});var h=u0;var Cn=h.Object({label:h.String(),domain:h.Optional(h.Tuple([h.Number(),h.Number()]))}),nc=h.Object({type:h.Union([h.Literal("identity"),h.Literal("horizontal"),h.Literal("vertical")]),value:h.Optional(h.Number())}),bZ=h.Object({schemaVersion:h.Literal("1.0"),title:h.Optional(h.String()),xAxis:Cn,yAxis:Cn,references:h.Optional(h.Array(nc))});var aC=h.Object({model:h.String(),population:h.Optional(h.String()),horizon:h.Optional(h.Number()),predicted:h.Number({minimum:0,maximum:1}),observed:h.Number({minimum:0,maximum:1}),method:h.Union([h.Literal("discrete"),h.Literal("smooth")]),events:h.Optional(h.Number({minimum:0})),total:h.Optional(h.Number({minimum:0}))}),sC=h.Object({model:h.String(),population:h.Optional(h.String()),horizon:h.Optional(h.Number()),midpoint:h.Number({minimum:0,maximum:1}),count:h.Number({minimum:0}),binWidth:h.Number({exclusiveMinimum:0,maximum:1})}),l0=h.Object({schemaVersion:h.Literal("1.0"),type:h.Literal("calibration"),data:h.Array(aC),distribution:h.Optional(h.Array(sC)),x:h.Literal("predicted"),y:h.Literal("observed"),xAxis:Cn,yAxis:Cn,references:h.Optional(h.Array(nc))});var fC=h.Object({model:h.String(),population:h.Optional(h.String()),horizon:h.Optional(h.Number()),cutoff:h.Number(),sensitivity:h.Number({minimum:0,maximum:1}),specificity:h.Number({minimum:0,maximum:1})}),p0=h.Object({schemaVersion:h.Literal("1.0"),type:h.Literal("roc"),data:h.Array(fC),x:h.Literal("false_positive_rate"),y:h.Literal("sensitivity"),xAxis:Cn,yAxis:Cn,references:h.Optional(h.Array(nc))});var cC=h.Union([p0,l0],{$id:"https://rtichoke.dev/schema/viz/1.0.json",title:"rtichoke visualization specification"});var An=h.Object({id:h.String(),model:h.Optional(h.String()),population:h.String(),label:h.Optional(h.String())}),Tw=h.Union([h.Literal("model"),h.Literal("population"),h.Literal("evaluation"),h.Literal("context")]),Mw=h.Object({label:h.String(),group:h.String(),role:Tw}),vs=h.Object({id:h.String(),evaluationId:h.String(),horizon:h.Optional(h.Number({minimum:0})),display:Mw}),uC=h.Object({x:h.Number(),y:h.Number()}),m0=h.Union([h.Object({type:h.Literal("identity"),label:h.Optional(h.String())}),h.Object({type:h.Literal("horizontal"),value:h.Number(),label:h.Optional(h.String())}),h.Object({type:h.Literal("vertical"),value:h.Number(),label:h.Optional(h.String())}),h.Object({type:h.Literal("path"),points:h.Array(uC,{minItems:2}),label:h.Optional(h.String())})]),lC=h.Intersect([m0,h.Object({scope:h.Literal("global")})]),pC=h.Intersect([m0,h.Object({scope:h.Literal("population"),population:h.String()})]),mC=h.Intersect([m0,h.Object({scope:h.Literal("population_horizon"),population:h.String(),horizon:h.Number({minimum:0})})]),Ow=h.Union([lC,pC,mC]),vr=h.Object({schemaVersion:h.Literal("2.0"),title:h.Optional(h.String()),evaluations:h.Array(An),series:h.Array(vs),xAxis:Cn,yAxis:Cn,references:h.Optional(h.Array(Ow))}),Rw=h.Union([h.Literal("probability_threshold"),h.Literal("ppcr")]),$o=h.Object({operatingPoint:h.Optional(h.Object({dimension:Rw}))}),_l=h.Object({operatingPoint:h.Optional(h.Object({dimension:h.Literal("probability_threshold")}))});var Cw=h.Object({seriesId:h.String(),predicted:h.Number({minimum:0,maximum:1}),observed:h.Number({minimum:0,maximum:1}),method:h.Literal("discrete"),events:h.Optional(h.Number({minimum:0})),total:h.Optional(h.Number({minimum:0}))}),Aw=h.Object({seriesId:h.String(),predicted:h.Number({minimum:0,maximum:1}),observed:h.Number(),method:h.Literal("smooth"),events:h.Optional(h.Number({minimum:0})),total:h.Optional(h.Number({minimum:0}))}),Pw=h.Union([Cw,Aw]),dC=h.Object({seriesId:h.String(),midpoint:h.Number({minimum:0,maximum:1}),count:h.Number({minimum:0}),binWidth:h.Number({exclusiveMinimum:0,maximum:1})}),d0=h.Intersect([vr,h.Object({type:h.Literal("calibration"),data:h.Array(Pw),distribution:h.Optional(h.Array(dC)),x:h.Literal("predicted"),y:h.Literal("observed")})]);var Nw=h.Object({seriesId:h.String(),threshold:h.Number({minimum:0,maximum:1}),netBenefit:h.Number()}),Fw=h.Intersect([An,h.Object({id:h.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Ew=h.Intersect([vs,h.Object({id:h.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:h.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),$w=h.Object({type:h.Literal("horizontal"),value:h.Literal(0),label:h.Optional(h.String()),scope:h.Literal("global"),benchmark:h.Literal("treat_none")}),kw={type:h.Literal("path"),points:h.Array(h.Object({x:h.Number(),y:h.Number()}),{minItems:2}),label:h.Optional(h.String()),benchmark:h.Literal("treat_all")},Lw=h.Union([h.Object({...kw,scope:h.Literal("population"),population:h.String()}),h.Object({...kw,scope:h.Literal("population_horizon"),population:h.String(),horizon:h.Number({minimum:0})})]),Dw=h.Union([$w,Lw]),h0=h.Intersect([vr,_l,h.Object({type:h.Literal("decision_curve"),evaluations:h.Array(Fw,{minItems:1}),series:h.Array(Ew,{minItems:1}),data:h.Array(Nw),x:h.Literal("threshold"),y:h.Literal("netBenefit"),references:h.Array(Dw,{minItems:2})})]);var hC=h.Object({seriesId:h.String(),cutoff:h.Number(),ppcr:h.Number({minimum:0,maximum:1}),sensitivity:h.Number({minimum:0,maximum:1})}),y0=h.Intersect([vr,$o,h.Object({type:h.Literal("gains"),data:h.Array(hC),x:h.Literal("ppcr"),y:h.Literal("sensitivity")})]);var Uw=h.Object({seriesId:h.String(),threshold:h.Number({minimum:0,maximum:1}),interventionsAvoided:h.Number()}),jw=h.Intersect([An,h.Object({id:h.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Bw=h.Intersect([vs,h.Object({id:h.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:h.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Gw=h.Object({type:h.Literal("horizontal"),value:h.Literal(0),label:h.Optional(h.String()),scope:h.Literal("global"),benchmark:h.Literal("treat_all")}),Vw={type:h.Literal("path"),points:h.Array(h.Object({x:h.Number(),y:h.Number()}),{minItems:2}),label:h.Optional(h.String()),benchmark:h.Literal("treat_none")},zw=h.Union([h.Object({...Vw,scope:h.Literal("population"),population:h.String()}),h.Object({...Vw,scope:h.Literal("population_horizon"),population:h.String(),horizon:h.Number({minimum:0})})]),Kw=h.Union([Gw,zw]),x0=h.Intersect([vr,_l,h.Object({type:h.Literal("interventions_avoided"),evaluations:h.Array(jw,{minItems:1}),series:h.Array(Bw,{minItems:1}),data:h.Array(Uw),x:h.Literal("threshold"),y:h.Literal("interventionsAvoided"),references:h.Array(Kw,{minItems:2})})]);var yC=h.Object({seriesId:h.String(),cutoff:h.Number(),ppcr:h.Number({minimum:0,maximum:1}),lift:h.Number()}),g0=h.Intersect([vr,$o,h.Object({type:h.Literal("lift"),data:h.Array(yC),x:h.Literal("ppcr"),y:h.Literal("lift")})]);var xC=h.Object({seriesId:h.String(),cutoff:h.Number(),ppcr:h.Optional(h.Number({minimum:0,maximum:1})),sensitivity:h.Number({minimum:0,maximum:1}),ppv:h.Number({minimum:0,maximum:1})}),b0=h.Intersect([vr,$o,h.Object({type:h.Literal("precision_recall"),data:h.Array(xC),x:h.Literal("sensitivity"),y:h.Literal("ppv")})]);var gC=h.Object({seriesId:h.String(),cutoff:h.Number(),ppcr:h.Optional(h.Number({minimum:0,maximum:1})),sensitivity:h.Number({minimum:0,maximum:1}),specificity:h.Number({minimum:0,maximum:1})}),w0=h.Intersect([vr,$o,h.Object({type:h.Literal("roc"),data:h.Array(gC),x:h.Literal("false_positive_rate"),y:h.Literal("sensitivity")})]);var S0=h.Union([w0,d0,b0,y0,g0,h0,x0],{$id:"https://rtichoke.dev/schema/viz/2.0.json",title:"rtichoke visualization specification v2"});var I0=h.Union([h.Literal("true_positives"),h.Literal("true_negatives"),h.Literal("false_positives"),h.Literal("false_negatives"),h.Literal("sensitivity"),h.Literal("specificity"),h.Literal("false_positive_rate"),h.Literal("ppv"),h.Literal("npv"),h.Literal("lift"),h.Literal("predicted_positives"),h.Literal("ppcr"),h.Literal("net_benefit"),h.Literal("net_benefit_interventions_avoided")]),qw=h.Object({id:I0,label:h.String()}),Hw=h.Object({metricId:I0,estimate:h.Union([h.Number(),h.Null()]),lower:h.Optional(h.Union([h.Number(),h.Null()])),upper:h.Optional(h.Union([h.Number(),h.Null()]))}),Yw=h.Union([h.Object({type:h.Literal("probability_threshold"),value:h.Number()}),h.Object({type:h.Literal("ppcr"),value:h.Number({minimum:0,maximum:1})})]),Ww=h.Object({censoringHeuristic:h.Optional(h.String()),competingEventHeuristic:h.Optional(h.String())}),Xw=h.Object({evaluationId:h.String(),horizon:h.Optional(h.Number({minimum:0})),operatingPoint:Yw,context:h.Optional(Ww),values:h.Array(Hw)}),_0=h.Object({schemaVersion:h.Literal("2.0"),type:h.Literal("performance_table"),title:h.Optional(h.String()),evaluations:h.Array(An),metrics:h.Array(qw),rows:h.Array(Xw)});var v0=h.Object({id:h.String(),label:h.String()}),T0=h.Object({metric:h.Literal("auroc"),owner:h.Object({type:h.Literal("evaluation"),evaluationId:h.String()}),estimate:h.Union([h.Number(),h.Null()])}),M0=h.Object({metric:h.Literal("prevalence"),owner:h.Object({type:h.Literal("population"),populationId:h.String()}),estimate:h.Union([h.Number(),h.Null()])}),bC=h.Object({metric:h.Literal("event_risk"),owner:h.Object({type:h.Literal("population"),populationId:h.String()}),horizon:h.Number({minimum:0}),estimate:h.Union([h.Number(),h.Null()])}),wC=h.Union([T0,M0]),Zw=h.Union([T0,M0,bC]),SC=Zw,IC=h.Object({schemaVersion:h.Literal("1.0"),type:h.Literal("summary_metrics"),title:h.Optional(h.String()),evaluations:h.Array(An),populations:h.Array(v0),metrics:h.Array(wC)}),_C=h.Object({schemaVersion:h.Literal("1.1"),type:h.Literal("summary_metrics"),title:h.Optional(h.String()),evaluations:h.Array(An),populations:h.Array(v0),metrics:h.Array(Zw)}),O0=h.Union([IC,_C],{$id:"https://rtichoke.dev/schema/viz/summary-metrics.json",title:"rtichoke summary metrics specification"});var R0=h.Union([S0,_0,O0]),Qw=h.Object({id:h.String(),title:h.Optional(h.String()),spec:R0}),vl=h.Object({schemaVersion:h.Literal("1.0"),type:h.Literal("report"),title:h.Optional(h.String()),components:h.Array(Qw,{minItems:1})}),C0=h.Object({type:h.Literal("component"),id:h.String(),title:h.Optional(h.String()),spec:R0}),Jw=h.Object({type:h.Literal("group"),id:h.String(),title:h.String(),components:h.Array(C0,{minItems:1})}),eS=h.Object({id:h.String(),title:h.String(),items:h.Array(h.Union([C0,Jw]),{minItems:1})}),Tl=h.Object({schemaVersion:h.Literal("1.1"),type:h.Literal("report"),title:h.Optional(h.String()),sections:h.Array(eS,{minItems:1})}),vC=h.Union([vl,Tl],{$id:"https://rtichoke.dev/schema/viz/report.json",title:"rtichoke report specification"});function Ml(e){let t=new Set,r=i=>{if(t.has(i.id))throw new Error(`duplicate component id: ${i.id}`);t.add(i.id)};if(e.schemaVersion==="1.0"){for(let i of e.components)r(i);return}let n=new Set,o=new Set;for(let i of e.sections){if(n.has(i.id))throw new Error(`duplicate section id: ${i.id}`);n.add(i.id);for(let a of i.items){if(a.type==="component"){r(a);continue}if(o.has(a.id))throw new Error(`duplicate group id: ${a.id}`);o.add(a.id);for(let s of a.components)r(s)}}}function A0(e){let t=new Set;for(let n of e.evaluations){if(t.has(n.id))throw new Error(`duplicate evaluation id: ${n.id}`);t.add(n.id)}let r=new Set;for(let n of e.metrics){if(r.has(n.id))throw new Error(`duplicate metric id: ${n.id}`);r.add(n.id)}for(let n of e.rows){if(!t.has(n.evaluationId))throw new Error(`unknown evaluation id: ${n.evaluationId}`);for(let o of n.values)if(!r.has(o.metricId))throw new Error(`unknown metric id: ${o.metricId}`)}}function P0(e){let t=new Set;for(let o of e.evaluations){if(t.has(o.id))throw new Error(`duplicate evaluation id: ${o.id}`);t.add(o.id)}let r=new Set;for(let o of e.populations){if(r.has(o.id))throw new Error(`duplicate population id: ${o.id}`);r.add(o.id)}let n=new Set;for(let o of e.metrics){if(o.estimate!==null&&!Number.isFinite(o.estimate))throw new Error(`non-finite metric estimate: ${o.estimate}`);if("horizon"in o&&o.horizon!==void 0&&(!Number.isFinite(o.horizon)||o.horizon<0))throw new Error(`invalid horizon: ${o.horizon}`);if(o.metric==="auroc"){if("horizon"in o&&o.horizon!==void 0)throw new Error("auroc metric cannot specify horizon");if(!t.has(o.owner.evaluationId))throw new Error(`unknown evaluation id: ${o.owner.evaluationId}`);let i=`auroc:${o.owner.evaluationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: auroc for evaluation ${o.owner.evaluationId}`);n.add(i)}else if(o.metric==="prevalence"){if("horizon"in o&&o.horizon!==void 0)throw new Error("prevalence metric cannot specify horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`prevalence:${o.owner.populationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: prevalence for population ${o.owner.populationId}`);n.add(i)}else if(o.metric==="event_risk"){if(e.schemaVersion!=="1.1")throw new Error(`event_risk metric requires schemaVersion 1.1, got ${e.schemaVersion}`);if(!("horizon"in o)||o.horizon===void 0)throw new Error("event_risk metric requires horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`event_risk:${o.owner.populationId}:${o.horizon}`;if(n.has(i))throw new Error(`duplicate metric ownership: event_risk for population ${o.owner.populationId} at horizon ${o.horizon}`);n.add(i)}}}function Lo(e){let t=new Set(e.evaluations.map(o=>o.id)),r=new Set;if(t.size!==e.evaluations.length)throw new Error("duplicate evaluation id");for(let o of e.series){if(r.has(o.id))throw new Error(`duplicate series id: ${o.id}`);if(r.add(o.id),!t.has(o.evaluationId))throw new Error(`unknown evaluation id: ${o.evaluationId}`)}for(let o of e.data)if(!r.has(o.seriesId))throw new Error(`unknown series id: ${o.seriesId}`);if(e.type==="calibration"){for(let o of e.distribution??[])if(!r.has(o.seriesId))throw new Error(`unknown distribution series id: ${o.seriesId}`)}let n=new Set(e.evaluations.map(o=>o.population));for(let o of e.references??[])if((o.scope==="population"||o.scope==="population_horizon")&&!n.has(o.population))throw new Error(`unknown reference population: ${o.population}`);if(e.type==="decision_curve"){let o=e,i=o.references;o.evaluations.forEach((d,y)=>{let x=`evaluation-${y+1}`;if(d.id!==x)throw new Error(`decision curve evaluation ids must be ordinal: expected ${x}`)});let a=o.series.filter(d=>d.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("decision curve cannot mix static and horizon-qualified series");let s=a>0,f=[...new Set(o.series.map(d=>d.horizon).filter(d=>d!==void 0))],u=new Set;if(o.series.forEach((d,y)=>{if(d.id!==`series-${y+1}`)throw new Error(`decision curve series ids must be ordinal: expected series-${y+1}`);let x=o.evaluations.find(b=>b.id===d.evaluationId),w=x.model??x.population,g=x.model===void 0?"population":"model";if(d.display.label!==w||d.display.group!==w||d.display.role!==g)throw new Error("decision curve display must follow evaluation semantics");let S=`${d.evaluationId}\0${d.horizon??"static"}`;if(u.has(S))throw new Error(`duplicate decision curve evaluation-horizon series: ${d.evaluationId}`);u.add(S)}),s){if(!o.evaluations.every(y=>f.every(x=>u.has(`${y.id}\0${x}`)))||o.series.length!==o.evaluations.length*f.length)throw new Error("decision curve requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(d=>!u.has(`${d.id}\0static`)))throw new Error("decision curve requires exactly one series per evaluation");if(i.filter(d=>"benchmark"in d&&d.benchmark==="treat_none").length!==1)throw new Error("decision curve requires exactly one Treat None reference");let m=i.filter(d=>"benchmark"in d&&d.benchmark==="treat_all"),l=new Set;for(let d of m){if(s&&d.scope!=="population_horizon")throw new Error("time-dependent decision curve Treat All must use population_horizon scope");if(!s&&d.scope!=="population")throw new Error("static decision curve Treat All must use population scope");let y=d.scope==="population_horizon"?`${d.population}\0${d.horizon}`:d.population;if(l.has(y))throw new Error(`duplicate Treat All owner: ${d.population}`);l.add(y)}let p=s?[...n].flatMap(d=>f.map(y=>`${d}\0${y}`)):[...n];if(l.size!==p.length||p.some(d=>!l.has(d)))throw new Error(s?"decision curve requires exactly one Treat All reference per population and horizon":"decision curve requires exactly one Treat All reference per population")}if(e.type==="interventions_avoided"){let o=e,i=o.references;o.evaluations.forEach((d,y)=>{let x=`evaluation-${y+1}`;if(d.id!==x)throw new Error(`interventions avoided evaluation ids must be ordinal: expected ${x}`)});let a=o.series.filter(d=>d.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("interventions avoided cannot mix static and horizon-qualified series");let s=a>0,f=[...new Set(o.series.map(d=>d.horizon).filter(d=>d!==void 0))],u=new Set;if(o.series.forEach((d,y)=>{if(d.id!==`series-${y+1}`)throw new Error(`interventions avoided series ids must be ordinal: expected series-${y+1}`);let x=o.evaluations.find(b=>b.id===d.evaluationId);if(!x)throw new Error(`unknown evaluation id: ${d.evaluationId}`);let w=x.model??x.population,g=x.model===void 0?"population":"model";if(d.display.label!==w||d.display.group!==w||d.display.role!==g)throw new Error("interventions avoided display must follow evaluation semantics");let S=`${d.evaluationId}\0${d.horizon??"static"}`;if(u.has(S))throw new Error(`duplicate interventions avoided evaluation-horizon series: ${d.evaluationId}`);u.add(S)}),s){if(!o.evaluations.every(y=>f.every(x=>u.has(`${y.id}\0${x}`)))||o.series.length!==o.evaluations.length*f.length)throw new Error("interventions avoided requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(d=>!u.has(`${d.id}\0static`)))throw new Error("interventions avoided requires exactly one series per evaluation");let c=i.filter(d=>"benchmark"in d&&d.benchmark==="treat_all");if(c.length!==1)throw new Error("interventions avoided requires exactly one Treat All reference");if(c[0].scope!=="global"||c[0].type!=="horizontal"||c[0].value!==0)throw new Error("interventions avoided Treat All must be the global zero reference");let m=i.filter(d=>"benchmark"in d&&d.benchmark==="treat_none"),l=new Set;for(let d of m){if(s&&d.scope!=="population_horizon")throw new Error("time-dependent interventions avoided Treat None must use population_horizon scope");if(!s&&d.scope!=="population")throw new Error("static interventions avoided Treat None must use population scope");let y=d.scope==="population_horizon"?`${d.population}\0${d.horizon}`:d.population;if(l.has(y))throw new Error(`duplicate Treat None owner: ${d.population}`);l.add(y)}let p=s?[...n].flatMap(d=>f.map(y=>`${d}\0${y}`)):[...n];if(l.size!==p.length||p.some(d=>!l.has(d)))throw new Error(s?"interventions avoided requires exactly one Treat None reference per population and horizon":"interventions avoided requires exactly one Treat None reference per population")}}function tS(e){return{schemaVersion:"1.0",type:"roc",data:e,x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity"}]}}function TC(e){return tS(e.map(t=>({model:t.model,cutoff:t.probability_threshold,sensitivity:t.sensitivity,specificity:t.specificity})))}function MC(e){return tS(e.map(t=>({model:t.reference_group,cutoff:t.chosen_cutoff,sensitivity:t.sensitivity,specificity:t.specificity})))}function OC(e,t,r){let n=e.map(i=>{let a=i.sum_reals??i.n_reals,s=i.total_obs??i.n;return{model:i.reference_group,predicted:i.x,observed:i.y,method:t,...t==="discrete"&&a!==void 0?{events:a}:{},...t==="discrete"&&s!==void 0?{total:s}:{}}}),o=r?.map(i=>({model:i.reference_group,midpoint:i.mids,count:i.counts,binWidth:.01}));return{schemaVersion:"1.0",type:"calibration",data:n,...o?{distribution:o}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[0,1]},references:[{type:"identity"}]}}function RC(e,t){let r=t.role==="model"?t.population??"population":e,n=`evaluation:${e}`;return{evaluation:{id:n,...t.role==="model"?{model:e}:{},population:r,label:e},series:{id:`series:${e}`,evaluationId:n,display:{label:e,group:e,role:t.role}}}}function k0(e,t){return[...new Set(e)].map(n=>RC(n,t))}function CC(e,t="population"){let r=k0(e.map(n=>n.model),{role:"model",population:t});return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.model}`,cutoff:n.probability_threshold,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function AC(e,t){let r=k0(e.map(n=>n.reference_group),t);return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.reference_group}`,cutoff:n.chosen_cutoff,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function PC(e,t,r,n){let o=k0(e.map(f=>f.reference_group),r),i=e.map(f=>f.y).filter(Number.isFinite),a=Math.min(0,...i),s=Math.max(1,...i);return{schemaVersion:"2.0",type:"calibration",evaluations:o.map(f=>f.evaluation),series:o.map(f=>f.series),data:e.map(f=>{let u=f.sum_reals??f.n_reals,c=f.total_obs??f.n;return{seriesId:`series:${f.reference_group}`,predicted:f.x,observed:f.y,method:t,...t==="discrete"&&u!==void 0?{events:u}:{},...t==="discrete"&&c!==void 0?{total:c}:{}}}),...n?{distribution:n.map(f=>({seriesId:`series:${f.reference_group}`,midpoint:f.mids,count:f.counts,binWidth:.01}))}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[a,s]},references:[{type:"identity",scope:"global",label:"Perfectly Calibrated"}]}}function ct(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function tn(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function Do(e){let t,r,n;e.length!==2?(t=ct,r=(s,f)=>ct(e(s),f),n=(s,f)=>e(s)-f):(t=e===ct||e===tn?e:kC,r=e,n=e);function o(s,f,u=0,c=s.length){if(u>>1;r(s[m],f)<0?u=m+1:c=m}while(u>>1;r(s[m],f)<=0?u=m+1:c=m}while(uu&&n(s[m-1],f)>-n(s[m],f)?m-1:m}return{left:o,center:a,right:i}}function kC(){return 0}function oc(e){return e===null?NaN:+e}function*rS(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var nS=Do(ct),oS=nS.right,NC=nS.left,FC=Do(oc).center,ha=oS;function EC(e){return e.length|0}function $C(e){return!(e>0)}function LC(e){return typeof e!="object"||"length"in e?e:Array.from(e)}function DC(e){return t=>e(...t)}function Ol(...e){let t=typeof e[e.length-1]=="function"&&DC(e.pop());e=e.map(LC);let r=e.map(EC),n=e.length-1,o=new Array(n+1).fill(0),i=[];if(n<0||r.some($C))return i;for(;;){i.push(o.map((s,f)=>e[f][s]));let a=n;for(;++o[a]===r[a];){if(a===0)return t?i.map(t):i;o[a--]=0}}}function Rl(e,t){var r=0,n=0;return Float64Array.from(e,t===void 0?o=>r+=+o||0:o=>r+=+t(o,n++,e)||0)}function Ts(e,t){let r=0,n,o=0,i=0;if(t===void 0)for(let a of e)a!=null&&(a=+a)>=a&&(n=a-o,o+=n/++r,i+=n*(a-o));else{let a=-1;for(let s of e)(s=t(s,++a,e))!=null&&(s=+s)>=s&&(n=s-o,o+=n/++r,i+=n*(s-o))}if(r>1)return i/(r-1)}function Cl(e,t){let r=Ts(e,t);return r&&Math.sqrt(r)}function Tr(e,t){let r,n;if(t===void 0)for(let o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n=i&&(r=n=i):(r>i&&(r=i),n0){for(a=t[--r];r>0&&(n=a,o=t[--r],a=n+o,i=o-(a-n),!i););r>0&&(i<0&&t[r-1]<0||i>0&&t[r-1]>0)&&(o=i*2,n=a+o,o==n-a&&(a=n))}return a}};var pr=class extends Map{constructor(t,r=sS){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,o]of t)this.set(n,o)}get(t){return super.get(N0(this,t))}has(t){return super.has(N0(this,t))}set(t,r){return super.set(iS(this,t),r)}delete(t){return super.delete(aS(this,t))}},Pn=class extends Set{constructor(t,r=sS){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let n of t)this.add(n)}has(t){return super.has(N0(this,t))}add(t){return super.add(iS(this,t))}delete(t){return super.delete(aS(this,t))}};function N0({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function iS({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function aS({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function sS(e){return e!==null&&typeof e=="object"?e.valueOf():e}function ic(e){return e}function Vo(e,...t){return E0(e,ic,ic,t)}function Qn(e,t,...r){return E0(e,ic,t,r)}function F0(e,t,...r){return E0(e,Array.from,t,r)}function E0(e,t,r,n){return(function o(i,a){if(a>=n.length)return r(i);let s=new pr,f=n[a++],u=-1;for(let c of i){let m=f(c,++u,i),l=s.get(m);l?l.push(c):s.set(m,[c])}for(let[c,m]of s)s.set(c,o(m,a));return t(s)})(e,0)}function $0(e,t){return Array.from(t,r=>e[r])}function Mi(e,...t){if(typeof e[Symbol.iterator]!="function")throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&r.length!==2||t.length>1){let n=Uint32Array.from(e,(o,i)=>i);return t.length>1?(t=t.map(o=>e.map(o)),n.sort((o,i)=>{for(let a of t){let s=ac(a[o],a[i]);if(s)return s}})):(r=e.map(r),n.sort((o,i)=>ac(r[o],r[i]))),$0(e,n)}return e.sort(L0(r))}function L0(e=ct){if(e===ct)return ac;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function ac(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}function Ms(e,t,r){return(t.length!==2?Mi(Qn(e,t,r),(([n,o],[i,a])=>ct(o,a)||ct(n,i))):Mi(Vo(e,r),(([n,o],[i,a])=>t(o,a)||ct(n,i)))).map(([n])=>n)}var VC=Math.sqrt(50),UC=Math.sqrt(10),jC=Math.sqrt(2);function Al(e,t,r){let n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),a=i>=VC?10:i>=UC?5:i>=jC?2:1,s,f,u;return o<0?(u=Math.pow(10,-o)/a,s=Math.round(e*u),f=Math.round(t*u),s/ut&&--f,u=-u):(u=Math.pow(10,o)*a,s=Math.round(e/u),f=Math.round(t/u),s*ut&&--f),f0))return[];if(e===t)return[e];let n=t=o))return[];let s=i-o+1,f=new Array(s);if(n)if(a<0)for(let u=0;u=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r=o)&&(r=o)}return r}function Pl(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r=i)&&(r=i,n=o);return n}function mr(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function kl(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);return n}function Nl(e,t,r=0,n=1/0,o){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(o=o===void 0?ac:L0(o);n>r;){if(n-r>600){let f=n-r+1,u=t-r+1,c=Math.log(f),m=.5*Math.exp(2*c/3),l=.5*Math.sqrt(c*m*(f-m)/f)*(u-f/2<0?-1:1),p=Math.max(r,Math.floor(t-u*m/f+l)),d=Math.min(n,Math.floor(t+(f-u)*m/f+l));Nl(e,t,p,d,o)}let i=e[t],a=r,s=n;for(fc(e,r,t),o(e[n],i)>0&&fc(e,r,n);a0;)--s}o(e[r],i)===0?fc(e,r,s):(++s,fc(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function fc(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function cc(e,t=ct){let r,n=!1;if(t.length===1){let o;for(let i of e){let a=t(i);(n?ct(a,o)>0:ct(a,a)===0)&&(r=i,o=a,n=!0)}}else for(let o of e)(n?t(o,r)>0:t(o,o)===0)&&(r=o,n=!0);return r}function jo(e,t,r){if(e=Float64Array.from(rS(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return mr(e);if(t>=1)return Nt(e);var n,o=(n-1)*t,i=Math.floor(o),a=Nt(Nl(e,i).subarray(0,i+1)),s=mr(e.subarray(i+1));return a+(s-a)*(o-i)}}function D0(e,t,r=oc){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,o=(n-1)*t,i=Math.floor(o),a=+r(e[i],i,e),s=+r(e[i+1],i+1,e);return a+(s-a)*(o-i)}}function Fl(e,t){let r=0,n=0;if(t===void 0)for(let o of e)o!=null&&(o=+o)>=o&&(++r,n+=o);else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(i=+i)>=i&&(++r,n+=i)}if(r)return n/r}function ya(e,t){return jo(e,.5,t)}function*GC(e){for(let t of e)yield*t}function Rs(e){return Array.from(GC(e))}function El(e,t){let r=new pr;if(t===void 0)for(let i of e)i!=null&&i>=i&&r.set(i,(r.get(i)||0)+1);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&a>=a&&r.set(a,(r.get(a)||0)+1)}let n,o=0;for(let[i,a]of r)a>o&&(o=a,n=i);return n}function $l(e,t=zC){let r=[],n,o=!1;for(let i of e)o&&r.push(t(n,i)),n=i,o=!0;return r}function zC(e,t){return[e,t]}function xa(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n+e(t)}function YC(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function WC(){return!this.__axis}function XC(e,t){var r=[],n=null,o=null,i=6,a=6,s=3,f=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===V0||e===Ll?-1:1,c=e===Ll||e===U0?"x":"y",m=e===V0||e===j0?KC:qC;function l(p){var d=n??(t.ticks?t.ticks.apply(t,r):t.domain()),y=o??(t.tickFormat?t.tickFormat.apply(t,r):fS),x=Math.max(i,0)+s,w=t.range(),g=+w[0]+f,S=+w[w.length-1]+f,b=(t.bandwidth?YC:HC)(t.copy(),f),T=p.selection?p.selection():p,I=T.selectAll(".domain").data([null]),v=T.selectAll(".tick").data(d,t).order(),O=v.exit(),C=v.enter().append("g").attr("class","tick"),E=v.select("line"),A=v.select("text");I=I.merge(I.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),v=v.merge(C),E=E.merge(C.append("line").attr("stroke","currentColor").attr(c+"2",u*i)),A=A.merge(C.append("text").attr("fill","currentColor").attr(c,u*x).attr("dy",e===V0?"0em":e===j0?"0.71em":"0.32em")),p!==T&&(I=I.transition(p),v=v.transition(p),E=E.transition(p),A=A.transition(p),O=O.transition(p).attr("opacity",cS).attr("transform",function(F){return isFinite(F=b(F))?m(F+f):this.getAttribute("transform")}),C.attr("opacity",cS).attr("transform",function(F){var H=this.parentNode.__axis;return m((H&&isFinite(H=H(F))?H:b(F))+f)})),O.remove(),I.attr("d",e===Ll||e===U0?a?"M"+u*a+","+g+"H"+f+"V"+S+"H"+u*a:"M"+f+","+g+"V"+S:a?"M"+g+","+u*a+"V"+f+"H"+S+"V"+u*a:"M"+g+","+f+"H"+S),v.attr("opacity",1).attr("transform",function(F){return m(b(F)+f)}),E.attr(c+"2",u*i),A.attr(c,u*x).text(y),T.filter(WC).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===U0?"start":e===Ll?"end":"middle"),T.each(function(){this.__axis=b})}return l.scale=function(p){return arguments.length?(t=p,l):t},l.ticks=function(){return r=Array.from(arguments),l},l.tickArguments=function(p){return arguments.length?(r=p==null?[]:Array.from(p),l):r.slice()},l.tickValues=function(p){return arguments.length?(n=p==null?null:Array.from(p),l):n&&n.slice()},l.tickFormat=function(p){return arguments.length?(o=p,l):o},l.tickSize=function(p){return arguments.length?(i=a=+p,l):i},l.tickSizeInner=function(p){return arguments.length?(i=+p,l):i},l.tickSizeOuter=function(p){return arguments.length?(a=+p,l):a},l.tickPadding=function(p){return arguments.length?(s=+p,l):s},l.offset=function(p){return arguments.length?(f=+p,l):f},l}function B0(e){return XC(j0,e)}var ZC={value:()=>{}};function lS(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}Dl.prototype=lS.prototype={constructor:Dl,on:function(e,t){var r=this._,n=QC(e+"",r),o,i=-1,a=n.length;if(arguments.length<2){for(;++i0)for(var r=new Array(o),n=0,o,i;n=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),Jn.hasOwnProperty(t)?{space:Jn[t],local:e}:e}function eA(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Vl&&t.documentElement.namespaceURI===Vl?t.createElement(e):t.createElementNS(r,e)}}function tA(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Go(e){var t=Bo(e);return(t.local?tA:eA)(t)}function rA(){}function ga(e){return e==null?rA:function(){return this.querySelector(e)}}function pS(e){typeof e!="function"&&(e=ga(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o=S&&(S=g+1);!(T=x[S])&&++S=0;)(a=n[o])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function vS(e){e||(e=hA);function t(m,l){return m&&l?e(m.__data__,l.__data__):!m-!l}for(var r=this._groups,n=r.length,o=new Array(n),i=0;it?1:e>=t?0:NaN}function TS(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function MS(){return Array.from(this)}function OS(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?IA:typeof t=="function"?vA:_A)(e,t,r??"")):Ri(this.node(),e)}function Ri(e,t){return e.style.getPropertyValue(t)||Bl(e).getComputedStyle(e,null).getPropertyValue(t)}function TA(e){return function(){delete this[e]}}function MA(e,t){return function(){this[e]=t}}function OA(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function NS(e,t){return arguments.length>1?this.each((t==null?TA:typeof t=="function"?OA:MA)(e,t)):this.node()[e]}function FS(e){return e.trim().split(/^|\s+/)}function K0(e){return e.classList||new ES(e)}function ES(e){this._node=e,this._names=FS(e.getAttribute("class")||"")}ES.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function $S(e,t){for(var r=K0(e),n=-1,o=t.length;++n=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function KA(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?Gl(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Gl(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=ZA.exec(e))?new Tt(t[1],t[2],t[3],1):(t=QA.exec(e))?new Tt(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=JA.exec(e))?Gl(t[1],t[2],t[3],t[4]):(t=e7.exec(e))?Gl(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=t7.exec(e))?aI(t[1],t[2]/100,t[3]/100,1):(t=r7.exec(e))?aI(t[1],t[2]/100,t[3]/100,t[4]):eI.hasOwnProperty(e)?nI(eI[e]):e==="transparent"?new Tt(NaN,NaN,NaN,0):null}function nI(e){return new Tt(e>>16&255,e>>8&255,e&255,1)}function Gl(e,t,r,n){return n<=0&&(e=t=r=NaN),new Tt(e,t,r,n)}function dc(e){return e instanceof to||(e=Nn(e)),e?(e=e.rgb(),new Tt(e.r,e.g,e.b,e.opacity)):new Tt}function on(e,t,r,n){return arguments.length===1?dc(e):new Tt(e,t,r,n??1)}function Tt(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Ko(Tt,on,Ci(to,{brighter(e){return e=e==null?Sa:Math.pow(Sa,e),new Tt(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ai:Math.pow(Ai,e),new Tt(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Tt(wa(this.r),wa(this.g),wa(this.b),Kl(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:oI,formatHex:oI,formatHex8:i7,formatRgb:iI,toString:iI}));function oI(){return`#${ba(this.r)}${ba(this.g)}${ba(this.b)}`}function i7(){return`#${ba(this.r)}${ba(this.g)}${ba(this.b)}${ba((isNaN(this.opacity)?1:this.opacity)*255)}`}function iI(){let e=Kl(this.opacity);return`${e===1?"rgb(":"rgba("}${wa(this.r)}, ${wa(this.g)}, ${wa(this.b)}${e===1?")":`, ${e})`}`}function Kl(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function wa(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ba(e){return e=wa(e),(e<16?"0":"")+e.toString(16)}function aI(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new kn(e,t,r,n)}function fI(e){if(e instanceof kn)return new kn(e.h,e.s,e.l,e.opacity);if(e instanceof to||(e=Nn(e)),!e)return new kn;if(e instanceof kn)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),a=NaN,s=i-o,f=(i+o)/2;return s?(t===i?a=(r-n)/s+(r0&&f<1?0:a,new kn(a,s,f,e.opacity)}function hc(e,t,r,n){return arguments.length===1?fI(e):new kn(e,t,r,n??1)}function kn(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Ko(kn,hc,Ci(to,{brighter(e){return e=e==null?Sa:Math.pow(Sa,e),new kn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ai:Math.pow(Ai,e),new kn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Tt(Y0(e>=240?e-240:e+120,o,n),Y0(e,o,n),Y0(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new kn(sI(this.h),zl(this.s),zl(this.l),Kl(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Kl(this.opacity);return`${e===1?"hsl(":"hsla("}${sI(this.h)}, ${zl(this.s)*100}%, ${zl(this.l)*100}%${e===1?")":`, ${e})`}`}}));function sI(e){return e=(e||0)%360,e<0?e+360:e}function zl(e){return Math.max(0,Math.min(1,e||0))}function Y0(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var ql=Math.PI/180,Hl=180/Math.PI;var Yl=18,cI=.96422,uI=1,lI=.82521,pI=4/29,As=6/29,mI=3*As*As,a7=As*As*As;function dI(e){if(e instanceof ro)return new ro(e.l,e.a,e.b,e.opacity);if(e instanceof qo)return hI(e);e instanceof Tt||(e=dc(e));var t=Q0(e.r),r=Q0(e.g),n=Q0(e.b),o=W0((.2225045*t+.7168786*r+.0606169*n)/uI),i,a;return t===r&&r===n?i=a=o:(i=W0((.4360747*t+.3850649*r+.1430804*n)/cI),a=W0((.0139322*t+.0971045*r+.7141733*n)/lI)),new ro(116*o-16,500*(i-o),200*(o-a),e.opacity)}function Ps(e,t,r,n){return arguments.length===1?dI(e):new ro(e,t,r,n??1)}function ro(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}Ko(ro,Ps,Ci(to,{brighter(e){return new ro(this.l+Yl*(e??1),this.a,this.b,this.opacity)},darker(e){return new ro(this.l-Yl*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=cI*X0(t),e=uI*X0(e),r=lI*X0(r),new Tt(Z0(3.1338561*t-1.6168667*e-.4906146*r),Z0(-.9787684*t+1.9161415*e+.033454*r),Z0(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));function W0(e){return e>a7?Math.pow(e,1/3):e/mI+pI}function X0(e){return e>As?e*e*e:mI*(e-pI)}function Z0(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Q0(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function s7(e){if(e instanceof qo)return new qo(e.h,e.c,e.l,e.opacity);if(e instanceof ro||(e=dI(e)),e.a===0&&e.b===0)return new qo(NaN,0=1?(r=1,t-1):Math.floor(r*t),o=e[n],i=e[n+1],a=n>0?e[n-1]:2*o-i,s=n()=>e;function II(e,t){return function(r){return e+r*t}}function c7(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function Ns(e,t){var r=t-e;return r?II(e,r>180||r<-180?r-360*Math.round(r/360):r):ks(isNaN(e)?t:e)}function _I(e){return(e=+e)==1?nt:function(t,r){return r-t?c7(t,r,e):ks(isNaN(t)?r:t)}}function nt(e,t){var r=t-e;return r?II(e,r):ks(isNaN(e)?t:e)}var an=(function e(t){var r=_I(t);function n(o,i){var a=r((o=on(o)).r,(i=on(i)).r),s=r(o.g,i.g),f=r(o.b,i.b),u=nt(o.opacity,i.opacity);return function(c){return o.r=a(c),o.g=s(c),o.b=f(c),o.opacity=u(c),o+""}}return n.gamma=e,n})(1);function vI(e){return function(t){var r=t.length,n=new Array(r),o=new Array(r),i=new Array(r),a,s;for(a=0;ar&&(i=t.slice(r,i),s[a]?s[a]+=i:s[++a]=i),(n=n[0])===(o=o[0])?s[a]?s[a]+=o:s[++a]=o:(s[++a]=null,f.push({i:a,x:et(n,o)})),r=ny.lastIndex;return r180?c+=360:c-u>180&&(u+=360),l.push({i:m.push(o(m)+"rotate(",null,n)-2,x:et(u,c)})):c&&m.push(o(m)+"rotate("+c+n)}function s(u,c,m,l){u!==c?l.push({i:m.push(o(m)+"skewX(",null,n)-2,x:et(u,c)}):c&&m.push(o(m)+"skewX("+c+n)}function f(u,c,m,l,p,d){if(u!==m||c!==l){var y=p.push(o(p)+"scale(",null,",",null,")");d.push({i:y-4,x:et(u,m)},{i:y-2,x:et(c,l)})}else(m!==1||l!==1)&&p.push(o(p)+"scale("+m+","+l+")")}return function(u,c){var m=[],l=[];return u=e(u),c=e(c),i(u.translateX,u.translateY,c.translateX,c.translateY,m,l),a(u.rotate,c.rotate,m,l),s(u.skewX,c.skewX,m,l),f(u.scaleX,u.scaleY,c.scaleX,c.scaleY,m,l),u=c=null,function(p){for(var d=-1,y=l.length,x;++d=0&&e._call.call(void 0,t),e=e._next;--Es}function LI(){va=(ep=Ic.now())+tp,Es=wc=0;try{UI()}finally{Es=0,g7(),va=0}}function x7(){var e=Ic.now(),t=e-ep;t>DI&&(tp-=t,ep=e)}function g7(){for(var e,t=Jl,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Jl=r);Sc=e,uy(n)}function uy(e){if(!Es){wc&&(wc=clearTimeout(wc));var t=e-va;t>24?(e<1/0&&(wc=setTimeout(LI,e-Ic.now()-tp)),bc&&(bc=clearInterval(bc))):(bc||(ep=Ic.now(),bc=setInterval(x7,DI)),Es=1,VI(LI))}}function np(e,t,r){var n=new _c;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var b7=G0("start","end","cancel","interrupt"),w7=[],GI=0,jI=1,ip=2,op=3,BI=4,ap=5,Tc=6;function Pi(e,t,r,n,o,i){var a=e.__transition;if(!a)e.__transition={};else if(r in a)return;S7(e,r,{name:t,index:n,group:o,on:b7,tween:w7,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:GI})}function Mc(e,t){var r=Ot(e,t);if(r.state>GI)throw new Error("too late; already scheduled");return r}function Yt(e,t){var r=Ot(e,t);if(r.state>op)throw new Error("too late; already running");return r}function Ot(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function S7(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=rp(i,0,r.time);function i(u){r.state=jI,r.timer.restart(a,r.delay,r.time),r.delay<=u&&a(u-r.delay)}function a(u){var c,m,l,p;if(r.state!==jI)return f();for(c in n)if(p=n[c],p.name===r.name){if(p.state===op)return np(a);p.state===BI?(p.state=Tc,p.timer.stop(),p.on.call("interrupt",e,e.__data__,p.index,p.group),delete n[c]):+cip&&n.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function j7(e,t,r){var n,o,i=U7(t)?Mc:Yt;return function(){var a=i(this,e),s=a.on;s!==n&&(o=(n=s).copy()).on(t,r),a.on=o}}function e_(e,t){var r=this._id;return arguments.length<2?Ot(this.node(),r).on.on(e):this.each(j7(r,e,t))}function B7(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function t_(){return this.on("end.remove",B7(this._id))}function r_(e){var t=this._name,r=this._id;typeof e!="function"&&(e=ga(e));for(var n=this._groups,o=n.length,i=new Array(o),a=0;a=0))throw new Error(`invalid digits: ${e}`);if(t>15)return h_;let r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;oTa)if(!(Math.abs(m*f-u*c)>Ta)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-a,d=o-s,y=f*f+u*u,x=p*p+d*d,w=Math.sqrt(y),g=Math.sqrt(l),S=i*Math.tan((py-Math.acos((y+l-x)/(2*w*g)))/2),b=S/g,T=S/w;Math.abs(b-1)>Ta&&this._append`L${t+b*c},${r+b*m}`,this._append`A${i},${i},0,0,${+(m*p>c*d)},${this._x1=t+T*f},${this._y1=r+T*u}`}}arc(t,r,n,o,i,a){if(t=+t,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),f=n*Math.sin(o),u=t+s,c=r+f,m=1^a,l=a?o-i:i-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>Ta||Math.abs(this._y1-c)>Ta)&&this._append`L${u},${c}`,n&&(l<0&&(l=l%my+my),l>oP?this._append`A${n},${n},0,1,${m},${t-s},${r-f}A${n},${n},0,1,${m},${this._x1=u},${this._y1=c}`:l>Ta&&this._append`A${n},${n},0,${+(l>=py)},${m},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function y_(){return new ki}y_.prototype=ki.prototype;function En(e=3){return new ki(+e)}function x_(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Ma(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function oo(e){return e=Ma(Math.abs(e)),e?e[1]:NaN}function g_(e,t){return function(r,n){for(var o=r.length,i=[],a=0,s=e[0],f=0;o>0&&s>0&&(f+s+1>n&&(s=Math.max(1,n-f)),i.push(r.substring(o-=s,o+s)),!((f+=s+1)>n));)s=e[a=(a+1)%e.length];return i.reverse().join(t)}}function b_(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var aP=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function io(e){if(!(t=aP.exec(e)))throw new Error("invalid format: "+e);var t;return new lp({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}io.prototype=lp.prototype;function lp(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}lp.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function w_(e){e:for(var t=e.length,r=1,n=-1,o;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var Oc;function S_(e,t){var r=Ma(e,t);if(!r)return Oc=void 0,e.toPrecision(t);var n=r[0],o=r[1],i=o-(Oc=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,a=n.length;return i===a?n:i>a?n+new Array(i-a+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+Ma(e,Math.max(0,t+i-1))[0]}function dy(e,t){var r=Ma(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}var hy={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:x_,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>dy(e*100,t),r:dy,s:S_,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function yy(e){return e}var I_=Array.prototype.map,__=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function v_(e){var t=e.grouping===void 0||e.thousands===void 0?yy:g_(I_.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?yy:b_(I_.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",f=e.nan===void 0?"NaN":e.nan+"";function u(m,l){m=io(m);var p=m.fill,d=m.align,y=m.sign,x=m.symbol,w=m.zero,g=m.width,S=m.comma,b=m.precision,T=m.trim,I=m.type;I==="n"?(S=!0,I="g"):hy[I]||(b===void 0&&(b=12),T=!0,I="g"),(w||p==="0"&&d==="=")&&(w=!0,p="0",d="=");var v=(l&&l.prefix!==void 0?l.prefix:"")+(x==="$"?r:x==="#"&&/[boxX]/.test(I)?"0"+I.toLowerCase():""),O=(x==="$"?n:/[%p]/.test(I)?a:"")+(l&&l.suffix!==void 0?l.suffix:""),C=hy[I],E=/[defgprs%]/.test(I);b=b===void 0?6:/[gprs]/.test(I)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function A(F){var H=v,j=O,M,U,D;if(I==="c")j=C(F)+j,F="";else{F=+F;var oe=F<0||1/F<0;if(F=isNaN(F)?f:C(Math.abs(F),b),T&&(F=w_(F)),oe&&+F==0&&y!=="+"&&(oe=!1),H=(oe?y==="("?y:s:y==="-"||y==="("?"":y)+H,j=(I==="s"&&!isNaN(F)&&Oc!==void 0?__[8+Oc/3]:"")+j+(oe&&y==="("?")":""),E){for(M=-1,U=F.length;++MD||D>57){j=(D===46?o+F.slice(M+1):F.slice(M))+j,F=F.slice(0,M);break}}}S&&!w&&(F=t(F,1/0));var V=H.length+F.length+j.length,K=V>1)+H+F+j+K.slice(V);break;default:F=K+H+F+j;break}return i(F)}return A.toString=function(){return m+""},A}function c(m,l){var p=Math.max(-8,Math.min(8,Math.floor(oo(l)/3)))*3,d=Math.pow(10,-p),y=u((m=io(m),m.type="f",m),{suffix:__[8+p/3]});return function(x){return y(d*x)}}return{format:u,formatPrefix:c}}var pp,sn,mp;xy({thousands:",",grouping:[3],currency:["$",""]});function xy(e){return pp=v_(e),sn=pp.format,mp=pp.formatPrefix,pp}function gy(e){return Math.max(0,-oo(Math.abs(e)))}function by(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(oo(t)/3)))*3-oo(Math.abs(e)))}function wy(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,oo(t)-oo(e))+1}var ne=1e-6,dp=1e-12,ue=Math.PI,Ue=ue/2,Sy=ue/4,Ft=ue*2,Rt=180/ue,je=ue/180,de=Math.abs,fn=Math.atan,Wt=Math.atan2,te=Math.cos;var hp=Math.exp;var Oa=Math.log,yp=Math.pow,ee=Math.sin,ar=Math.sign||function(e){return e>0?1:e<0?-1:0},Ye=Math.sqrt,Ls=Math.tan;function xp(e){return e>1?0:e<-1?ue:Math.acos(e)}function mt(e){return e>1?Ue:e<-1?-Ue:Math.asin(e)}function Et(){}function gp(e,t){e&&M_.hasOwnProperty(e.type)&&M_[e.type](e,t)}var T_={Feature:function(e,t){gp(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,n=-1,o=r.length;++nue&&(e-=Math.round(e/Ft)*Ft),[e,t]}_y.invert=_y;function vy(e,t,r){return(e%=Ft)?t||r?kc(C_(e),A_(t,r)):C_(e):t||r?A_(t,r):_y}function R_(e){return function(t,r){return t+=e,de(t)>ue&&(t-=Math.round(t/Ft)*Ft),[t,r]}}function C_(e){var t=R_(e);return t.invert=R_(-e),t}function A_(e,t){var r=te(e),n=ee(e),o=te(t),i=ee(t);function a(s,f){var u=te(f),c=te(s)*u,m=ee(s)*u,l=ee(f),p=l*r+c*n;return[Wt(m*o-p*i,c*r-l*n),mt(p*o+m*i)]}return a.invert=function(s,f){var u=te(f),c=te(s)*u,m=ee(s)*u,l=ee(f),p=l*o-m*i;return[Wt(m*o+l*i,c*r+p*n),mt(p*r-c*n)]},a}function P_(e){e=vy(e[0]*je,e[1]*je,e.length>2?e[2]*je:0);function t(r){return r=e(r[0]*je,r[1]*je),r[0]*=Rt,r[1]*=Rt,r}return t.invert=function(r){return r=e.invert(r[0]*je,r[1]*je),r[0]*=Rt,r[1]*=Rt,r},t}function N_(e,t,r,n,o,i){if(r){var a=te(t),s=ee(t),f=n*r;o==null?(o=t+n*Ft,i=t-f/2):(o=k_(a,o),i=k_(a,i),(n>0?oi)&&(o+=n*Ft));for(var u,c=o;n>0?c>i:c1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function Vs(e,t){return de(e[0]-t[0])=0;--s)o.point((m=c[s])[0],m[1]);else n(l.x,l.p.x,-1,o);l=l.p}l=l.o,c=l.z,p=!p}while(!l.v);o.lineEnd()}}}function F_(e){if(t=e.length){for(var t,r=0,n=e[0],o;++r=0?1:-1,E=C*O,A=E>ue,F=x*I;if(f.add(Wt(F*C*ee(E),w*v+F*te(E))),a+=A?O+C*Ft:O,A^d>=r^b>=r){var H=Ds(ao(p),ao(S));Pc(H);var j=Ds(i,H);Pc(j);var M=(A^O>=0?-1:1)*mt(j[2]);(n>M||n===M&&(H[0]||H[1]))&&(s+=A^O>=0?1:-1)}}return(a<-ne||a0){for(f||(o.polygonStart(),f=!0),o.lineStart(),I=0;I1&&b&2&&T.push(T.pop().concat(T.shift())),c.push(T.filter(sP))}}return l}}function sP(e){return e.length>1}function fP(e,t){return((e=e.x)[0]<0?e[1]-Ue-ne:Ue-e[1])-((t=t.x)[0]<0?t[1]-Ue-ne:Ue-t[1])}var My=_p(function(){return!0},cP,lP,[-ue,-Ue]);function cP(e){var t=NaN,r=NaN,n=NaN,o;return{lineStart:function(){e.lineStart(),o=1},point:function(i,a){var s=i>0?ue:-ue,f=de(i-t);de(f-ue)0?Ue:-Ue),e.point(n,r),e.lineEnd(),e.lineStart(),e.point(s,r),e.point(i,r),o=0):n!==s&&f>=ue&&(de(t-n)ne?fn((ee(t)*(i=te(n))*ee(r)-ee(n)*(o=te(t))*ee(e))/(o*i*a)):(t+n)/2}function lP(e,t,r,n){var o;if(e==null)o=r*Ue,n.point(-ue,o),n.point(0,o),n.point(ue,o),n.point(ue,0),n.point(ue,-o),n.point(0,-o),n.point(-ue,-o),n.point(-ue,0),n.point(-ue,o);else if(de(e[0]-t[0])>ne){var i=e[0]0,o=de(t)>ne;function i(c,m,l,p){N_(p,e,r,l,c,m)}function a(c,m){return te(c)*te(m)>t}function s(c){var m,l,p,d,y;return{lineStart:function(){d=p=!1,y=1},point:function(x,w){var g=[x,w],S,b=a(x,w),T=n?b?0:u(x,w):b?u(x+(x<0?ue:-ue),w):0;if(!m&&(d=p=b)&&c.lineStart(),b!==p&&(S=f(m,g),(!S||Vs(m,S)||Vs(g,S))&&(g[2]=1)),b!==p)y=0,b?(c.lineStart(),S=f(g,m),c.point(S[0],S[1])):(S=f(m,g),c.point(S[0],S[1],2),c.lineEnd()),m=S;else if(o&&m&&n^b){var I;!(T&l)&&(I=f(g,m,!0))&&(y=0,n?(c.lineStart(),c.point(I[0][0],I[0][1]),c.point(I[1][0],I[1][1]),c.lineEnd()):(c.point(I[1][0],I[1][1]),c.lineEnd(),c.lineStart(),c.point(I[0][0],I[0][1],3)))}b&&(!m||!Vs(m,g))&&c.point(g[0],g[1]),m=g,p=b,l=T},lineEnd:function(){p&&c.lineEnd(),m=null},clean:function(){return y|(d&&p)<<1}}}function f(c,m,l){var p=ao(c),d=ao(m),y=[1,0,0],x=Ds(p,d),w=Cc(x,x),g=x[0],S=w-g*g;if(!S)return!l&&c;var b=t*w/S,T=-t*g/S,I=Ds(y,x),v=Ac(y,b),O=Ac(x,T);bp(v,O);var C=I,E=Cc(v,C),A=Cc(C,C),F=E*E-A*(Cc(v,v)-1);if(!(F<0)){var H=Ye(F),j=Ac(C,(-E-H)/A);if(bp(j,v),j=Rc(j),!l)return j;var M=c[0],U=m[0],D=c[1],oe=m[1],V;U0^j[1]<(de(j[0]-M)ue^(M<=j[0]&&j[0]<=U)){var J=Ac(C,(-E+H)/A);return bp(J,v),[j,Rc(J)]}}}function u(c,m){var l=n?e:ue-e,p=0;return c<-l?p|=1:c>l&&(p|=2),m<-l?p|=4:m>l&&(p|=8),p}return _p(a,s,i,n?[0,-e]:[-ue,e-ue])}function L_(e,t,r,n,o,i){var a=e[0],s=e[1],f=t[0],u=t[1],c=0,m=1,l=f-a,p=u-s,d;if(d=r-a,!(!l&&d>0)){if(d/=l,l<0){if(d0){if(d>m)return;d>c&&(c=d)}if(d=o-a,!(!l&&d<0)){if(d/=l,l<0){if(d>m)return;d>c&&(c=d)}else if(l>0){if(d0)){if(d/=p,p<0){if(d0){if(d>m)return;d>c&&(c=d)}if(d=i-s,!(!p&&d<0)){if(d/=p,p<0){if(d>m)return;d>c&&(c=d)}else if(p>0){if(d0&&(e[0]=a+c*l,e[1]=s+c*p),m<1&&(t[0]=a+m*l,t[1]=s+m*p),!0}}}}}var Nc=1e9,vp=-Nc;function Us(e,t,r,n){function o(u,c){return e<=u&&u<=r&&t<=c&&c<=n}function i(u,c,m,l){var p=0,d=0;if(u==null||(p=a(u,m))!==(d=a(c,m))||f(u,c)<0^m>0)do l.point(p===0||p===3?e:r,p>1?n:t);while((p=(p+m+4)%4)!==d);else l.point(c[0],c[1])}function a(u,c){return de(u[0]-e)0?0:3:de(u[0]-r)0?2:1:de(u[1]-t)0?1:0:c>0?3:2}function s(u,c){return f(u.x,c.x)}function f(u,c){var m=a(u,1),l=a(c,1);return m!==l?m-l:m===0?c[1]-u[1]:m===1?u[0]-c[0]:m===2?u[1]-c[1]:c[0]-u[0]}return function(u){var c=u,m=wp(),l,p,d,y,x,w,g,S,b,T,I,v={point:O,lineStart:F,lineEnd:H,polygonStart:E,polygonEnd:A};function O(M,U){o(M,U)&&c.point(M,U)}function C(){for(var M=0,U=0,D=p.length;Un&&(ye-Z)*(n-J)>(B-J)*(e-Z)&&++M:B<=n&&(ye-Z)*(n-J)<(B-J)*(e-Z)&&--M;return M}function E(){c=m,l=[],p=[],I=!0}function A(){var M=C(),U=I&&M,D=(l=Rs(l)).length;(U||D)&&(u.polygonStart(),U&&(u.lineStart(),i(null,null,1,u),u.lineEnd()),D&&Ip(l,s,M,i,u),u.polygonEnd()),c=u,l=p=d=null}function F(){v.point=j,p&&p.push(d=[]),T=!0,b=!1,g=S=NaN}function H(){l&&(j(y,x),w&&b&&m.rejoin(),l.push(m.result())),v.point=O,b&&c.lineEnd()}function j(M,U){var D=o(M,U);if(p&&d.push([M,U]),T)y=M,x=U,w=D,T=!1,D&&(c.lineStart(),c.point(M,U));else if(D&&b)c.point(M,U);else{var oe=[g=Math.max(vp,Math.min(Nc,g)),S=Math.max(vp,Math.min(Nc,S))],V=[M=Math.max(vp,Math.min(Nc,M)),U=Math.max(vp,Math.min(Nc,U))];L_(oe,V,e,t,r,n)?(b||(c.lineStart(),c.point(oe[0],oe[1])),c.point(V[0],V[1]),D||c.lineEnd(),I=!1):D&&(c.lineStart(),c.point(M,U),I=!1)}g=M,S=U,b=D}return v}}var Fc=e=>e;var Oy=new Ur,Ry=new Ur,D_,V_,Cy,Ay,Ni={point:Et,lineStart:Et,lineEnd:Et,polygonStart:function(){Ni.lineStart=pP,Ni.lineEnd=dP},polygonEnd:function(){Ni.lineStart=Ni.lineEnd=Ni.point=Et,Oy.add(de(Ry)),Ry=new Ur},result:function(){var e=Oy/2;return Oy=new Ur,e}};function pP(){Ni.point=mP}function mP(e,t){Ni.point=U_,D_=Cy=e,V_=Ay=t}function U_(e,t){Ry.add(Ay*e-Cy*t),Cy=e,Ay=t}function dP(){U_(D_,V_)}var Py=Ni;var js=1/0,Tp=js,Ec=-js,Mp=Ec,hP={point:yP,lineStart:Et,lineEnd:Et,polygonStart:Et,polygonEnd:Et,result:function(){var e=[[js,Tp],[Ec,Mp]];return Ec=Mp=-(Tp=js=1/0),e}};function yP(e,t){eEc&&(Ec=e),tMp&&(Mp=t)}var Bs=hP;var ky=0,Ny=0,$c=0,Op=0,Rp=0,Gs=0,Fy=0,Ey=0,Lc=0,G_,z_,so,fo,Ln={point:Ra,lineStart:j_,lineEnd:B_,polygonStart:function(){Ln.lineStart=bP,Ln.lineEnd=wP},polygonEnd:function(){Ln.point=Ra,Ln.lineStart=j_,Ln.lineEnd=B_},result:function(){var e=Lc?[Fy/Lc,Ey/Lc]:Gs?[Op/Gs,Rp/Gs]:$c?[ky/$c,Ny/$c]:[NaN,NaN];return ky=Ny=$c=Op=Rp=Gs=Fy=Ey=Lc=0,e}};function Ra(e,t){ky+=e,Ny+=t,++$c}function j_(){Ln.point=xP}function xP(e,t){Ln.point=gP,Ra(so=e,fo=t)}function gP(e,t){var r=e-so,n=t-fo,o=Ye(r*r+n*n);Op+=o*(so+e)/2,Rp+=o*(fo+t)/2,Gs+=o,Ra(so=e,fo=t)}function B_(){Ln.point=Ra}function bP(){Ln.point=SP}function wP(){K_(G_,z_)}function SP(e,t){Ln.point=K_,Ra(G_=so=e,z_=fo=t)}function K_(e,t){var r=e-so,n=t-fo,o=Ye(r*r+n*n);Op+=o*(so+e)/2,Rp+=o*(fo+t)/2,Gs+=o,o=fo*e-so*t,Fy+=o*(so+e),Ey+=o*(fo+t),Lc+=o*3,Ra(so=e,fo=t)}var $y=Ln;function Cp(e){this._context=e}Cp.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:{this._context.moveTo(e,t),this._point=1;break}case 1:{this._context.lineTo(e,t);break}default:{this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,Ft);break}}},result:Et};var Dy=new Ur,Ly,q_,H_,Dc,Vc,Ap={point:Et,lineStart:function(){Ap.point=IP},lineEnd:function(){Ly&&Y_(q_,H_),Ap.point=Et},polygonStart:function(){Ly=!0},polygonEnd:function(){Ly=null},result:function(){var e=+Dy;return Dy=new Ur,e}};function IP(e,t){Ap.point=Y_,q_=Dc=e,H_=Vc=t}function Y_(e,t){Dc-=e,Vc-=t,Dy.add(Ye(Dc*Dc+Vc*Vc)),Dc=e,Vc=t}var Vy=Ap;var W_,Pp,X_,Z_,zs=class{constructor(t){this._append=t==null?Q_:_P(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,r){switch(this._point){case 0:{this._append`M${t},${r}`,this._point=1;break}case 1:{this._append`L${t},${r}`;break}default:{if(this._append`M${t},${r}`,this._radius!==X_||this._append!==Pp){let n=this._radius,o=this._;this._="",this._append`m0,${n}a${n},${n} 0 1,1 0,${-2*n}a${n},${n} 0 1,1 0,${2*n}z`,X_=n,Pp=this._append,Z_=this._,this._=o}this._+=Z_;break}}}result(){let t=this._;return this._="",t.length?t:null}};function Q_(e){let t=1;this._+=e[0];for(let r=e.length;t=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return Q_;if(t!==W_){let r=10**t;W_=t,Pp=function(o){let i=1;this._+=o[0];for(let a=o.length;i=0))throw new RangeError(`invalid digits: ${s}`);r=f}return t===null&&(i=new zs(r)),a},a.projection(e).digits(r).context(t)}function qs(e){return{stream:Hs(e)}}function Hs(e){return function(t){var r=new Uy;for(var n in e)r[n]=e[n];return r.stream=t,r}}function Uy(){}Uy.prototype={constructor:Uy,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function jy(e,t,r){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),n!=null&&e.clipExtent(null),$n(r,e.stream(Bs)),t(Bs.result()),n!=null&&e.clipExtent(n),e}function Uc(e,t,r){return jy(e,function(n){var o=t[1][0]-t[0][0],i=t[1][1]-t[0][1],a=Math.min(o/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),s=+t[0][0]+(o-a*(n[1][0]+n[0][0]))/2,f=+t[0][1]+(i-a*(n[1][1]+n[0][1]))/2;e.scale(150*a).translate([s,f])},r)}function kp(e,t,r){return Uc(e,[[0,0],t],r)}function Np(e,t,r){return jy(e,function(n){var o=+t,i=o/(n[1][0]-n[0][0]),a=(o-i*(n[1][0]+n[0][0]))/2,s=-i*n[0][1];e.scale(150*i).translate([a,s])},r)}function Fp(e,t,r){return jy(e,function(n){var o=+t,i=o/(n[1][1]-n[0][1]),a=-i*n[0][0],s=(o-i*(n[1][1]+n[0][1]))/2;e.scale(150*i).translate([a,s])},r)}var J_=16,vP=te(30*je);function By(e,t){return+t?MP(e,t):TP(e)}function TP(e){return Hs({point:function(t,r){t=e(t,r),this.stream.point(t[0],t[1])}})}function MP(e,t){function r(n,o,i,a,s,f,u,c,m,l,p,d,y,x){var w=u-n,g=c-o,S=w*w+g*g;if(S>4*t&&y--){var b=a+l,T=s+p,I=f+d,v=Ye(b*b+T*T+I*I),O=mt(I/=v),C=de(de(I)-1)t||de((w*H+g*j)/S-.5)>.3||a*l+s*p+f*d2?M[2]%360*je:0,H()):[s*Rt,f*Rt,u*Rt]},A.angle=function(M){return arguments.length?(m=M%360*je,H()):m*Rt},A.reflectX=function(M){return arguments.length?(l=M?-1:1,H()):l<0},A.reflectY=function(M){return arguments.length?(p=M?-1:1,H()):p<0},A.precision=function(M){return arguments.length?(I=By(v,T=M*M),j()):Ye(T)},A.fitExtent=function(M,U){return Uc(A,M,U)},A.fitSize=function(M,U){return kp(A,M,U)},A.fitWidth=function(M,U){return Np(A,M,U)},A.fitHeight=function(M,U){return Fp(A,M,U)};function H(){var M=ev(r,0,0,l,p,m).apply(null,t(i,a)),U=ev(r,n-M[0],o-M[1],l,p,m);return c=vy(s,f,u),v=kc(t,U),O=kc(c,v),I=By(v,T),j()}function j(){return C=E=null,A}return function(){return t=e.apply(this,arguments),A.invert=t.invert&&F,H()}}function Ys(e){var t=0,r=ue/3,n=Gy(e),o=n(t,r);return o.parallels=function(i){return arguments.length?n(t=i[0]*je,r=i[1]*je):[t*Rt,r*Rt]},o}function tv(e){var t=te(e);function r(n,o){return[n*t,ee(o)/t]}return r.invert=function(n,o){return[n/t,mt(o*t)]},r}function rv(e,t){var r=ee(e),n=(r+ee(t))/2;if(de(n)=.12&&x<.234&&y>=-.425&&y<-.214?o:x>=.166&&x<.234&&y>=-.214&&y<-.115?a:r).invert(l)},c.stream=function(l){return e&&t===l?e:e=AP([r.stream(t=l),o.stream(l),a.stream(l)])},c.precision=function(l){return arguments.length?(r.precision(l),o.precision(l),a.precision(l),m()):r.precision()},c.scale=function(l){return arguments.length?(r.scale(l),o.scale(l*.35),a.scale(l),c.translate(r.translate())):r.scale()},c.translate=function(l){if(!arguments.length)return r.translate();var p=r.scale(),d=+l[0],y=+l[1];return n=r.translate(l).clipExtent([[d-.455*p,y-.238*p],[d+.455*p,y+.238*p]]).stream(u),i=o.translate([d-.307*p,y+.201*p]).clipExtent([[d-.425*p+ne,y+.12*p+ne],[d-.214*p-ne,y+.234*p-ne]]).stream(u),s=a.translate([d-.205*p,y+.212*p]).clipExtent([[d-.214*p+ne,y+.166*p+ne],[d-.115*p-ne,y+.234*p-ne]]).stream(u),m()},c.fitExtent=function(l,p){return Uc(c,l,p)},c.fitSize=function(l,p){return kp(c,l,p)},c.fitWidth=function(l,p){return Np(c,l,p)},c.fitHeight=function(l,p){return Fp(c,l,p)};function m(){return e=t=null,c}return c.scale(1070)}function Ep(e){return function(t,r){var n=te(t),o=te(r),i=e(n*o);return i===1/0?[2,0]:[i*o*ee(t),i*ee(r)]}}function co(e){return function(t,r){var n=Ye(t*t+r*r),o=e(n),i=ee(o),a=te(o);return[Wt(t*i,n*a),mt(n&&r*i/n)]}}var Ky=Ep(function(e){return Ye(2/(1+e))});Ky.invert=co(function(e){return 2*mt(e/2)});function qy(){return Xt(Ky).scale(124.75).clipAngle(180-.001)}var Hy=Ep(function(e){return(e=xp(e))&&e/ee(e)});Hy.invert=co(function(e){return e});function Yy(){return Xt(Hy).scale(79.4188).clipAngle(180-.001)}function Ws(e,t){return[e,Oa(Ls((Ue+t)/2))]}Ws.invert=function(e,t){return[e,2*fn(hp(t))-Ue]};function Wy(){return Xy(Ws).scale(961/Ft)}function Xy(e){var t=Xt(e),r=t.center,n=t.scale,o=t.translate,i=t.clipExtent,a=null,s,f,u;t.scale=function(m){return arguments.length?(n(m),c()):n()},t.translate=function(m){return arguments.length?(o(m),c()):o()},t.center=function(m){return arguments.length?(r(m),c()):r()},t.clipExtent=function(m){return arguments.length?(m==null?a=s=f=u=null:(a=+m[0][0],s=+m[0][1],f=+m[1][0],u=+m[1][1]),c()):a==null?null:[[a,s],[f,u]]};function c(){var m=ue*n(),l=t(P_(t.rotate()).invert([0,0]));return i(a==null?[[l[0]-m,l[1]-m],[l[0]+m,l[1]+m]]:e===Ws?[[Math.max(l[0]-m,a),s],[Math.min(l[0]+m,f),u]]:[[a,Math.max(l[1]-m,s)],[f,Math.min(l[1]+m,u)]])}return c()}function $p(e){return Ls((Ue+e)/2)}function nv(e,t){var r=te(e),n=e===t?ee(e):Oa(r/te(t))/Oa($p(t)/$p(e)),o=r*yp($p(e),n)/n;if(!n)return Ws;function i(a,s){o>0?s<-Ue+ne&&(s=-Ue+ne):s>Ue-ne&&(s=Ue-ne);var f=o/yp($p(s),n);return[f*ee(n*a),o-f*te(n*a)]}return i.invert=function(a,s){var f=o-s,u=ar(n)*Ye(a*a+f*f),c=Wt(a,de(f))*ar(f);return f*n<0&&(c-=ue*ar(a)*ar(f)),[c/n,2*fn(yp(o/u,1/n))-Ue]},i}function Zy(){return Ys(nv).scale(109.5).parallels([30,30])}function Xs(e,t){return[e,t]}Xs.invert=Xs;function Qy(){return Xt(Xs).scale(152.63)}function ov(e,t){var r=te(e),n=e===t?ee(e):(r-te(t))/(t-e),o=r/n+e;if(de(n)2?n[2]+90:90]):(n=r(),[n[0],n[1],n[2]-90])},r([0,0,90]).scale(159.155)}function Mt(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function qc(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}var Hc=Symbol("implicit");function Ca(){var e=new pr,t=[],r=[],n=Hc;function o(i){let a=e.get(i);if(a===void 0){if(n!==Hc)return n;e.set(i,a=t.push(i)-1)}return r[a%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new pr;for(let a of i)e.has(a)||e.set(a,t.push(a)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return Ca(t,r).unknown(n)},Mt.apply(o,arguments),o}function Ei(){var e=Ca().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,a,s=!1,f=0,u=0,c=.5;delete e.unknown;function m(){var l=t().length,p=ot&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function NP(e,t,r){var n=e[0],o=e[1],i=t[0],a=t[1];return o2?FP:NP,f=u=null,m}function m(l){return l==null||isNaN(l=+l)?i:(f||(f=s(e.map(n),t,r)))(n(a(l)))}return m.invert=function(l){return a(o((u||(u=s(t,e.map(n),et)))(l)))},m.domain=function(l){return arguments.length?(e=Array.from(l,Zs),c()):e.slice()},m.range=function(l){return arguments.length?(t=Array.from(l),c()):t.slice()},m.rangeRound=function(l){return t=Array.from(l),r=_a,c()},m.clamp=function(l){return arguments.length?(a=l?!0:Mr,c()):a!==Mr},m.interpolate=function(l){return arguments.length?(r=l,c()):r},m.unknown=function(l){return arguments.length?(i=l,m):i},function(l,p){return n=l,o=p,c()}}function Yc(){return Aa()(Mr,Mr)}function mx(e,t,r,n){var o=Os(e,t,r),i;switch(n=io(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=by(o,a))&&(n.precision=i),mp(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=wy(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=gy(o))&&(n.precision=i-(n.type==="%")*2);break}}return sn(n)}function Yo(e){var t=e.domain;return e.ticks=function(r){var n=t();return Uo(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return mx(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,a=n[o],s=n[i],f,u,c=10;for(s0;){if(u=sc(a,s,r),u===f)return n[o]=a,n[i]=s,t(n);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;f=u}return e},e}function Pa(){var e=Yc();return e.copy=function(){return uo(e,Pa())},Mt.apply(e,arguments),Yo(e)}function Wc(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,Zs),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Wc(e).unknown(t)},e=arguments.length?Array.from(e,Zs):[0,1],Yo(r)}function Xc(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],a;return iMath.pow(e,t)}function VP(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function cv(e){return(t,r)=>-e(-t,r)}function dx(e){let t=e(sv,fv),r=t.domain,n=10,o,i;function a(){return o=VP(n),i=DP(n),r()[0]<0?(o=cv(o),i=cv(i),e(EP,$P)):e(sv,fv),t}return t.base=function(s){return arguments.length?(n=+s,a()):n},t.domain=function(s){return arguments.length?(r(s),a()):r()},t.ticks=s=>{let f=r(),u=f[0],c=f[f.length-1],m=c0){for(;l<=p;++l)for(d=1;dc)break;w.push(y)}}else for(;l<=p;++l)for(d=n-1;d>=1;--d)if(y=l>0?d/i(-l):d*i(l),!(yc)break;w.push(y)}w.length*2{if(s==null&&(s=10),f==null&&(f=n===10?"s":","),typeof f!="function"&&(!(n%1)&&(f=io(f)).precision==null&&(f.trim=!0),f=sn(f)),s===1/0)return f;let u=Math.max(1,n*s/t.ticks().length);return c=>{let m=c/i(Math.round(o(c)));return m*nr(Xc(r(),{floor:s=>i(Math.floor(o(s))),ceil:s=>i(Math.ceil(o(s)))})),t}function Zc(){let e=dx(Aa()).domain([1,10]);return e.copy=()=>uo(e,Zc()).base(e.base()),Mt.apply(e,arguments),e}function uv(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function lv(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function hx(e){var t=1,r=e(uv(t),lv(t));return r.constant=function(n){return arguments.length?e(uv(t=+n),lv(t)):t},Yo(r)}function Qc(){var e=hx(Aa());return e.copy=function(){return uo(e,Qc()).constant(e.constant())},Mt.apply(e,arguments)}function pv(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function UP(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function jP(e){return e<0?-e*e:e*e}function yx(e){var t=e(Mr,Mr),r=1;function n(){return r===1?e(Mr,Mr):r===.5?e(UP,jP):e(pv(r),pv(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},Yo(t)}function Jc(){var e=yx(Aa());return e.copy=function(){return uo(e,Jc()).exponent(e.exponent())},Mt.apply(e,arguments),e}function eu(){var e=[],t=[],r=[],n;function o(){var a=0,s=Math.max(1,t.length);for(r=new Array(s-1);++a0?r[s-1]:e[0],s(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{let a=o(i),s=o.ceil(i);return i-a(t(i=new Date(+i),a==null?1:Math.floor(a)),i),o.range=(i,a,s)=>{let f=[];if(i=o.ceil(i),s=s==null?1:Math.floor(s),!(i0))return f;let u;do f.push(u=new Date(+i)),t(i,s),e(i);while(uqe(a=>{if(a>=a)for(;e(a),!i(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;t(a,-1),!i(a););else for(;--s>=0;)for(;t(a,1),!i(a););}),r&&(o.count=(i,a)=>(xx.setTime(+i),gx.setTime(+a),e(xx),e(gx),Math.floor(r(xx,gx))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?a=>n(a)%i===0:a=>o.count(0,a)%i===0):o)),o}var ru=qe(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ru.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?qe(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):ru);var ble=ru.range;var $t=qe(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),mv=$t.range;var Wo=qe(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),BP=Wo.range,Xo=qe(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),GP=Xo.range;var Zo=qe(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),zP=Zo.range,Qo=qe(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),KP=Qo.range;var cn=qe(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),qP=cn.range,Fa=qe(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),HP=Fa.range,Ea=qe(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),YP=Ea.range;function $a(e){return qe(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var jr=$a(0),$i=$a(1),Dp=$a(2),Vp=$a(3),po=$a(4),Up=$a(5),jp=$a(6),hv=jr.range,WP=$i.range,XP=Dp.range,ZP=Vp.range,QP=po.range,JP=Up.range,ek=jp.range;function La(e){return qe(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Br=La(0),Li=La(1),Bp=La(2),Gp=La(3),mo=La(4),zp=La(5),Kp=La(6),yv=Br.range,tk=Li.range,rk=Bp.range,nk=Gp.range,ok=mo.range,ik=zp.range,ak=Kp.range;var Jo=qe(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),sk=Jo.range,ei=qe(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),fk=ei.range;var sr=qe(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());sr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qe(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var ck=sr.range,fr=qe(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());fr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qe(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var uk=fr.range;function gv(e,t,r,n,o,i){let a=[[$t,1,1e3],[$t,5,5*1e3],[$t,15,15*1e3],[$t,30,30*1e3],[i,1,6e4],[i,5,5*6e4],[i,15,15*6e4],[i,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,c,m){let l=cx).right(a,l);if(p===a.length)return e.every(Os(u/31536e6,c/31536e6,m));if(p===0)return ru.every(Math.max(Os(u,c,m),1));let[d,y]=a[l/a[p-1][2]53)return null;"w"in $||($.w=1),"Z"in $?(G=vx(ou($.y,0,1)),ae=G.getUTCDay(),G=ae>4||ae===0?Li.ceil(G):Li(G),G=Fa.offset(G,($.V-1)*7),$.y=G.getUTCFullYear(),$.m=G.getUTCMonth(),$.d=G.getUTCDate()+($.w+6)%7):(G=_x(ou($.y,0,1)),ae=G.getDay(),G=ae>4||ae===0?$i.ceil(G):$i(G),G=cn.offset(G,($.V-1)*7),$.y=G.getFullYear(),$.m=G.getMonth(),$.d=G.getDate()+($.w+6)%7)}else("W"in $||"U"in $)&&("w"in $||($.w="u"in $?$.u%7:"W"in $?1:0),ae="Z"in $?vx(ou($.y,0,1)).getUTCDay():_x(ou($.y,0,1)).getDay(),$.m=0,$.d="W"in $?($.w+6)%7+$.W*7-(ae+5)%7:$.w+$.U*7-(ae+6)%7);return"Z"in $?($.H+=$.Z/100|0,$.M+=$.Z%100,vx($)):_x($)}}function O(L,Q,re,$){for(var ke=0,G=Q.length,ae=re.length,xe,Ge;ke=ae)return-1;if(xe=Q.charCodeAt(ke++),xe===37){if(xe=Q.charAt(ke++),Ge=T[xe in bv?Q.charAt(ke++):xe],!Ge||($=Ge(L,re,$))<0)return-1}else if(xe!=re.charCodeAt($++))return-1}return $}function C(L,Q,re){var $=u.exec(Q.slice(re));return $?(L.p=c.get($[0].toLowerCase()),re+$[0].length):-1}function E(L,Q,re){var $=p.exec(Q.slice(re));return $?(L.w=d.get($[0].toLowerCase()),re+$[0].length):-1}function A(L,Q,re){var $=m.exec(Q.slice(re));return $?(L.w=l.get($[0].toLowerCase()),re+$[0].length):-1}function F(L,Q,re){var $=w.exec(Q.slice(re));return $?(L.m=g.get($[0].toLowerCase()),re+$[0].length):-1}function H(L,Q,re){var $=y.exec(Q.slice(re));return $?(L.m=x.get($[0].toLowerCase()),re+$[0].length):-1}function j(L,Q,re){return O(L,t,Q,re)}function M(L,Q,re){return O(L,r,Q,re)}function U(L,Q,re){return O(L,n,Q,re)}function D(L){return a[L.getDay()]}function oe(L){return i[L.getDay()]}function V(L){return f[L.getMonth()]}function K(L){return s[L.getMonth()]}function Y(L){return o[+(L.getHours()>=12)]}function Z(L){return 1+~~(L.getMonth()/3)}function J(L){return a[L.getUTCDay()]}function ye(L){return i[L.getUTCDay()]}function B(L){return f[L.getUTCMonth()]}function W(L){return s[L.getUTCMonth()]}function X(L){return o[+(L.getUTCHours()>=12)]}function le(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var Q=I(L+="",S);return Q.toString=function(){return L},Q},parse:function(L){var Q=v(L+="",!1);return Q.toString=function(){return L},Q},utcFormat:function(L){var Q=I(L+="",b);return Q.toString=function(){return L},Q},utcParse:function(L){var Q=v(L+="",!0);return Q.toString=function(){return L},Q}}}var bv={"-":"",_:" ",0:"0"},Lt=/^\s*\d+/,pk=/^%/,mk=/[\\^$*+?|[\]().{}]/g;function Ne(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i[t.toLowerCase(),r]))}function hk(e,t,r){var n=Lt.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function yk(e,t,r){var n=Lt.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function xk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function gk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function bk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function wv(e,t,r){var n=Lt.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function Sv(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function wk(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function Sk(e,t,r){var n=Lt.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Ik(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function Iv(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function _k(e,t,r){var n=Lt.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function _v(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function vk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Tk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Mk(e,t,r){var n=Lt.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Ok(e,t,r){var n=Lt.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Rk(e,t,r){var n=pk.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Ck(e,t,r){var n=Lt.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Ak(e,t,r){var n=Lt.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function vv(e,t){return Ne(e.getDate(),t,2)}function Pk(e,t){return Ne(e.getHours(),t,2)}function kk(e,t){return Ne(e.getHours()%12||12,t,2)}function Nk(e,t){return Ne(1+cn.count(sr(e),e),t,3)}function Cv(e,t){return Ne(e.getMilliseconds(),t,3)}function Fk(e,t){return Cv(e,t)+"000"}function Ek(e,t){return Ne(e.getMonth()+1,t,2)}function $k(e,t){return Ne(e.getMinutes(),t,2)}function Lk(e,t){return Ne(e.getSeconds(),t,2)}function Dk(e){var t=e.getDay();return t===0?7:t}function Vk(e,t){return Ne(jr.count(sr(e)-1,e),t,2)}function Av(e){var t=e.getDay();return t>=4||t===0?po(e):po.ceil(e)}function Uk(e,t){return e=Av(e),Ne(po.count(sr(e),e)+(sr(e).getDay()===4),t,2)}function jk(e){return e.getDay()}function Bk(e,t){return Ne($i.count(sr(e)-1,e),t,2)}function Gk(e,t){return Ne(e.getFullYear()%100,t,2)}function zk(e,t){return e=Av(e),Ne(e.getFullYear()%100,t,2)}function Kk(e,t){return Ne(e.getFullYear()%1e4,t,4)}function qk(e,t){var r=e.getDay();return e=r>=4||r===0?po(e):po.ceil(e),Ne(e.getFullYear()%1e4,t,4)}function Hk(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Ne(t/60|0,"0",2)+Ne(t%60,"0",2)}function Tv(e,t){return Ne(e.getUTCDate(),t,2)}function Yk(e,t){return Ne(e.getUTCHours(),t,2)}function Wk(e,t){return Ne(e.getUTCHours()%12||12,t,2)}function Xk(e,t){return Ne(1+Fa.count(fr(e),e),t,3)}function Pv(e,t){return Ne(e.getUTCMilliseconds(),t,3)}function Zk(e,t){return Pv(e,t)+"000"}function Qk(e,t){return Ne(e.getUTCMonth()+1,t,2)}function Jk(e,t){return Ne(e.getUTCMinutes(),t,2)}function e9(e,t){return Ne(e.getUTCSeconds(),t,2)}function t9(e){var t=e.getUTCDay();return t===0?7:t}function r9(e,t){return Ne(Br.count(fr(e)-1,e),t,2)}function kv(e){var t=e.getUTCDay();return t>=4||t===0?mo(e):mo.ceil(e)}function n9(e,t){return e=kv(e),Ne(mo.count(fr(e),e)+(fr(e).getUTCDay()===4),t,2)}function o9(e){return e.getUTCDay()}function i9(e,t){return Ne(Li.count(fr(e)-1,e),t,2)}function a9(e,t){return Ne(e.getUTCFullYear()%100,t,2)}function s9(e,t){return e=kv(e),Ne(e.getUTCFullYear()%100,t,2)}function f9(e,t){return Ne(e.getUTCFullYear()%1e4,t,4)}function c9(e,t){var r=e.getUTCDay();return e=r>=4||r===0?mo(e):mo.ceil(e),Ne(e.getUTCFullYear()%1e4,t,4)}function u9(){return"+0000"}function Mv(){return"%"}function Ov(e){return+e}function Rv(e){return Math.floor(+e/1e3)}var Qs,Js,Nv,ho,Fv;Mx({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function Mx(e){return Qs=Tx(e),Js=Qs.format,Nv=Qs.parse,ho=Qs.utcFormat,Fv=Qs.utcParse,Qs}function l9(e){return new Date(e)}function p9(e){return e instanceof Date?+e:+new Date(+e)}function qp(e,t,r,n,o,i,a,s,f,u){var c=Yc(),m=c.invert,l=c.domain,p=u(".%L"),d=u(":%S"),y=u("%I:%M"),x=u("%I %p"),w=u("%a %d"),g=u("%b %d"),S=u("%B"),b=u("%Y");function T(I){return(f(I)ry(e[e.length-1]);var Jp=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(z),em=ie(Jp);var tm=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(z),rm=ie(tm);var nm=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(z),om=ie(nm);var im=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(z),am=ie(im);var cu=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(z),ef=ie(cu);var sm=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(z),fm=ie(sm);var uu=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(z),tf=ie(uu);var cm=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(z),um=ie(cm);var lm=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(z),pm=ie(lm);var mm=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(z),dm=ie(mm);var hm=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(z),ym=ie(hm);var xm=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(z),gm=ie(xm);var bm=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(z),wm=ie(bm);var Sm=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(z),Im=ie(Sm);var _m=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(z),vm=ie(_m);var Tm=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(z),Mm=ie(Tm);var Om=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(z),Rm=ie(Om);var Cm=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(z),Am=ie(Cm);var Pm=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(z),km=ie(Pm);var Nm=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(z),Fm=ie(Nm);var Em=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(z),$m=ie(Em);var Lm=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(z),Dm=ie(Lm);var Vm=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(z),Um=ie(Vm);var jm=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(z),Bm=ie(jm);var Gm=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(z),zm=ie(Gm);var Km=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(z),qm=ie(Km);var Hm=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(z),Ym=ie(Hm);function Wm(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-e*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-e*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-e*2475.67)))))))+")"}var Xm=Fs(dr(300,.5,0),dr(-240,.5,1));var Qm=Fs(dr(-100,.75,.35),dr(80,1.5,.8)),Jm=Fs(dr(260,.75,.35),dr(80,1.5,.8)),Zm=dr();function ed(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return Zm.h=360*e-100,Zm.s=1.5-1.5*t,Zm.l=.8-.9*t,Zm+""}var td=on(),m9=Math.PI/3,d9=Math.PI*2/3;function rd(e){var t;return e=(.5-e)*Math.PI,td.r=255*(t=Math.sin(e))*t,td.g=255*(t=Math.sin(e+m9))*t,td.b=255*(t=Math.sin(e+d9))*t,td+""}function nd(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-e*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+e*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-e*6838.66)))))))+")"}function od(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var id=od(z("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),ad=od(z("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),sd=od(z("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),fd=od(z("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function Da(e){return function(){return e}}var Dx=Math.cos;var rf=Math.min,lu=Math.sin,Fe=Math.sqrt,Vx=1e-12,Va=Math.PI,zhe=Va/2,nf=2*Va;function Ev(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new ki(t)}var Yhe=Array.prototype.slice;function $v(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Lv(e){this._context=e}Lv.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ua(e){return new Lv(e)}function Dv(e){return e[0]}function Vv(e){return e[1]}function Ux(e,t){var r=Da(!0),n=null,o=Ua,i=null,a=Ev(s);e=typeof e=="function"?e:e===void 0?Dv:Da(e),t=typeof t=="function"?t:t===void 0?Vv:Da(t);function s(f){var u,c=(f=$v(f)).length,m,l=!1,p;for(n==null&&(i=o(p=a())),u=0;u<=c;++u)!(u0)for(var n=e[0],o=t[0],i=e[r]-n,a=t[r]-o,s=-1,f;++s<=r;)f=s/r,this._basis.point(this._beta*e[s]+(1-this._beta)*(n+f*i),this._beta*t[s]+(1-this._beta)*(o+f*a));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var Wx=(function e(t){function r(n){return t===1?new _u(n):new zv(n,t)}return r.beta=function(n){return e(+n)},r})(.85);function sf(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function ld(e,t){this._context=e,this._k=(1-t)/6}ld.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:sf(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:sf(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Xx=(function e(t){function r(n){return new ld(n,t)}return r.tension=function(n){return e(+n)},r})(0);function pd(e,t){this._context=e,this._k=(1-t)/6}pd.prototype={areaStart:pn,areaEnd:pn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:sf(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Zx=(function e(t){function r(n){return new pd(n,t)}return r.tension=function(n){return e(+n)},r})(0);function md(e,t){this._context=e,this._k=(1-t)/6}md.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:sf(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Qx=(function e(t){function r(n){return new md(n,t)}return r.tension=function(n){return e(+n)},r})(0);function vu(e,t,r){var n=e._x1,o=e._y1,i=e._x2,a=e._y2;if(e._l01_a>Vx){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,f=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/f,o=(o*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/f}if(e._l23_a>Vx){var u=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,c=3*e._l23_a*(e._l23_a+e._l12_a);i=(i*u+e._x1*e._l23_2a-t*e._l12_2a)/c,a=(a*u+e._y1*e._l23_2a-r*e._l12_2a)/c}e._context.bezierCurveTo(n,o,i,a,e._x2,e._y2)}function Kv(e,t){this._context=e,this._alpha=t}Kv.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:vu(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Jx=(function e(t){function r(n){return t?new Kv(n,t):new ld(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function qv(e,t){this._context=e,this._alpha=t}qv.prototype={areaStart:pn,areaEnd:pn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:vu(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var eg=(function e(t){function r(n){return t?new qv(n,t):new pd(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function Hv(e,t){this._context=e,this._alpha=t}Hv.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:vu(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var tg=(function e(t){function r(n){return t?new Hv(n,t):new md(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function Yv(e){this._context=e}Yv.prototype={areaStart:pn,areaEnd:pn,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function rg(e){return new Yv(e)}function Wv(e){return e<0?-1:1}function Xv(e,t,r){var n=e._x1-e._x0,o=t-e._x1,i=(e._y1-e._y0)/(n||o<0&&-0),a=(r-e._y1)/(o||n<0&&-0),s=(i*o+a*n)/(n+o);return(Wv(i)+Wv(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(s))||0}function Zv(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function ng(e,t,r){var n=e._x0,o=e._y0,i=e._x1,a=e._y1,s=(i-n)/3;e._context.bezierCurveTo(n+s,o+s*t,i-s,a-s*r,i,a)}function dd(e){this._context=e}dd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ng(this,this._t0,Zv(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,ng(this,Zv(this,r=Xv(this,e,t)),r);break;default:ng(this,this._t0,r=Xv(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function Qv(e){this._context=new Jv(e)}(Qv.prototype=Object.create(dd.prototype)).point=function(e,t){dd.prototype.point.call(this,t,e)};function Jv(e){this._context=e}Jv.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,o,i){this._context.bezierCurveTo(t,e,n,r,i,o)}};function og(e){return new dd(e)}function ig(e){return new Qv(e)}function t6(e){this._context=e}t6.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=e6(e),o=e6(t),i=0,a=1;a=0;--t)o[t]=(a[t]-o[t+1])/i[t];for(i[r-1]=(e[r]+o[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function sg(e){return new hd(e,.5)}function fg(e){return new hd(e,0)}function cg(e){return new hd(e,1)}function Di(e,t,r){this.k=e,this.x=t,this.y=r}Di.prototype={constructor:Di,scale:function(e){return e===1?this:new Di(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Di(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ug=new Di(1,0,0);lg.prototype=Di.prototype;function lg(e){for(;!e.__zoom;)if(!(e=e.parentNode))return ug;return e.__zoom}function mn(e){return e!=null&&!Number.isNaN(e)}function Or(e,t){return+mn(t)-+mn(e)||ct(e,t)}function ja(e,t){return+mn(t)-+mn(e)||tn(e,t)}function Tu(e){return e!=null&&`${e}`!=""}function pg(e){return isFinite(e)?e:NaN}function Ba(e){return e>0&&isFinite(e)?e:NaN}function ff(e){return e<0&&isFinite(e)?e:NaN}function yd(e,t){if(e instanceof Date||(e=new Date(+e)),isNaN(e))return typeof t=="function"?t(e):t;let r=e.getUTCHours(),n=e.getUTCMinutes(),o=e.getUTCSeconds(),i=e.getUTCMilliseconds();return`${I9(e.getUTCFullYear(),4)}-${ri(e.getUTCMonth()+1,2)}-${ri(e.getUTCDate(),2)}${r||n||o||i?`T${ri(r,2)}:${ri(n,2)}${o||i?`:${ri(o,2)}${i?`.${ri(i,3)}`:""}`:""}Z`:""}`}function I9(e){return e<0?`-${ri(-e,6)}`:e>9999?`+${ri(e,6)}`:ri(e,4)}function ri(e,t){return`${e}`.padStart(t,"0")}var _9=/^(?:[-+]\d{2})?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{3})?)?(?:Z|[-+]\d{2}:?\d{2})?)?$/;function Mu(e,t){return _9.test(e+="")?new Date(e):typeof t=="function"?t(e):t}function ni(e){if(e==null)return;let t=e[0],r=e[e.length-1];return tn(t,r)}var uf=1e3,Ui=uf*60,ji=Ui*60,xo=ji*24,yo=xo*7,Ga=xo*30,Vi=xo*365,mg=[["millisecond",1],["2 milliseconds",2],["5 milliseconds",5],["10 milliseconds",10],["20 milliseconds",20],["50 milliseconds",50],["100 milliseconds",100],["200 milliseconds",200],["500 milliseconds",500],["second",uf],["5 seconds",5*uf],["15 seconds",15*uf],["30 seconds",30*uf],["minute",Ui],["5 minutes",5*Ui],["15 minutes",15*Ui],["30 minutes",30*Ui],["hour",ji],["3 hours",3*ji],["6 hours",6*ji],["12 hours",12*ji],["day",xo],["2 days",2*xo],["week",yo],["2 weeks",2*yo],["month",Ga],["3 months",3*Ga],["6 months",6*Ga],["year",Vi],["2 years",2*Vi],["5 years",5*Vi],["10 years",10*Vi],["20 years",20*Vi],["50 years",50*Vi],["100 years",100*Vi]],dg=new Map([["second",uf],["minute",Ui],["hour",ji],["day",xo],["monday",yo],["tuesday",yo],["wednesday",yo],["thursday",yo],["friday",yo],["saturday",yo],["sunday",yo],["week",yo],["month",Ga],["year",Vi]]),n6=new Map([["second",$t],["minute",Wo],["hour",Zo],["day",cn],["monday",$i],["tuesday",Dp],["wednesday",Vp],["thursday",po],["friday",Up],["saturday",jp],["sunday",jr],["week",jr],["month",Jo],["year",sr]]),hg=new Map([["second",$t],["minute",Xo],["hour",Qo],["day",Ea],["monday",Li],["tuesday",Bp],["wednesday",Gp],["thursday",mo],["friday",zp],["saturday",Kp],["sunday",Br],["week",Br],["month",ei],["year",fr]]),lf=Symbol("intervalDuration"),gd=Symbol("intervalType");for(let[e,t]of n6)t[lf]=dg.get(e),t[gd]="time";for(let[e,t]of hg)t[lf]=dg.get(e),t[gd]="utc";var Ou=[["year",fr,"utc"],["month",ei,"utc"],["day",Ea,"utc",6*Ga],["hour",Qo,"utc",3*xo],["minute",Xo,"utc",6*ji],["second",$t,"utc",30*Ui]],xd=[["year",sr,"time"],["month",Jo,"time"],["day",cn,"time",6*Ga],["hour",Zo,"time",3*xo],["minute",Wo,"time",6*ji],["second",$t,"time",30*Ui]],v9=[Ou[0],xd[0],Ou[1],xd[1],Ou[2],xd[2],...Ou.slice(3)];function o6(e){let t=`${e}`.toLowerCase();t.endsWith("s")&&(t=t.slice(0,-1));let r=1,n=/^(?:(\d+)\s+)/.exec(t);switch(n&&(t=t.slice(n[0].length),r=+n[1]),t){case"quarter":t="month",r*=3;break;case"half":t="month",r*=6;break}let o=hg.get(t);if(!o)throw new Error(`unknown interval: ${e}`);if(r>1&&!o.every)throw new Error(`non-periodic interval: ${t}`);return[t,r]}function yg(e){return i6(o6(e),"time")}function xg(e){return i6(o6(e),"utc")}function i6([e,t],r){let n=(r==="time"?n6:hg).get(e);return t>1&&(n=n.every(t),n[lf]=dg.get(e)*t,n[gd]=r),n}function gg(e,t){if(!(t>1))return;let r=e[lf];if(!mg.some(([,o])=>o===r)||r%xo===0&&xoMath.log(o)).center(mg,Math.log(r*t))];return(e[gd]==="time"?yg:xg)(n)}function r6(e,t,r){let n=t==="time"?Js:ho;if(r==null)return n(e==="year"?"%Y":e==="month"?"%Y-%m":e==="day"?"%Y-%m-%d":e==="hour"||e==="minute"?"%Y-%m-%dT%H:%M":e==="second"?"%Y-%m-%dT%H:%M:%S":"%Y-%m-%dT%H:%M:%S.%L");let o=T9(r);switch(e){case"millisecond":return cf(n(".%L"),n(":%M:%S"),o);case"second":return cf(n(":%S"),n("%-I:%M"),o);case"minute":return cf(n("%-I:%M"),n("%p"),o);case"hour":return cf(n("%-I %p"),n("%b %-d"),o);case"day":return cf(n("%-d"),n("%b"),o);case"month":return cf(n("%b"),n("%Y"),o);case"year":return n("%Y")}throw new Error("unable to format time ticks")}function T9(e){return e==="left"||e==="right"?(t,r)=>` +${t} +${r}`:e==="top"?(t,r)=>`${r} +${t}`:(t,r)=>`${t} +${r}`}function M9(e){return e==="time"?xd:e==="utc"?Ou:v9}function a6(e,t,r){let n=Nt($l(t,(o,i)=>Math.abs(i-o)));if(n<1e3)return r6("millisecond","utc",r);for(let[o,i,a,s]of M9(e)){if(n>s||o==="hour"&&!n)break;if(t.every(f=>i.floor(f)>=f))return r6(o,a,r)}}function cf(e,t,r){return(n,o,i)=>{let a=e(n,o),s=t(n,o),f=o-ni(i);return o!==f&&i[f]!==void 0&&s===t(i[f],f)?a:r(a,s)}}var wg=Object.getPrototypeOf(Uint8Array),O9=Object.prototype.toString;function Dn(e){return e instanceof Array||e instanceof wg}function c6(e){return e instanceof wg&&!R9(e)}function u6(e){return e?.prototype instanceof wg&&!C9(e)}function R9(e){return e instanceof BigInt64Array||e instanceof BigUint64Array}function C9(e){return e===BigInt64Array||e===BigUint64Array}var Sg=Symbol("reindex");function Vt(e,t,r){let n=typeof t;return n==="string"?k6(e)?Ig(e.getChild(t),r):s6(e,_g(t),r):n==="function"?s6(e,t,r):n==="number"||t instanceof Date||n==="boolean"?We(e,Gr(t),r):typeof t?.transform=="function"?bg(t.transform(e),r):A9(bg(t,r),e?.[Sg])}function A9(e,t){return e!=null&&t?wd(e,t):e}function s6(e,t,r){return We(e,u6(r)?(n,o)=>Tg(t(n,o)):t,r)}function bg(e,t){return t===void 0?bo(e):N6(e)?Ig(e,t):e instanceof t?e:t.from(e,u6(t)&&!c6(e)?Tg:void 0)}function Ig(e,t){return e==null?e:(t===void 0||t===Array)&&E9(e.type)?Mg(f6(e)):bg(f6(e),t)}function f6(e){return e.nullCount?e.toJSON():e.toArray()}var pf=[null],_g=e=>t=>{let r=t[e];return r===void 0&&t.type==="Feature"?t.properties?.[e]:r},Ru={transform:Rr},dt={transform:e=>e};var l6=()=>1,p6=()=>!0,wt=e=>e==null?e:`${e}`,St=e=>e==null?e:+e;var vg=e=>e?e[0]:void 0,m6=e=>e?e[1]:void 0;var Gr=e=>()=>e;function d6(e){let t=+`${e}`.slice(1)/100;return(r,n)=>jo(r,t,n)}function za(e){return c6(e)?e:We(e,Tg,Float64Array)}function Tg(e){return e==null?NaN:Number(e)}function Mg(e){return We(e,P9)}function P9(e){return e instanceof Date&&!isNaN(e)?e:typeof e=="string"?Mu(e):e==null||isNaN(e=Number(e))?void 0:new Date(e)}function go(e,t){return e===void 0&&(e=t),e===null?[void 0,"none"]:hf(e)?[void 0,e]:[e,void 0]}function ht(e,t){return e===void 0&&(e=t),e===null||typeof e=="number"?[void 0,e]:[e,void 0]}function Og(e,t,r){if(e!=null)return yr(e,t,r)}function yr(e,t,r){let n=`${e}`.toLowerCase();if(!r.includes(n))throw new Error(`invalid ${t}: ${e}`);return n}function oi(e){return k6(e)?e:bo(e)}function bo(e){if(e==null||Dn(e))return e;if(N6(e))return Ig(e);if(h6(e))switch(e.type){case"FeatureCollection":return e.features;case"GeometryCollection":return e.geometries;default:return[e]}return Array.from(e)}function h6(e){switch(e?.type){case"FeatureCollection":case"GeometryCollection":case"Feature":case"LineString":case"MultiLineString":case"MultiPoint":case"MultiPolygon":case"Point":case"Polygon":case"Sphere":return!0;default:return!1}}function We(e,t,r=Array){return e==null?e:e instanceof r?e.map(t):r.from(e,t)}function Bi(e,t=Array){return e instanceof t?e.slice():t.from(e)}function y6({x:e,x1:t,x2:r}){return e!==void 0||t!==void 0||r!==void 0}function Rg({y:e,y1:t,y2:r}){return e!==void 0||t!==void 0||r!==void 0}function x6(e){return y6(e)||Rg(e)||e.interval!==void 0}function wo(e){return e?.toString===O9}function mf(e){return wo(e)&&(e.type!==void 0||e.domain!==void 0)}function df(e){return wo(e)&&typeof e.transform!="function"}function Gi(e){return df(e)&&e.value===void 0&&e.channel===void 0}function g6(e,t,r,n=dt){return t===void 0&&r===void 0?(t=0,r=e===void 0?n:e):t===void 0?t=e===void 0?0:e:r===void 0&&(r=e===void 0?0:e),[t,r]}function ii(e,t){return e===void 0&&t===void 0?[vg,m6]:[e,t]}function bd({z:e,fill:t,stroke:r}={}){return e===void 0&&([e]=go(t)),e===void 0&&([e]=go(r)),e}function zi(e){return Dn(e)?e.length:e?.numRows}function Rr(e){let t=zi(e),r=new Uint32Array(t);for(let n=0;ne[r],e.constructor):We(t,r=>e.at(r))}function b6(e,t,r){return e.subarray?e.subarray(t,r):e.slice(t,r)}function dn(e){return e!==null&&typeof e=="object"?e.valueOf():e}function Cu(e){let t;return[{transform:()=>t,label:Ki(e)},r=>t=r]}function w6(e){return e==null?[e]:Cu(e)}function Ki(e,t){return typeof e=="string"?e:e&&e.label!==void 0?e.label:t}function S6(e,t){return{transform(r){let n=e.transform(r),o=t.transform(r);return Dt(n)||Dt(o)?We(n,(i,a)=>new Date((+n[a]+ +o[a])/2)):We(n,(i,a)=>(+n[a]+ +o[a])/2,Float64Array)},label:e.label}}function I6(e,t){let r=Cg(t?.interval,t?.type);return r?We(e,r):e}function Cg(e,t){let r=Sd(e,t);return r&&(n=>mn(n)?r.floor(n):n)}function Sd(e,t){if(e!=null){if(typeof e=="number")return k9(e);if(typeof e=="string")return(t==="time"?yg:xg)(e);if(typeof e.floor!="function")throw new Error("invalid interval; missing floor method");if(typeof e.offset!="function")throw new Error("invalid interval; missing offset method");return e}}function k9(e){e=+e,0Math.floor(r*t)/t,offset:(r,n=1)=>(r*t+Math.floor(n))/t,range:(r,n)=>xa(Math.ceil(r*t),n*t).map(o=>o/t)}:{floor:r=>Math.floor(r/t)*t,offset:(r,n=1)=>r+t*Math.floor(n),range:(r,n)=>xa(Math.ceil(r/t),n/t).map(o=>o*t)}}function qi(e,t){if(e=Sd(e,t),e&&typeof e.range!="function")throw new Error("invalid interval: missing range method");return e}function _6(e,t){if(e=qi(e,t),e&&typeof e.ceil!="function")throw new Error("invalid interval: missing ceil method");return e}function v6(e){return typeof e?.range=="function"}function Hi(e){return e===void 0||df(e)?e:{value:e}}function T6(e){return e==null?null:{transform:t=>Vt(t,e,Float64Array),label:Ki(e)}}function hn(e){return e&&typeof e[Symbol.iterator]=="function"}function Id(e){for(let t of e)if(t!=null)return typeof t!="object"||t instanceof Date}function Ag(e){for(let t of e){if(t==null)continue;let r=typeof t;return r==="string"||r==="boolean"}}function Dt(e){for(let t of e)if(t!=null)return t instanceof Date}function M6(e){for(let t of e)if(t!=null)return typeof t=="string"&&isNaN(t)&&Mu(t)}function O6(e){for(let t of e)if(t!=null){if(typeof t!="string")return!1;if(t.trim())return!isNaN(t)}}function R6(e){for(let t of e)if(t!=null)return typeof t=="number"}function _d(e,t){let r;for(let n of e)if(n!=null){if(!t(n))return!1;r=!0}return r}var N9=new Set("none,currentcolor,transparent,aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkgrey,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkslategrey,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dimgrey,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,grey,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgray,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightslategrey,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,rebeccapurple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,slategrey,snow,springgreen,steelblue,tan,teal,thistle,tomato,turquoise,violet,wheat,white,whitesmoke,yellow".split(","));function hf(e){return typeof e!="string"?!1:(e=e.toLowerCase().trim(),/^#[0-9a-f]{3,8}$/.test(e)||/^(?:url|var|rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\(.*\)$/.test(e)||N9.has(e))}function C6(e){return typeof e=="number"&&(0<=e&&e<=1||isNaN(e))}function Ut(e){return e==null||Ka(e)}function Ka(e){return/^\s*none\s*$/i.test(e)}function A6(e){return/^\s*round\s*$/i.test(e)}function vd(e,t){return Og(e,t,["middle","top-left","top","top-right","right","bottom-right","bottom","bottom-left","left"])}function Yi(e="middle"){return vd(e,"frameAnchor")}function P6(e={},...t){let r=e;for(let n of t)for(let o in n)if(r[o]===void 0){let i=n[o];r===e?r={...r,[o]:i}:r[o]=i}return r}function F9(e){console.warn("named iterables are deprecated; please use an object instead");let t=new Set;return Object.fromEntries(Array.from(e,r=>{let{name:n}=r;if(n==null)throw new Error("missing name");let o=`${n}`;if(o==="__proto__")throw new Error(`illegal name: ${o}`);if(t.has(o))throw new Error(`duplicate name: ${o}`);return t.add(o),[n,r]}))}function Pg(e){return hn(e)?F9(e):e}function Td(e){return e===!0?e="frame":e===!1?e=null:!h6(e)&&e!=null&&(e=yr(e,"clip",["frame","sphere"]),e==="sphere"&&(e={type:"Sphere"})),e}function k6(e){return e&&typeof e.getChild=="function"&&typeof e.toArray=="function"&&e.schema&&Array.isArray(e.schema.fields)}function N6(e){return e&&typeof e.toArray=="function"&&e.type}function E9(e){return e&&(e.typeId===8||e.typeId===10)&&e.unit===1}var yn=Symbol("position"),zr=Symbol("color"),qa=Symbol("radius"),Ha=Symbol("length"),Ya=Symbol("opacity"),yf=Symbol("symbol"),F6=Symbol("projection"),Be=new Map([["x",yn],["y",yn],["fx",yn],["fy",yn],["r",qa],["color",zr],["opacity",Ya],["symbol",yf],["length",Ha],["projection",F6]]);function E6(e){return e===yn||e===F6}function $6(e){return e===yn||e===qa||e===Ha||e===Ya}var $9=Math.sqrt(3),L9=2/$9,D9={draw(e,t){let r=Math.sqrt(t/Math.PI),n=r*L9,o=n/2;e.moveTo(0,n),e.lineTo(r,o),e.lineTo(r,-o),e.lineTo(0,-n),e.lineTo(-r,-o),e.lineTo(-r,o),e.closePath()}},kg=new Map([["asterisk",pu],["circle",ti],["cross",mu],["diamond",du],["diamond2",hu],["hexagon",D9],["plus",yu],["square",xu],["square2",gu],["star",bu],["times",of],["triangle",wu],["triangle2",Su],["wye",Iu]]);function Ng(e){return e&&typeof e.draw=="function"}function L6(e){return Ng(e)?!0:typeof e!="string"?!1:kg.has(e.toLowerCase())}function xf(e){if(e==null||Ng(e))return e;let t=kg.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid symbol: ${e}`)}function D6(e){if(e==null||Ng(e))return[void 0,e];if(typeof e=="string"){let t=kg.get(`${e}`.toLowerCase());if(t)return[void 0,t]}return[e,void 0]}function Au({filter:e,sort:t,reverse:r,transform:n,initializer:o,...i}={},a){if(n===void 0&&(e!=null&&(n=V6(e)),t!=null&&!Gi(t)&&(n=Fg(n,$g(t))),r&&(n=Fg(n,U6))),a!=null&&o!=null)throw new Error("transforms cannot be applied after initializers");return{...i,...(t===null||Gi(t))&&{sort:t},transform:Fg(n,a)}}function ai({filter:e,sort:t,reverse:r,initializer:n,...o}={},i){return n===void 0&&(e!=null&&(n=V6(e)),t!=null&&!Gi(t)&&(n=Eg(n,$g(t))),r&&(n=Eg(n,U6))),{...o,...(t===null||Gi(t))&&{sort:t},initializer:Eg(n,i)}}function Fg(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o){return{data:r,facets:n}=e.call(this,r,n,o),t.call(this,oi(r),n,o)}}function Eg(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o,...i){let a,s,f,u,c,m;return{data:s=r,facets:f=n,channels:a}=e.call(this,r,n,o,...i),{data:c=s,facets:m=f,channels:u}=t.call(this,s,f,{...o,...a},...i),{data:c,facets:m,channels:{...a,...u}}}}function V9(e,t){return(e.initializer!=null?ai:Au)(e,t)}function V6(e){return(t,r)=>{let n=Vt(t,e);return{data:t,facets:r.map(o=>o.filter(i=>n[i]))}}}function U6(e,t){return{data:e,facets:t.map(r=>r.slice().reverse())}}function j6(e,{sort:t,...r}={}){return{...(df(e)&&e.channel!==void 0?ai:V9)(r,$g(e)),sort:Gi(t)?t:null}}function $g(e){return(typeof e=="function"&&e.length!==1?U9:j9)(e)}function U9(e){return(t,r)=>{let n=Dn(t)?(o,i)=>e(t[o],t[i]):(o,i)=>e(t.get(o),t.get(i));return{data:t,facets:r.map(o=>o.slice().sort(n))}}}function j9(e){let t,r;({channel:t,value:e,order:r}={...Hi(e)});let n=t?.startsWith("-");if(n&&(t=t.slice(1)),r===void 0&&(r=n?ja:Or),typeof r!="function")switch(`${r}`.toLowerCase()){case"ascending":r=Or;break;case"descending":r=ja;break;default:throw new Error(`invalid order: ${r}`)}return(o,i,a)=>{let s;if(t===void 0)s=Vt(o,e);else{if(a===void 0)throw new Error("channel sort requires an initializer");if(s=a[t],!s)return{};s=s.value}let f=(u,c)=>r(s[u],s[c]);return{data:o,facets:i.map(u=>u.slice().sort(f))}}}function K6(e,t,r=B9){if(e==null)return r(e);if(typeof e.reduceIndex=="function")return e;if(typeof e.reduce=="function"&&wo(e))return G9(e);if(typeof e=="function")return z9(e);if(/^p\d{2}$/i.test(e))return si(d6(e));switch(`${e}`.toLowerCase()){case"first":return q9;case"last":return H9;case"identity":return K9;case"count":return G6;case"distinct":return Y9;case"sum":return t==null?G6:W9;case"proportion":return z6(t,"data");case"proportion-facet":return z6(t,"facet");case"deviation":return si(Cl);case"min":return si(mr);case"min-index":return si(kl);case"max":return si(Nt);case"max-index":return si(Pl);case"mean":return B6(Fl);case"median":return B6(ya);case"variance":return si(Ts);case"mode":return si(El)}return r(e)}function B9(e){throw new Error(`invalid reduce: ${e}`)}function G9(e){return console.warn("deprecated reduce interface; implement reduceIndex instead."),{...e,reduceIndex:e.reduce.bind(e)}}function z9(e){return{reduceIndex(t,r,n){return e(wd(r,t),n)}}}function si(e){return{reduceIndex(t,r){return e(t,n=>r[n])}}}function B6(e){return{reduceIndex(t,r){let n=e(t,o=>r[o]);return Dt(r)?new Date(n):n}}}var K9={reduceIndex(e,t){return wd(t,e)}},q9={reduceIndex(e,t){return t[e[0]]}};var H9={reduceIndex(e,t){return t[e[e.length-1]]}},G6={label:"Frequency",reduceIndex(e){return e.length}},Y9={label:"Distinct",reduceIndex(e,t){let r=new Pn;for(let n of e)r.add(t[n]);return r.size}},W9=si(rn);function z6(e,t){return e==null?{scope:t,label:"Frequency",reduceIndex:(r,n,o=1)=>r.length/o}:{scope:t,reduceIndex:(r,n,o=1)=>rn(r,i=>n[i])/o}}function gf(e,{scale:t,type:r,value:n,filter:o,hint:i,label:a=Ki(n)},s){return i===void 0&&typeof n?.transform=="function"&&(i=n.hint),Dg(s,{scale:t,type:r,value:Vt(e,n),label:a,filter:o,hint:i})}function H6(e,t){return Object.fromEntries(Object.entries(e).map(([r,n])=>[r,gf(t,n,r)]))}function Y6(e,t){let r=Object.fromEntries(Object.entries(e).map(([n,{scale:o,value:i}])=>{let a=o==null?null:t[o];return[n,a==null?i:We(i,a)]}));return r.channels=e,r}function Dg(e,t){let{scale:r,value:n}=t;if(r===!0||r==="auto")switch(e){case"fill":case"stroke":case"color":t.scale=r!==!0&&_d(n,hf)?null:"color",t.defaultScale="color";break;case"fillOpacity":case"strokeOpacity":case"opacity":t.scale=r!==!0&&_d(n,C6)?null:"opacity",t.defaultScale="opacity";break;case"symbol":r!==!0&&_d(n,L6)?(t.scale=null,t.value=We(n,xf)):t.scale="symbol",t.defaultScale="symbol";break;default:t.scale=Be.has(e)?e:null;break}else if(r===!1)t.scale=null;else if(r!=null&&!Be.has(r))throw new Error(`unknown scale: ${r}`);return t}function W6(e,t,r,n,o){let{order:i,reverse:a,reduce:s=!0,limit:f}=o;for(let u in o){if(!Be.has(u))continue;let{value:c,order:m=i,reverse:l=a,reduce:p=s,limit:d=f}=Hi(o[u]),y=c?.startsWith("-");if(y&&(c=c.slice(1)),m=m===void 0?y!==(c==="width"||c==="height")?Z6:X6:Q9(m),p==null||p===!1)continue;let x=u==="fx"||u==="fy"?Z9(t,n[u]):X9(r,u);if(!x)throw new Error(`missing channel for scale: ${u}`);let w=x.value,[g=0,S=1/0]=hn(d)?d:d<0?[d]:[0,d];if(c==null)x.domain=()=>{let b=Array.from(new Pn(w));return l&&(b=b.reverse()),(g!==0||S!==1/0)&&(b=b.slice(g,S)),b};else{let b=c==="data"?e:c==="height"?q6(r,"y1","y2"):c==="width"?q6(r,"x1","x2"):Lg(r,c,c==="y"?"y2":c==="x"?"x2":void 0),T=K6(p===!0?"max":p,b);x.domain=()=>{let I=F0(Rr(w),v=>T.reduceIndex(v,b),v=>w[v]);return m&&I.sort(m),l&&I.reverse(),(g!==0||S!==1/0)&&(I=I.slice(g,S)),I.map(vg)}}}}function X9(e,t){for(let r in e){let n=e[r];if(n.scale===t)return n}}function Z9(e,t){let r=e.original;if(r===e)return t;let n=t.value,o=t.value=[];for(let i=0;iMath.abs(i-n[a]),Float64Array)}function Lg(e,t,r){let n=e[t];if(!n&&r!==void 0&&(n=e[r]),n)return n.value;throw new Error(`missing channel: ${t}`)}function Q9(e){if(e==null||typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"ascending":return X6;case"descending":return Z6}throw new Error(`invalid order: ${e}`)}function X6([e,t],[r,n]){return Or(t,n)||Or(e,r)}function Z6([e,t],[r,n]){return ja(t,n)||Or(e,r)}function Vg(e,t){let r=e[t];if(r){for(;r.source;)r=r.source;return r.source===null?null:r}}var rT=new Map([["accent",Rx],["category10",Ox],["dark2",Cx],["observable10",Ax],["paired",Px],["pastel1",kx],["pastel2",Nx],["set1",Fx],["set2",Ex],["set3",$x],["tableau10",Lx]]);function nT(e){return e!=null&&rT.has(`${e}`.toLowerCase())}var Q6=new Map([...rT,["brbg",fi(Jp,em)],["prgn",fi(tm,rm)],["piyg",fi(nm,om)],["puor",fi(im,am)],["rdbu",fi(cu,ef)],["rdgy",fi(sm,fm)],["rdylbu",fi(uu,tf)],["rdylgn",fi(cm,um)],["spectral",fi(lm,pm)],["burd",J6(cu,ef)],["buylrd",J6(uu,tf)],["blues",jt(Lm,Dm)],["greens",jt(Vm,Um)],["greys",jt(jm,Bm)],["oranges",jt(Hm,Ym)],["purples",jt(Gm,zm)],["reds",jt(Km,qm)],["turbo",ci(nd)],["viridis",ci(id)],["magma",ci(ad)],["inferno",ci(sd)],["plasma",ci(fd)],["cividis",ci(Wm)],["cubehelix",ci(Xm)],["warm",ci(Qm)],["cool",ci(Jm)],["bugn",jt(mm,dm)],["bupu",jt(hm,ym)],["gnbu",jt(xm,gm)],["orrd",jt(bm,wm)],["pubu",jt(_m,vm)],["pubugn",jt(Sm,Im)],["purd",jt(Tm,Mm)],["rdpu",jt(Om,Rm)],["ylgn",jt(Pm,km)],["ylgnbu",jt(Cm,Am)],["ylorbr",jt(Nm,Fm)],["ylorrd",jt(Em,$m)],["rainbow",eT(ed)],["sinebow",eT(rd)]]);function jt(e,t){return({length:r})=>r===1?[e[3][1]]:r===2?[e[3][1],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>9?ir(t,r):e[r])}function fi(e,t){return({length:r})=>r===2?[e[3][0],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>11?ir(t,r):e[r])}function J6(e,t){return({length:r})=>r===2?[e[3][2],e[3][0]]:(r=Math.max(3,Math.floor(r)),r>11?ir(n=>t(1-n),r):e[r].slice().reverse())}function ci(e){return({length:t})=>ir(e,Math.max(2,Math.floor(t)))}function eT(e){return({length:t})=>ir(e,Math.floor(t)+1).slice(0,-1)}function Ug(e){let t=`${e}`.toLowerCase();if(!Q6.has(t))throw new Error(`unknown ordinal scheme: ${t}`);return Q6.get(t)}function Pu(e,t){let r=Ug(e),n=typeof r=="function"?r({length:t}):r;return n.length!==t?n.slice(0,t):n}function oT(e,t="greys"){let r=new Set,[n,o]=Pu(t,2);for(let i of e)if(i!=null)if(i===!0)r.add(o);else if(i===!1)r.add(n);else return;return[...r]}var tT=new Map([["brbg",em],["prgn",rm],["piyg",om],["puor",am],["rdbu",ef],["rdgy",fm],["rdylbu",tf],["rdylgn",um],["spectral",pm],["burd",e=>ef(1-e)],["buylrd",e=>tf(1-e)],["blues",Dm],["greens",Um],["greys",Bm],["purples",zm],["reds",qm],["oranges",Ym],["turbo",nd],["viridis",id],["magma",ad],["inferno",sd],["plasma",fd],["cividis",Wm],["cubehelix",Xm],["warm",Qm],["cool",Jm],["bugn",dm],["bupu",ym],["gnbu",gm],["orrd",wm],["pubugn",Im],["pubu",vm],["purd",Mm],["rdpu",Rm],["ylgnbu",Am],["ylgn",km],["ylorbr",Fm],["ylorrd",$m],["rainbow",ed],["sinebow",rd]]);function bf(e){let t=`${e}`.toLowerCase();if(!tT.has(t))throw new Error(`unknown quantitative scheme: ${t}`);return tT.get(t)}var J9=new Set(["brbg","prgn","piyg","puor","rdbu","rdgy","rdylbu","rdylgn","spectral","burd","buylrd"]);function iT(e){return e!=null&&J9.has(`${e}`.toLowerCase())}var Bg=e=>t=>e(1-t),jg=[0,1],aT=new Map([["number",et],["rgb",an],["hsl",fy],["hcl",cy],["lab",Ql]]);function Gg(e){let t=`${e}`.toLowerCase();if(!aT.has(t))throw new Error(`unknown interpolator: ${t}`);return aT.get(t)}function Sf(e,t,r,{type:n,nice:o,clamp:i,zero:a,domain:s=hT(e,r),unknown:f,round:u,scheme:c,interval:m,range:l=Be.get(e)===qa?nN(r,s):Be.get(e)===Ha?oN(r,s):Be.get(e)===Ya?jg:void 0,interpolate:p=Be.get(e)===zr?c==null&&l!==void 0?an:bf(c!==void 0?c:n==="cyclical"?"rainbow":"turbo"):u?_a:et,reverse:d}){if(s=sT(s),m=qi(m,n),(n==="cyclical"||n==="sequential")&&(n="linear"),typeof p!="function"&&(p=Gg(p)),d=!!d,l!==void 0){let y=s.length,x=(l=sT(l)).length;if(y!==x){if(p.length===1)throw new Error("invalid piecewise interpolator");p=no(p,l),l=void 0}}if(p.length===1?(d&&(p=Bg(p),d=!1),l===void 0&&(l=Float64Array.from(s,(y,x)=>x/(s.length-1)),l.length===2&&(l=jg)),t.interpolate((l===jg?Gr:ku)(p))):t.interpolate(p),a){let[y,x]=Tr(s);(y>0||x<0)&&(s=Bi(s),(ni(s)||1)===Math.sign(y)?s[0]=0:s[s.length-1]=0)}return d&&(s=Oi(s)),t.domain(s).unknown(f),o&&(t.nice(eN(o,n)),s=t.domain()),l!==void 0&&t.range(l),i&&t.clamp(i),{type:n,domain:s,range:l,scale:t,interpolate:p,interval:m}}function sT(e){return e=bo(e),e.length>=2?e:[e[0],e[0]]}function eN(e,t){return e===!0?void 0:typeof e=="number"?e:_6(e,t)}function fT(e,t,r){return Sf(e,Pa(),t,r)}function cT(e,t,r){return zg(e,t,{...r,exponent:.5})}function zg(e,t,{exponent:r=1,...n}){return Sf(e,Jc().exponent(r),t,{...n,type:"pow"})}function uT(e,t,{base:r=10,domain:n=iN(t),...o}){return Sf(e,Zc().base(r),t,{...o,domain:n})}function lT(e,t,{constant:r=1,...n}){return Sf(e,Qc().constant(r),t,n)}function pT(e,t,{range:r,quantiles:n=r===void 0?5:(r=[...r]).length,n:o=n,scheme:i="rdylbu",domain:a=aN(t),unknown:s,interpolate:f,reverse:u}){return r===void 0&&(r=f!==void 0?ir(f,o):Be.get(e)===zr?Pu(i,o):void 0),a.length>0&&(a=eu(a,r===void 0?{length:o}:r).quantiles()),Md(e,t,{domain:a,range:r,reverse:u,unknown:s})}function mT(e,t,{range:r,n=r===void 0?5:(r=[...r]).length,scheme:o="rdylbu",domain:i=hT(e,t),unknown:a,interpolate:s,reverse:f}){let[u,c]=Tr(i),m;return r===void 0?(m=Uo(u,c,n),m[0]<=u&&m.splice(0,1),m[m.length-1]>=c&&m.pop(),n=m.length+1,r=s!==void 0?ir(s,n):Be.get(e)===zr?Pu(o,n):void 0):(m=ir(et(u,c),n+1).slice(1,-1),u instanceof Date&&(m=m.map(l=>new Date(l)))),ni(bo(i))<0&&m.reverse(),Md(e,t,{domain:m,range:r,reverse:f,unknown:a})}function Md(e,t,{domain:r=[0],unknown:n,scheme:o="rdylbu",interpolate:i,range:a=i!==void 0?ir(i,r.length+1):Be.get(e)===zr?Pu(o,r.length+1):void 0,reverse:s}){r=bo(r);let f=ni(r);if(!isNaN(f)&&!tN(r,f))throw new Error(`the ${e} scale has a non-monotonic domain`);return s&&(a=Oi(a)),{type:"threshold",scale:tu(f<0?Oi(r):r,a===void 0?[]:a).unknown(n),domain:r,range:a}}function tN(e,t){for(let r=1,n=e.length,o=e[0];rt}}function wf(e,t=pg){return e.length?[mr(e,({value:r})=>r===void 0?r:mr(r,t)),Nt(e,({value:r})=>r===void 0?r:Nt(r,t))]:[0,1]}function hT(e,t){let r=Be.get(e);return(r===qa||r===Ya||r===Ha?rN:wf)(t)}function rN(e){return[0,e.length?Nt(e,({value:t})=>t===void 0?t:Nt(t,pg)):1]}function nN(e,t){let r=e.find(({radius:a})=>a!==void 0);if(r!==void 0)return[0,r.radius];let n=jo(e,.5,({value:a})=>a===void 0?NaN:jo(a,.25,Ba)),o=t.map(a=>3*Math.sqrt(a/n)),i=30/Nt(o);return i<1?o.map(a=>a*i):o}function oN(e,t){let r=ya(e,({value:i})=>i===void 0?NaN:ya(i,Math.abs)),n=t.map(i=>12*i/r),o=60/Nt(n);return o<1?n.map(i=>i*o):n}function iN(e){for(let{value:t}of e)if(t!==void 0)for(let r of t){if(r>0)return wf(e,Ba);if(r<0)return wf(e,ff)}return[1,10]}function aN(e){let t=[];for(let{value:r}of e)if(r!==void 0)for(let n of r)t.push(n);return t}function ku(e){return(t,r)=>n=>e(t+n*(r-t))}var Kg=0,qg;function yT(){let e=Kg;return Kg=0,qg=void 0,e}function Cr(e){e!==qg&&(qg=e,console.warn(e),++Kg)}function Od(e,t,r,n,{type:o,nice:i,clamp:a,domain:s=wf(n),unknown:f,pivot:u=0,scheme:c,range:m,symmetric:l=!0,interpolate:p=Be.get(e)===zr?c==null&&m!==void 0?an:bf(c!==void 0?c:"rdbu"):et,reverse:d}){u=+u,s=bo(s);let[y,x]=s;if(s.length>2&&Cr(`Warning: the diverging ${e} scale domain contains extra elements.`),tn(y,x)<0&&([y,x]=[x,y],d=!d),y=Math.min(y,u),x=Math.max(x,u),typeof p!="function"&&(p=Gg(p)),m!==void 0&&(p=p.length===1?ku(p)(...m):no(p,m)),d&&(p=Bg(p)),l){let w=r.apply(u),g=w-r.apply(y),S=r.apply(x)-w;gS&&(x=r.invert(w+g))}return t.domain([y,u,x]).unknown(f).interpolator(p),a&&t.clamp(a),i&&t.nice(i),{type:o,domain:[y,x],pivot:u,interpolate:p,scale:t}}function xT(e,t,r){return Od(e,fu(),sN,t,r)}function gT(e,t,r){return Hg(e,t,{...r,exponent:.5})}function Hg(e,t,{exponent:r=1,...n}){return Od(e,Qp().exponent(r=+r),uN(r),t,{...n,type:"diverging-pow"})}function bT(e,t,{base:r=10,pivot:n=1,domain:o=wf(t,n<0?ff:Ba),...i}){return Od(e,Xp().base(r=+r),fN,t,{domain:o,pivot:n,...i})}function wT(e,t,{constant:r=1,...n}){return Od(e,Zp().constant(r=+r),lN(r),t,n)}var sN={apply(e){return e},invert(e){return e}},fN={apply:Math.log,invert:Math.exp},cN={apply(e){return Math.sign(e)*Math.sqrt(Math.abs(e))},invert(e){return Math.sign(e)*(e*e)}};function uN(e){return e===.5?cN:{apply(t){return Math.sign(t)*Math.pow(Math.abs(t),e)},invert(t){return Math.sign(t)*Math.pow(Math.abs(t),1/e)}}}function lN(e){return{apply(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))},invert(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}}function ST(e,t,r,n){return Sf(e,t,r,n)}function IT(e,t,r){return ST(e,Hp(),t,r)}function _T(e,t,r){return ST(e,Yp(),t,r)}var If=Symbol("ordinal");function TT(e,t,r,{type:n,interval:o,domain:i,range:a,reverse:s,hint:f}){return o=qi(o,n),i===void 0&&(i=AT(r,o,e)),(n==="categorical"||n===If)&&(n="ordinal"),s&&(i=Oi(i)),i=t.domain(i).domain(),a!==void 0&&(typeof a=="function"&&(a=a(i)),t.range(a)),{type:n,domain:i,range:a,scale:t,hint:f,interval:o}}function MT(e,t,{type:r,interval:n,domain:o,range:i,scheme:a,unknown:s,...f}){n=qi(n,r),o===void 0&&(o=AT(t,n,e));let u;if(Be.get(e)===yf)u=pN(t),i=i===void 0?mN(u):We(i,xf);else if(Be.get(e)===zr&&(i===void 0&&(r==="ordinal"||r===If)&&(i=oT(o,a),i!==void 0&&(a=void 0)),a===void 0&&i===void 0&&(a=r==="ordinal"?"turbo":"observable10"),a!==void 0))if(i!==void 0){let c=bf(a),m=i[0],l=i[1]-i[0];i=({length:p})=>ir(d=>c(m+l*d),p)}else i=Ug(a);if(s===Hc)throw new Error(`implicit unknown on ${e} scale is not supported`);return TT(e,Ca().unknown(s),t,{...f,type:r,domain:o,range:i,hint:u})}function OT(e,t,{align:r=.5,padding:n=.5,...o}){return CT(ux().align(r).padding(n),t,o,e)}function RT(e,t,{align:r=.5,padding:n=.1,paddingInner:o=n,paddingOuter:i=e==="fx"||e==="fy"?0:n,...a}){return CT(Ei().align(r).paddingInner(o).paddingOuter(i),t,a,e)}function CT(e,t,r,n){let{round:o}=r;return o!==void 0&&e.round(o=!!o),e=TT(n,e,t,r),e.round=o,e}function AT(e,t,r){let n=new Pn;for(let{value:o,domain:i}of e){if(i!==void 0)return i();if(o!==void 0)for(let a of o)n.add(a)}if(t!==void 0){let[o,i]=Tr(n).map(t.floor,t);return t.range(o,t.offset(i))}if(n.size>1e4&&Be.get(r)===yn)throw new Error(`implicit ordinal domain of ${r} scale has more than 10,000 values`);return Mi(n,Or)}function vT(e,t){let r;for(let{hint:n}of e){let o=n?.[t];if(o!==void 0){if(r===void 0)r=o;else if(r!==o)return}}return r}function pN(e){return{fill:vT(e,"fill"),stroke:vT(e,"stroke")}}function mN(e){return Ut(e.fill)?Kx:ud}function Nu(e,{label:t,inset:r=0,insetTop:n=r,insetRight:o=r,insetBottom:i=r,insetLeft:a=r,round:s,nice:f,clamp:u,zero:c,align:m,padding:l,projection:p,facet:{label:d=t}={},...y}={}){let x={};for(let[w,g]of e){let S=y[w],b=yN(w,g,{round:Be.get(w)===yn?s:void 0,nice:f,clamp:u,zero:c,align:m,padding:l,projection:p,...S});if(b){let{label:T=w==="fx"||w==="fy"?d:t,percent:I,transform:v,inset:O,insetTop:C=O!==void 0?O:w==="y"?n:0,insetRight:E=O!==void 0?O:w==="x"?o:0,insetBottom:A=O!==void 0?O:w==="y"?i:0,insetLeft:F=O!==void 0?O:w==="x"?a:0}=S||{};if(v==null)v=void 0;else if(typeof v!="function")throw new Error("invalid scale transform; not a function");b.percent=!!I,b.label=T===void 0?dN(g,b):T,b.transform=v,w==="x"||w==="fx"?(b.insetLeft=+F,b.insetRight=+E):(w==="y"||w==="fy")&&(b.insetTop=+C,b.insetBottom=+A),x[w]=b}}return x}function Wg(e){let t={},r={scales:t};for(let[n,o]of Object.entries(e)){let{scale:i,type:a,interval:s,label:f}=o;t[n]=wN(o),r[n]=i,i.type=a,s!=null&&(i.interval=s),f!=null&&(i.label=f)}return r}function ET(e,t){let{x:r,y:n,fx:o,fy:i}=e,a=o||i?Cd(t):t;o&&PT(o,a),i&&kT(i,a);let s=o||i?Xg(e,t):t;r&&PT(r,s),n&&kT(n,s)}function dN(e=[],t){let r;for(let{label:n}of e)if(n!==void 0){if(r===void 0)r=n;else if(r!==n)return}if(r!==void 0)return!So(t)&&t.percent&&(r=`${r} (%)`),{inferred:!0,toString:()=>r}}function $T(e){return Math.sign(ni(e.domain()))*Math.sign(ni(e.range()))}function Cd(e){let{marginTop:t,marginRight:r,marginBottom:n,marginLeft:o,width:i,height:a,facet:{marginTop:s,marginRight:f,marginBottom:u,marginLeft:c}}=e;return{marginTop:Math.max(t,s),marginRight:Math.max(r,f),marginBottom:Math.max(n,u),marginLeft:Math.max(o,c),width:i,height:a}}function Xg({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:f}=Cd(r);return{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:e?e.scale.bandwidth()+a+o:s,height:t?t.scale.bandwidth()+n+i:f,facet:{width:s,height:f}}}function PT(e,t){if(e.range===void 0){let{insetLeft:r,insetRight:n}=e,{width:o,marginLeft:i=0,marginRight:a=0}=t,s=i+r,f=o-a-n;e.range=[s,Math.max(s,f)],So(e)||(e.range=DT(e)),e.scale.range(e.range)}LT(e)}function kT(e,t){if(e.range===void 0){let{insetTop:r,insetBottom:n}=e,{height:o,marginTop:i=0,marginBottom:a=0}=t,s=i+r,f=o-a-n;e.range=[Math.max(s,f),s],So(e)?e.range.reverse():e.range=DT(e),e.scale.range(e.range)}LT(e)}function LT(e){e.round===void 0&&gN(e)&&hN(e)<=30&&e.scale.round(!0)}function hN({scale:e}){let t=e.domain().length,[r,n]=e.range(),o=e.paddingInner?e.paddingInner():1,i=e.paddingOuter?e.paddingOuter():e.padding(),a=t-o,s=Math.abs(n-r)/Math.max(1,a+i*2);return(s-Math.floor(s))*a}function DT(e){let t=e.scale.domain().length+Zg(e);if(!(t>2))return e.range;let[r,n]=e.range;return Array.from({length:t},(o,i)=>r+i/(t-1)*(n-r))}function yN(e,t=[],r={}){let n=xN(e,t,r);if(r.type===void 0&&r.domain===void 0&&r.range===void 0&&r.interval==null&&e!=="fx"&&e!=="fy"&&So({type:n})){let o=t.map(({value:i})=>i).filter(i=>i!==void 0);o.some(Dt)?Cr(`Warning: some data associated with the ${e} scale are dates. Dates are typically associated with a "utc" or "time" scale rather than a "${_f(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., d3.utcDay), or you can suppress this warning by setting the type of the ${e} scale to "${_f(n)}".`):o.some(M6)?Cr(`Warning: some data associated with the ${e} scale are strings that appear to be dates (e.g., YYYY-MM-DD). If these strings represent dates, you should parse them to Date objects. Dates are typically associated with a "utc" or "time" scale rather than a "${_f(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can suppress this warning by setting the type of the ${e} scale to "${_f(n)}".`):o.some(O6)&&Cr(`Warning: some data associated with the ${e} scale are strings that appear to be numbers. If these strings represent numbers, you should parse or coerce them to numbers. Numbers are typically associated with a "linear" scale rather than a "${_f(n)}" scale. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., 1 for integers), or you can suppress this warning by setting the type of the ${e} scale to "${_f(n)}".`)}switch(r.type=n,n){case"diverging":case"diverging-sqrt":case"diverging-pow":case"diverging-log":case"diverging-symlog":case"cyclical":case"sequential":case"linear":case"sqrt":case"threshold":case"quantile":case"pow":case"log":case"symlog":r=Rd(t,r,za);break;case"identity":switch(Be.get(e)){case yn:r=Rd(t,r,za);break;case yf:r=Rd(t,r,bN);break}break;case"utc":case"time":r=Rd(t,r,Mg);break}switch(n){case"diverging":return xT(e,t,r);case"diverging-sqrt":return gT(e,t,r);case"diverging-pow":return Hg(e,t,r);case"diverging-log":return bT(e,t,r);case"diverging-symlog":return wT(e,t,r);case"categorical":case"ordinal":case If:return MT(e,t,r);case"cyclical":case"sequential":case"linear":return fT(e,t,r);case"sqrt":return cT(e,t,r);case"threshold":return Md(e,t,r);case"quantile":return pT(e,t,r);case"quantize":return mT(e,t,r);case"pow":return zg(e,t,r);case"log":return uT(e,t,r);case"symlog":return lT(e,t,r);case"utc":return _T(e,t,r);case"time":return IT(e,t,r);case"point":return OT(e,t,r);case"band":return RT(e,t,r);case"identity":return dT(e);case void 0:return;default:throw new Error(`unknown scale type: ${n}`)}}function _f(e){return typeof e=="symbol"?e.description:e}function NT(e){return typeof e=="string"?`${e}`.toLowerCase():e}var FT={toString:()=>"projection"};function xN(e,t,{type:r,domain:n,range:o,scheme:i,pivot:a,projection:s}){if(r=NT(r),e==="fx"||e==="fy")return"band";(e==="x"||e==="y")&&s!=null&&(r=FT);for(let c of t){let m=NT(c.type);if(m!==void 0){if(r===void 0)r=m;else if(r!==m)throw new Error(`scale incompatible with channel: ${r} !== ${m}`)}}if(r===FT)return;if(r!==void 0)return r;if(n===void 0&&!t.some(({value:c})=>c!==void 0))return;let f=Be.get(e);if(f===qa)return"sqrt";if(f===Ya||f===Ha)return"linear";if(f===yf)return"ordinal";let u=(n??o)?.length;if(u<2||u>2)return Yg(f);if(n!==void 0){if(Ag(n))return Yg(f);if(Dt(n))return"utc"}else{let c=t.map(({value:m})=>m).filter(m=>m!==void 0);if(c.some(Ag))return Yg(f);if(c.some(Dt))return"utc"}if(f===zr){if(a!=null||iT(i))return"diverging";if(nT(i))return"categorical"}return"linear"}function Yg(e){switch(e){case yn:return"point";case zr:return If;default:return"ordinal"}}function So({type:e}){return e==="ordinal"||e==="point"||e==="band"||e===If}function Zg({type:e}){return e==="threshold"}function gN({type:e}){return e==="point"||e==="band"}function Wi(e){if(e===void 0)return!0;let t=e.domain(),r=e(t[0]);for(let n=1,o=t.length;n{if(!Be.has(t=`${t}`))throw new Error(`unknown scale: ${t}`);return e[t]}}function wN({scale:e,type:t,domain:r,range:n,interpolate:o,interval:i,transform:a,percent:s,pivot:f}){if(t==="identity")return{type:"identity",apply:c=>c,invert:c=>c};let u=e.unknown?e.unknown():void 0;return{type:t,domain:Bi(r),...n!==void 0&&{range:Bi(n)},...a!==void 0&&{transform:a},...s&&{percent:s},...u!==void 0&&{unknown:u},...i!==void 0&&{interval:i},...o!==void 0&&{interpolate:o},...e.clamp&&{clamp:e.clamp()},...f!==void 0&&{pivot:f,symmetric:!1},...e.base&&{base:e.base()},...e.exponent&&{exponent:e.exponent()},...e.constant&&{constant:e.constant()},...e.align&&{align:e.align(),round:e.round()},...e.padding&&(e.paddingInner?{paddingInner:e.paddingInner(),paddingOuter:e.paddingOuter()}:{padding:e.padding()}),...e.bandwidth&&{bandwidth:e.bandwidth(),step:e.step()},apply:c=>e(c),...e.invert&&{invert:c=>e.invert(c)}}}function jT(e,t){let{fx:r,fy:n}=Nu(e,t),o=r?.scale.domain(),i=n?.scale.domain();return o&&i?Ol(o,i).map(([a,s],f)=>({x:a,y:s,i:f})):o?o.map((a,s)=>({x:a,i:s})):i?i.map((a,s)=>({y:a,i:s})):void 0}function BT(e,{x:t,y:r}){return t&&=rb(t),r&&=rb(r),e.filter(t&&r?n=>t.has(n.x)&&r.has(n.y):t?n=>t.has(n.x):n=>r.has(n.y)).sort(t&&r?(n,o)=>t.get(n.x)-t.get(o.x)||r.get(n.y)-r.get(o.y):t?(n,o)=>t.get(n.x)-t.get(o.x):(n,o)=>r.get(n.y)-r.get(o.y))}function Pd(e,{fx:t,fy:r}){let n=Rr(e),o=t?.value,i=r?.value;return t&&r?Qn(n,a=>(a.fx=o[a[0]],a.fy=i[a[0]],a),a=>o[a],a=>i[a]):t?Qn(n,a=>(a.fx=o[a[0]],a),a=>o[a]):Qn(n,a=>(a.fy=i[a[0]],a),a=>i[a])}function GT(e,t,{marginTop:r,marginLeft:n}){let o=e?({x:a})=>e(a)-n:()=>0,i=t?({y:a})=>t(a)-r:()=>0;return function(a){this.tagName==="svg"?(this.setAttribute("x",o(a)),this.setAttribute("y",i(a))):this.setAttribute("transform",`translate(${o(a)},${i(a)})`)}}function zT(e){let t=[],r=new Uint32Array(rn(e,n=>n.length));for(let n of e){let o=0;for(let i of e)n!==i&&(r.set(i,o),o+=i.length);t.push(r.slice(0,o))}return t}var SN=new Map([["top",Qg],["right",tb],["bottom",Jg],["left",eb],["top-left",Ad(Qg,eb)],["top-right",Ad(Qg,tb)],["bottom-left",Ad(Jg,eb)],["bottom-right",Ad(Jg,tb)],["top-empty",_N],["right-empty",MN],["bottom-empty",vN],["left-empty",TN],["empty",ON]]);function KT(e){if(e==null)return null;let t=SN.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid facet anchor: ${e}`)}var UT=new WeakMap;function rb(e){let t=UT.get(e);return t||UT.set(e,t=new pr(We(e,(r,n)=>[r,n]))),t}function Xi(e,t){return rb(e).get(t)}function IN(e,t,r){return t=dn(t),r=dn(r),e.find(n=>Object.is(dn(n.x),t)&&Object.is(dn(n.y),r))}function kd(e,t,r){return IN(e,t,r)?.empty}function Qg(e,{y:t},{y:r}){return t?Xi(t,r)===0:!0}function Jg(e,{y:t},{y:r}){return t?Xi(t,r)===t.length-1:!0}function eb(e,{x:t},{x:r}){return t?Xi(t,r)===0:!0}function tb(e,{x:t},{x:r}){return t?Xi(t,r)===t.length-1:!0}function _N(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Xi(t,n);if(i>0)return kd(e,r,t[i-1])}function vN(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Xi(t,n);if(i0)return kd(e,t[i-1],n)}function MN(e,{x:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Xi(t,r);if(in.get(o)?.get(i)??[]):t?e.map(({x:o})=>n.get(o)??[]):e.map(({y:o})=>n.get(o)??[])}var qT=Math.PI,ui=2*qT,nb=.618;function HT({projection:e,inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={},a){if(e==null)return;if(typeof e.stream=="function")return e;let s,f,u="frame";if(wo(e)){let T;if({type:e,domain:f,inset:T,insetTop:r=T!==void 0?T:r,insetRight:n=T!==void 0?T:n,insetBottom:o=T!==void 0?T:o,insetLeft:i=T!==void 0?T:i,clip:u=u,...s}=e,e==null)return}typeof e!="function"&&({type:e}=ob(e));let{width:c,height:m,marginLeft:l,marginRight:p,marginTop:d,marginBottom:y}=a,x=c-l-p-i-n,w=m-d-y-r-o;if(e=e?.({width:x,height:w,clip:u,...s}),e==null)return;u=RN(u,l,d,c-p,m-y);let g=l+i,S=d+r,b;if(f!=null){let[[T,I],[v,O]]=Ks(e).bounds(f),C=Math.min(x/(v-T),w/(O-I));C>0?(g-=(C*(T+v)-x)/2,S-=(C*(I+O)-w)/2,b=qs({point(E,A){this.stream.point(E*C+g,A*C+S)}})):Cr("Warning: the projection could not be fit to the specified domain; using the default scale.")}return b??=g===0&&S===0?YT():qs({point(T,I){this.stream.point(T+g,I+S)}}),{stream:T=>e.stream(b.stream(u(T)))}}function ob(e){switch(`${e}`.toLowerCase()){case"albers-usa":return Vn(zy,.7463,.4673);case"albers":return Fd(jc,.7463,.4673);case"azimuthal-equal-area":return Vn(qy,4,4);case"azimuthal-equidistant":return Vn(Yy,ui,ui);case"conic-conformal":return Fd(Zy,ui,ui);case"conic-equal-area":return Fd(Fi,6.1702,2.9781);case"conic-equidistant":return Fd(Jy,7.312,3.6282);case"equal-earth":return Vn(tx,5.4133,2.6347);case"equirectangular":return Vn(Qy,ui,qT);case"gnomonic":return Vn(nx,3.4641,3.4641);case"identity":return{type:YT};case"reflect-y":return{type:CN};case"mercator":return Vn(Wy,ui,ui);case"orthographic":return Vn(ix,2,2);case"stereographic":return Vn(sx,2,2);case"transverse-mercator":return Vn(cx,ui,ui);default:throw new Error(`unknown projection type: ${e}`)}}function RN(e,t,r,n,o){if(e===!1||e==null||typeof e=="number")return i=>i;switch(e===!0&&(e="frame"),`${e}`.toLowerCase()){case"frame":return Us(t,r,n,o);default:throw new Error(`unknown projection clip type: ${e}`)}}function Vn(e,t,r){return{type:({width:n,height:o,rotate:i,precision:a=.15,clip:s})=>{let f=e();return a!=null&&f.precision?.(a),i!=null&&f.rotate?.(i),typeof s=="number"&&f.clipAngle?.(s),n!=null&&(f.scale(Math.min(n/t,o/r)),f.translate([n/2,o/2])),f},aspectRatio:r/t}}function Fd(e,t,r){let{type:n,aspectRatio:o}=Vn(e,t,r);return{type:i=>{let{parallels:a,domain:s,width:f,height:u}=i,c=n(i);return a!=null&&(c.parallels(a),s===void 0&&f!=null&&c.fitSize([f,u],{type:"Sphere"})),c},aspectRatio:o}}var YT=Gr({stream:e=>e}),CN=Gr(qs({point(e,t){this.stream.point(e,-t)}}));function WT(e,t,r,n){let o=r[e],i=r[t],a=o.length,s=r[e]=new Float64Array(a).fill(NaN),f=r[t]=new Float64Array(a).fill(NaN),u,c=n.stream({point(m,l){s[u]=m,f[u]=l}});for(u=0;u5?5:f:nb}}if(e!=null){if(typeof e!="function"){let{aspectRatio:t}=ob(e);if(t)return t}return nb}}function QT(e){let t=[],r=[],n={scale:"x",value:t},o={scale:"y",value:r},i={point(a,s){t.push(a),r.push(s)},lineStart(){},lineEnd(){},polygonStart(){},polygonEnd(){},sphere(){}};for(let a of e.value)$n(a,i);return[n,o]}function JT({x:e,y:t}){if(e||t)return e??=r=>r,t??=r=>r,qs({point(r,n){this.stream.point(e(r),t(n))}})}function vf(e={}){let{document:t=typeof window<"u"?window.document:void 0,clip:r}=e;return{document:t,clip:Td(r)}}function Ve(e,{document:t}){return nn(Go(e).call(t.documentElement))}var Ed=Symbol("unset");function $d(e){return(e.length===1?AN:PN)(e)}function AN(e){let t,r=Ed;return n=>(Object.is(r,n)||(r=n,t=e(n)),t)}function PN(e){let t,r;return(...n)=>((r?.length!==n.length||r.some((o,i)=>!Object.is(o,n[i])))&&(r=n,t=e(...n)),t)}var kN=$d(e=>new Intl.NumberFormat(e)),Vbe=$d((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{month:t}})),Ube=$d((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{weekday:t}}));function NN(e="en-US"){let t=kN(e);return r=>r!=null&&!isNaN(r)?t.format(r):void 0}function FN(e){return yd(e,"Invalid Date")}function EN(e="en-US"){let t=NN(e);return r=>(r instanceof Date?FN:typeof r=="number"?t:wt)(r)}var Io=EN();var Zt=(typeof window<"u"?window.devicePixelRatio>1:typeof it>"u")?0:.5,$N=0;function tM(){return`plot-clip-${++$N}`}function rM(e,{title:t,href:r,ariaLabel:n,ariaDescription:o,ariaHidden:i,target:a,fill:s,fillOpacity:f,stroke:u,strokeWidth:c,strokeOpacity:m,strokeLinejoin:l,strokeLinecap:p,strokeMiterlimit:d,strokeDasharray:y,strokeDashoffset:x,opacity:w,mixBlendMode:g,imageFilter:S,paintOrder:b,pointerEvents:T,shapeRendering:I,channels:v},{ariaLabel:O,fill:C="currentColor",fillOpacity:E,stroke:A="none",strokeOpacity:F,strokeWidth:H,strokeLinecap:j,strokeLinejoin:M,strokeMiterlimit:U,paintOrder:D}){C===null&&(s=null,f=null),A===null&&(u=null,m=null),Ut(C)?!Ut(A)&&(!Ut(s)||v?.fill)&&(A="none"):Ut(A)&&(!Ut(u)||v?.stroke)&&(C="none");let[oe,V]=go(s,C),[K,Y]=ht(f,E),[Z,J]=go(u,A),[ye,B]=ht(m,F),[W,X]=ht(w);Ka(J)||(c===void 0&&(c=H),p===void 0&&(p=j),l===void 0&&(l=M),d===void 0&&!A6(l)&&(d=U),!Ka(V)&&b===void 0&&(b=D));let[le,L]=ht(c);return C!==null&&(e.fill=yt(V,"currentColor"),e.fillOpacity=Fu(Y,1)),A!==null&&(e.stroke=yt(J,"none"),e.strokeWidth=Fu(L,1),e.strokeOpacity=Fu(B,1),e.strokeLinejoin=yt(l,"miter"),e.strokeLinecap=yt(p,"butt"),e.strokeMiterlimit=Fu(d,4),e.strokeDasharray=yt(y,"none"),e.strokeDashoffset=yt(x,"0")),e.target=wt(a),e.ariaLabel=wt(O),e.ariaDescription=wt(o),e.ariaHidden=wt(i),e.opacity=Fu(X,1),e.mixBlendMode=yt(g,"normal"),e.imageFilter=yt(S,"none"),e.paintOrder=yt(b,"normal"),e.pointerEvents=yt(T,"auto"),e.shapeRendering=yt(I,"auto"),{title:{value:t,optional:!0,filter:null},href:{value:r,optional:!0,filter:null},ariaLabel:{value:n,optional:!0,filter:null},fill:{value:oe,scale:"auto",optional:!0},fillOpacity:{value:K,scale:"auto",optional:!0},stroke:{value:Z,scale:"auto",optional:!0},strokeOpacity:{value:ye,scale:"auto",optional:!0},strokeWidth:{value:le,optional:!0},opacity:{value:W,scale:"auto",optional:!0}}}function LN(e,t){t&&e.filter(r=>Tu(t[r])).append("title").call(VN,t)}function DN(e,t){t&&e.filter(([r])=>Tu(t[r])).append("title").call(UN,t)}function VN(e,t){t&&e.text(r=>Io(t[r]))}function UN(e,t){t&&e.text(([r])=>Io(t[r]))}function Ar(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:f,strokeWidth:u,opacity:c,href:m}){n&&pe(e,"aria-label",l=>n[l]),i&&pe(e,"fill",l=>i[l]),a&&pe(e,"fill-opacity",l=>a[l]),s&&pe(e,"stroke",l=>s[l]),f&&pe(e,"stroke-opacity",l=>f[l]),u&&pe(e,"stroke-width",l=>u[l]),c&&pe(e,"opacity",l=>c[l]),m&&iM(e,l=>m[l],t),r||LN(e,o)}function nM(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:f,strokeWidth:u,opacity:c,href:m}){n&&pe(e,"aria-label",([l])=>n[l]),i&&pe(e,"fill",([l])=>i[l]),a&&pe(e,"fill-opacity",([l])=>a[l]),s&&pe(e,"stroke",([l])=>s[l]),f&&pe(e,"stroke-opacity",([l])=>f[l]),u&&pe(e,"stroke-width",([l])=>u[l]),c&&pe(e,"opacity",([l])=>c[l]),m&&iM(e,([l])=>m[l],t),r||DN(e,o)}function jN({ariaLabel:e,title:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:i,strokeWidth:a,opacity:s,href:f},{tip:u}){return[e,u?void 0:t,r,n,o,i,a,s,f].filter(c=>c!==void 0)}function BN(e,t,r){let n=Vo(e,o=>t[o]);return r===void 0&&n.size>1+e.length>>1&&Cr("Warning: the implicit z channel has high cardinality. This may occur when the fill or stroke channel is associated with quantitative data rather than ordinal or categorical data. You can suppress this warning by setting the z option explicitly; if this data represents a single series, set z to null."),n.values()}function*oM(e,t,r,n){let{z:o}=r,{z:i}=n,a=jN(n,r),s=[...t,...a];for(let f of i?BN(e,i,o):[e]){let u,c;e:for(let m of f){for(let l of s)if(!mn(l[m])){c&&c.push(-1);continue e}if(u===void 0){c&&(yield c),u=a.map(l=>dn(l[m])),c=[m];continue}c.push(m);for(let l=0;ldn(d[m])),c=[m];continue e}}c&&(yield c)}}function GN(e,t,r,n){let o,{clip:i=n.clip}=t;i==="frame"?(e=Ve("svg:g",n).each(function(){this.appendChild(e.node()),e.node=()=>this}),o=KN(n,r)):i&&(o=HN(i,n)),pe(e,"aria-label",t.ariaLabel),pe(e,"aria-description",t.ariaDescription),pe(e,"aria-hidden",t.ariaHidden),pe(e,"clip-path",o)}function zN(e){let t=new WeakMap;return(r,n)=>{let o=t.get(r);if(!o){let i=tM();nn(r.ownerSVGElement).append("clipPath").attr("id",i).call(e,r,n),t.set(r,o=`url(#${i})`)}return o}}var KN=zN((e,t,r)=>{let{width:n,height:o,marginLeft:i,marginRight:a,marginTop:s,marginBottom:f}=r;e.append("rect").attr("x",i).attr("y",s).attr("width",n-a-i).attr("height",o-s-f)}),eM=new WeakMap,qN={type:"Sphere"};function HN(e,t){let r,n;if((r=eM.get(t))||eM.set(t,r=new WeakMap),e.type==="Sphere"&&(e=qN),!(n=r.get(e))){let o=tM();nn(t.ownerSVGElement).append("clipPath").attr("id",o).append("path").attr("d",t.path()(e)),r.set(e,n=`url(#${o})`)}return n}function Qt(e,t,r,n){GN(e,t,r,n),pe(e,"class",t.className),pe(e,"fill",t.fill),pe(e,"fill-opacity",t.fillOpacity),pe(e,"stroke",t.stroke),pe(e,"stroke-width",t.strokeWidth),pe(e,"stroke-opacity",t.strokeOpacity),pe(e,"stroke-linejoin",t.strokeLinejoin),pe(e,"stroke-linecap",t.strokeLinecap),pe(e,"stroke-miterlimit",t.strokeMiterlimit),pe(e,"stroke-dasharray",t.strokeDasharray),pe(e,"stroke-dashoffset",t.strokeDashoffset),pe(e,"shape-rendering",t.shapeRendering),pe(e,"filter",t.imageFilter),pe(e,"paint-order",t.paintOrder);let{pointerEvents:o=n.pointerSticky===!1?"none":void 0}=t;pe(e,"pointer-events",o)}function Bt(e,t){YN(e,"mix-blend-mode",t.mixBlendMode),pe(e,"opacity",t.opacity)}function iM(e,t,r){e.each(function(n){let o=t(n);if(o!=null){let i=this.ownerDocument.createElementNS(Jn.svg,"a");i.setAttribute("fill","inherit"),i.setAttributeNS(Jn.xlink,"href",o),r!=null&&i.setAttribute("target",r),this.parentNode.insertBefore(i,this).appendChild(this)}})}function pe(e,t,r){r!=null&&e.attr(t,r)}function YN(e,t,r){r!=null&&e.style(t,r)}function Jt(e,t,{x:r,y:n},o=Zt,i=Zt){o+=t.dx,i+=t.dy,r?.bandwidth&&(o+=r.bandwidth()/2),n?.bandwidth&&(i+=n.bandwidth()/2),(o||i)&&e.attr("transform",`translate(${o},${i})`)}function yt(e,t){if((e=wt(e))!==t)return e}function Fu(e,t){if((e=St(e))!==t)return e}var WN=/^-?([_a-z]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])([_a-z0-9-]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])*$/i;function Tf(e){if(e===void 0)return"plot-d6a7b5";if(e=`${e}`,!WN.test(e))throw new Error(`invalid class name: ${e}`);return e}function Mf(e,t){if(typeof t=="string")e.property("style",t);else if(t!=null)for(let r of e)Object.assign(r.style,t)}function _o({frameAnchor:e},{width:t,height:r,marginTop:n,marginRight:o,marginBottom:i,marginLeft:a}){return[/left$/.test(e)?a:/right$/.test(e)?t-o:(a+t-o)/2,/^top/.test(e)?n:/^bottom/.test(e)?r-i:(n+r-i)/2]}var ot=class{constructor(t,r={},n={},o){let{facet:i="auto",facetAnchor:a,fx:s,fy:f,sort:u,dx:c=0,dy:m=0,margin:l=0,marginTop:p=l,marginRight:d=l,marginBottom:y=l,marginLeft:x=l,className:w,clip:g=o?.clip,channels:S,tip:b,render:T}=n;if(this.data=t,this.sort=Gi(u)?u:null,this.initializer=ai(n).initializer,this.transform=this.initializer?n.transform:Au(n).transform,i===null||i===!1?this.facet=null:(this.facet=yr(i===!0?"include":i,"facet",["auto","include","exclude","super"]),this.fx=t===pf&&typeof s=="string"?[s]:s,this.fy=t===pf&&typeof f=="string"?[f]:f),this.facetAnchor=KT(a),r=Pg(r),S!==void 0&&(r={...XN(S),...r}),o!==void 0&&(r={...rM(this,n,o),...r}),this.channels=Object.fromEntries(Object.entries(r).map(([I,v])=>{if(df(v.value)){let{value:O,label:C=v.label,scale:E=v.scale}=v.value;v={...v,label:C,scale:E,value:O}}if(t===pf&&typeof v.value=="string"){let{value:O}=v;v={...v,value:[O]}}return[I,v]}).filter(([I,{value:v,optional:O}])=>{if(v!=null)return!0;if(O)return!1;throw new Error(`missing channel value: ${I}`)})),this.dx=+c,this.dy=+m,this.marginTop=+p,this.marginRight=+d,this.marginBottom=+y,this.marginLeft=+x,this.clip=Td(g),this.tip=ZN(b),this.className=wt(w),this.facet==="super"){if(s||f)throw new Error("super-faceting cannot use fx or fy");for(let I in this.channels){let{scale:v}=r[I];if(!(v!=="x"&&v!=="y"))throw new Error("super-faceting cannot use x or y")}}T!=null&&(this.render=ab(T,this.render))}initialize(t,r,n){let o=oi(this.data);t===void 0&&o!=null&&(t=[Rr(o)]);let i=t;this.transform!=null&&({facets:t,data:o}=this.transform(o,t,n),o=oi(o)),t!==void 0&&(t.original=i);let a=H6(this.channels,o);return this.sort!=null&&W6(o,t,a,r,this.sort),{data:o,facets:t,channels:a}}filter(t,r,n){for(let o in r){let{filter:i=mn}=r[o];if(i!==null){let a=n[o];t=t.filter(s=>i(a[s]))}}return t}project(t,r,n){for(let o in t)if(t[o].scale==="x"&&/^x|x$/.test(o)){let i=o.replace(/^x|x$/,"y");i in t&&t[i].scale==="y"&&WT(o,i,r,n.projection)}}scale(t,r,n){let o=Y6(t,r);return n.projection&&this.project(t,o,n),o}};function ib(...e){return e.plot=ot.prototype.plot,e}function ab(e,t){if(e==null)return t===null?void 0:t;if(t==null)return e===null?void 0:e;if(typeof e!="function")throw new TypeError(`invalid render transform: ${e}`);if(typeof t!="function")throw new TypeError(`invalid render transform: ${t}`);return function(r,n,o,i,a,s){return e.call(this,r,n,o,i,a,(f,u,c,m,l)=>t.call(this,f,u,c,m,l,s))}}function XN(e){return Object.fromEntries(Object.entries(Pg(e)).map(([t,r])=>(r=typeof r=="string"?{value:r,label:t}:Hi(r),r.filter===void 0&&r.scale==null&&(r={...r,filter:null}),[t,r])))}function ZN(e){return e===!0?"xy":e===!1||e==null?null:typeof e=="string"?yr(e,"tip",["x","y","xy"]):e}function Eu(e,t){return e?.tip===!0?{...e,tip:t}:wo(e?.tip)&&e.tip.pointer===void 0?{...e,tip:{...e.tip,pointer:t}}:e}function sM(e,t,r={}){let n=.5-Zt,o=.5+Zt,i=.5+Zt,a=.5-Zt;for(let{marginTop:y,marginRight:x,marginBottom:w,marginLeft:g}of t)y>n&&(n=y),x>o&&(o=x),w>i&&(i=w),g>a&&(a=g);let{margin:s,marginTop:f=s!==void 0?s:n,marginRight:u=s!==void 0?s:o,marginBottom:c=s!==void 0?s:i,marginLeft:m=s!==void 0?s:a}=r;f=+f,u=+u,c=+c,m=+m;let{width:l=640,height:p=QN(e,r,{width:l,marginTopDefault:n,marginRightDefault:o,marginBottomDefault:i,marginLeftDefault:a})+Math.max(0,f-n+c-i)}=r;l=+l,p=+p;let d={width:l,height:p,marginTop:f,marginRight:u,marginBottom:c,marginLeft:m};if(e.fx||e.fy){let{margin:y,marginTop:x=y!==void 0?y:f,marginRight:w=y!==void 0?y:u,marginBottom:g=y!==void 0?y:c,marginLeft:S=y!==void 0?y:m}=r.facet??{};x=+x,w=+w,g=+g,S=+S,d.facet={marginTop:x,marginRight:w,marginBottom:g,marginLeft:S}}return d}function QN({x:e,y:t,fy:r,fx:n},{projection:o,aspectRatio:i},{width:a,marginTopDefault:s,marginRightDefault:f,marginBottomDefault:u,marginLeftDefault:c}){let m=r&&r.scale.domain().length||1,l=ZT(o);if(l){let d=n?n.scale.domain().length:1,y=(1.1*m-.1)/(1.1*d-.1)*l,x=Math.max(.1,Math.min(10,y));return Math.round((a-c-f)*x+s+u)}let p=t?So(t)?t.scale.domain().length||1:Math.max(7,17/m):1;if(i!=null){if(i=+i,!(isFinite(i)&&i>0))throw new Error(`invalid aspectRatio: ${i}`);let d=aM("y",t)/(aM("x",e)*i),y=n?n.scale.bandwidth():1,x=r?r.scale.bandwidth():1,w=y*(a-c-f)-e.insetLeft-e.insetRight;return(d*w+t.insetTop+t.insetBottom)/x+s+u}return!!(t||r)*Math.max(1,Math.min(60,p*m))*20+!!n*30+60}function aM(e,t){if(!t)throw new Error(`aspectRatio requires ${e} scale`);let{type:r,domain:n}=t,o;switch(r){case"linear":case"utc":case"time":o=Number;break;case"pow":{let s=t.scale.exponent();o=f=>Math.pow(f,s);break}case"log":o=Math.log;break;case"point":case"band":return n.length;default:throw new Error(`unsupported ${e} scale for aspectRatio: ${r}`)}let[i,a]=Tr(n);return Math.abs(o(a)-o(i))}var fM=new WeakMap;function sb(e,t,{x:r,y:n,px:o,py:i,maxRadius:a=40,channels:s,render:f,...u}={}){return a=+a,o!=null&&(r??=null,s={...s,px:{value:o,scale:"x"}}),i!=null&&(n??=null,s={...s,py:{value:i,scale:"y"}}),{x:r,y:n,channels:s,...u,render:ab(function(c,m,l,p,d,y){d={...d,pointerSticky:!1};let x=d.ownerSVGElement,{data:w}=d.getMarkState(this),g=fM.get(x);g||fM.set(x,g={sticky:!1,roots:[],renders:[]});let S=g.renders.push(J)-1,{x:b,y:T,fx:I,fy:v}=m,O=I?I(c.fx)-p.marginLeft:0,C=v?v(c.fy)-p.marginTop:0;b?.bandwidth&&(O+=b.bandwidth()/2),T?.bandwidth&&(C+=T.bandwidth()/2);let E=c.fi!=null,A;if(E){let X=g.facetStates;X||(g.facetStates=X=new Map),A=X.get(this),A||X.set(this,A=new Map)}let[F,H]=_o(this,p),{px:j,py:M}=l,U=j?X=>j[X]:cb(l,F),D=M?X=>M[X]:ub(l,H),oe,V,K,Y;function Z(X,le){if(E)if(Y&&(Y=cancelAnimationFrame(Y)),X==null)A.delete(c.fi);else{A.set(c.fi,le),Y=requestAnimationFrame(()=>{Y=null;for(let[L,Q]of A)if(Q1)){let Q=oe==null?null:Dn(w)?w[oe]:w.get(oe);d.dispatchValue(Q)}return L}function ye(X){if(g.sticky||X.pointerType==="mouse"&&X.buttons===1)return;let[le,L]=H0(X);le-=O,L-=C;let Q=lep.width-p.marginRight?1:e,re=Lp.height-p.marginBottom?1:t,$=null,ke=a*a;for(let G of c){let ae=Q*(U(G)-le),xe=re*(D(G)-L),Ge=ae*ae+xe*xe;Ge<=ke&&($=G,ke=Ge)}if($!=null&&(e!==1||t!==1)){let G=U($)-le,ae=D($)-L;ke=G*G+ae*ae}Z($,ke)}function B(X){X.pointerType==="mouse"&&oe!=null&&(g.sticky&&g.roots.some(le=>le?.contains(X.target))||(g.sticky?(g.sticky=!1,g.renders.forEach(le=>le(null))):(g.sticky=!0,J(oe)),X.stopImmediatePropagation()))}function W(X){X.pointerType==="mouse"&&(g.sticky||Z(null))}return x.addEventListener("pointerenter",ye),x.addEventListener("pointermove",ye),x.addEventListener("pointerdown",B),x.addEventListener("pointerleave",W),J(null)},f)}}function cM(e){return sb(1,1,e)}function uM(e){return sb(1,.01,e)}function fb(e){return sb(.01,1,e)}function cb({x1:e,x2:t,x:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function ub({y1:e,y2:t,y:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function Ld(e){return So(e)&&e.interval===void 0?void 0:"tabular-nums"}function lM(e,t){let{label:r=e.label,tickSize:n=6,width:o=240,height:i=44+n,marginTop:a=18,marginRight:s=0,marginBottom:f=16+n,marginLeft:u=0,style:c,ticks:m=(o-u-s)/64,tickFormat:l,fontVariant:p=Ld(e),round:d=!0,opacity:y,className:x}=t,w=vf(t);x=Tf(x),y=ht(y)[1],l===null&&(l=()=>null);let g=Ve("svg",w).attr("class",`${x}-ramp`).attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("width",o).attr("height",i).attr("viewBox",`0 0 ${o} ${i}`).call(F=>F.append("style").text(`:where(.${x}-ramp) { + display: block; + height: auto; + height: intrinsic; + max-width: 100%; + overflow: visible; } -function generateUniqueDomId(rawId, used) { - let base = rawId.toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "") || "id"; - if (!/^[a-z]/i.test(base)) { - base = `id-${base}`; - } - let candidate = base; - let counter = 1; - while (used.has(candidate)) { - candidate = `${base}-${counter}`; - counter++; - } - used.add(candidate); - return candidate; +:where(.${x}-ramp text) { + white-space: pre; +}`)).call(Mf,c),S=F=>F.selectAll(".tick line").attr("y1",a+f-i),b,T=d?(F,H)=>F.rangeRound(H):(F,H)=>F.range(H),{type:I,domain:v,range:O,interpolate:C,scale:E,pivot:A}=e;if(C){let F=O===void 0?C:no(C.length===1?ku(C):C,O);b=T(E.copy(),ir(et(u,o-s),Math.min(v.length+(A!==void 0),O===void 0?1/0:O.length)));let H=256,j=w.document.createElement("canvas");j.width=H,j.height=1;let M=j.getContext("2d");for(let U=0,D=H-1;Uj:typeof l=="string"?sn(l):l;b=T(Pa().domain([-1,O.length-1]),[u,o-s]),g.append("g").attr("fill-opacity",y).selectAll().data(O).enter().append("rect").attr("x",(j,M)=>b(M-1)).attr("y",a).attr("width",(j,M)=>b(M)-b(M-1)).attr("height",i-a-f).attr("fill",j=>j),m=We(F,(j,M)=>M),l=j=>H(F[j],j)}else b=T(Ei().domain(v),[u,o-s]),g.append("g").attr("fill-opacity",y).selectAll().data(v).enter().append("rect").attr("x",b).attr("y",a).attr("width",Math.max(0,b.bandwidth()-1)).attr("height",i-a-f).attr("fill",E),S=()=>{};return g.append("g").attr("transform",`translate(0,${i-f})`).call(B0(b).ticks(Array.isArray(m)?null:m,typeof l=="string"?l:void 0).tickFormat(typeof l=="function"?l:void 0).tickSize(n).tickValues(Array.isArray(m)?m:null)).attr("font-size",null).attr("font-family",null).attr("font-variant",yt(p,"normal")).call(S).call(F=>F.select(".domain").remove()),r!==void 0&&g.append("text").attr("x",u).attr("y",a-6).attr("fill","currentColor").attr("font-weight","bold").text(r),g.node()}var lb=Math.PI/180;function $u(e,{marker:t,markerStart:r=t,markerMid:n=t,markerEnd:o=t}={}){e.markerStart=pb(r),e.markerMid=pb(n),e.markerEnd=pb(o)}function pb(e){if(e==null||e===!1)return null;if(e===!0)return mM;if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"none":return null;case"arrow":return pM("auto");case"arrow-reverse":return pM("auto-start-reverse");case"dot":return JN;case"circle":case"circle-fill":return mM;case"circle-stroke":return eF;case"tick":return mb("auto");case"tick-x":return mb(90);case"tick-y":return mb(0)}throw new Error(`invalid marker: ${e}`)}function pM(e){return(t,r)=>Ve("svg:marker",r).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("orient",e).attr("fill","none").attr("stroke",t).attr("stroke-width",1.5).attr("stroke-linecap","round").attr("stroke-linejoin","round").call(n=>n.append("path").attr("d","M-1.5,-3l3,3l-3,3")).node()}function JN(e,t){return Ve("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","none").call(r=>r.append("circle").attr("r",2.5)).node()}function mM(e,t){return Ve("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","var(--plot-background)").attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function eF(e,t){return Ve("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill","var(--plot-background)").attr("stroke",e).attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function mb(e){return(t,r)=>Ve("svg:marker",r).attr("viewBox","-3 -3 6 6").attr("markerWidth",6).attr("markerHeight",6).attr("orient",e).attr("stroke",t).call(n=>n.append("path").attr("d","M0,-3v6")).node()}var tF=0;function hb(e,t,{stroke:r},n){return yM(e,t,r&&(o=>r[o]),null,n)}function dM(e,t,{stroke:r,z:n},o){return yM(e,t,r&&(([i])=>r[i]),n,o)}var db=1,hM=2;function rF(e,t){let r=new Uint8Array(t.length),n=e.data().filter(i=>i.length>1),o=n.length;for(let i=0,a=Ed;i1){let f=s[0];a!==(a=dn(t[f]))&&(r[f]|=db)}}for(let i=o-1,a=Ed;i>=0;--i){let s=n[i];if(s.length>1){let f=s[0];a!==(a=dn(t[f]))&&(r[f]|=hM)}}return([i])=>r[i]}function yM(e,{markerStart:t,markerMid:r,markerEnd:n,stroke:o},i=()=>o,a,s){if(!t&&!r&&!n)return;let f=new Map,u=a&&rF(e,a);function c(m,l,p){return function(d){if(p&&!p(d))return;let y=i(d),x=f.get(l);x||f.set(l,x=new Map);let w=x.get(y);if(!w){let g=this.parentNode.insertBefore(l(y,s),this),S=`plot-marker-${++tF}`;g.setAttribute("id",S),x.set(y,w=`url(#${S})`)}this.setAttribute(m,w)}}t&&e.each(c("marker-start",t,u&&(m=>u(m)&db))),r&&u&&e.each(c("marker-start",r,m=>!(u(m)&db))),r&&e.each(c("marker-mid",r)),n&&e.each(c("marker-end",n,u&&(m=>u(m)&hM)))}function Dd({inset:e,insetLeft:t,insetRight:r,...n}={}){return[t,r]=xM(e,t,r),{inset:e,insetLeft:t,insetRight:r,...n}}function yb({inset:e,insetTop:t,insetBottom:r,...n}={}){return[t,r]=xM(e,t,r),{inset:e,insetTop:t,insetBottom:r,...n}}function xM(e,t,r){return e===void 0&&t===void 0&&r===void 0?Zt?[1,0]:[.5,.5]:[t,r]}function gM(e,{interval:t}){return e={...Hi(e)},e.interval=Sd(e.interval===void 0?t:e.interval),e}function xb(e,t,r,n){let{[e]:o,[`${e}1`]:i,[`${e}2`]:a}=r,{value:s,interval:f}=gM(o,r);if(s==null||f==null&&!n)return r;let u=Ki(o);if(f==null){let p,d={transform:y=>p||(p=Vt(y,s)),label:u};return{...r,[e]:void 0,[`${e}1`]:i===void 0?d:i,[`${e}2`]:a===void 0&&!(i===a&&n)?d:a}}let c,m;function l(p){return m!==void 0&&p===c?m:m=We(Vt(c=p,s),d=>f.floor(d))}return t({...r,[e]:void 0,[`${e}1`]:i===void 0?{transform:l,label:u}:i,[`${e}2`]:a===void 0?{transform:p=>l(p).map(d=>f.offset(d)),label:u}:a})}function bM(e,t,r){let{[e]:n}=r,{value:o,interval:i}=gM(n,r);return o==null||i==null?r:t({...r,[e]:{label:Ki(n),transform:a=>{let s=We(Vt(a,o),u=>i.floor(u)),f=s.map(u=>i.offset(u));return s.map(Dt(s)?(u,c)=>u==null||isNaN(u=+u)||(c=f[c],c==null)||isNaN(c=+c)?void 0:new Date((u+c)/2):(u,c)=>u==null||(c=f[c],c==null)?NaN:(+u+ +c)/2)}}})}function wM(e={}){return xb("x",Dd,e,!0)}function SM(e={}){return xb("x",Dd,e)}function IM(e={}){return xb("y",yb,e)}function _M(e={}){return bM("x",Dd,e)}function vM(e={}){return bM("y",yb,e)}var TM={ariaLabel:"rule",fill:null,stroke:"currentColor"},Vd=class extends ot{constructor(t,r={}){let{x:n,y1:o,y2:i,inset:a=0,insetTop:s=a,insetBottom:f=a}=r;super(t,{x:{value:n,scale:"x",optional:!0},y1:{value:o,scale:"y",optional:!0},y2:{value:i,scale:"y",optional:!0}},Eu(r,"x"),TM),this.insetTop=St(s),this.insetBottom=St(f),$u(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:f,y1:u,y2:c}=n,{width:m,height:l,marginTop:p,marginRight:d,marginLeft:y,marginBottom:x}=o,{insetTop:w,insetBottom:g}=this;return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,{x:f&&a},Zt,0).call(S=>S.selectAll().data(t).enter().append("line").call(Bt,this).attr("x1",f?b=>f[b]:(y+m-d)/2).attr("x2",f?b=>f[b]:(y+m-d)/2).attr("y1",u&&!Wi(s)?b=>u[b]+w:p+w).attr("y2",c&&!Wi(s)?s.bandwidth?b=>c[b]+s.bandwidth()-g:b=>c[b]-g:l-x-g).call(Ar,this,n).call(hb,this,n,i)).node()}},Ud=class extends ot{constructor(t,r={}){let{x1:n,x2:o,y:i,inset:a=0,insetRight:s=a,insetLeft:f=a}=r;super(t,{y:{value:i,scale:"y",optional:!0},x1:{value:n,scale:"x",optional:!0},x2:{value:o,scale:"x",optional:!0}},Eu(r,"y"),TM),this.insetRight=St(s),this.insetLeft=St(f),$u(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{y:f,x1:u,x2:c}=n,{width:m,height:l,marginTop:p,marginRight:d,marginLeft:y,marginBottom:x}=o,{insetLeft:w,insetRight:g}=this;return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,{y:f&&s},0,Zt).call(S=>S.selectAll().data(t).enter().append("line").call(Bt,this).attr("x1",u&&!Wi(a)?b=>u[b]+w:y+w).attr("x2",c&&!Wi(a)?a.bandwidth?b=>c[b]+a.bandwidth()-g:b=>c[b]-g:m-d-g).attr("y1",f?b=>f[b]:(p+l-x)/2).attr("y2",f?b=>f[b]:(p+l-x)/2).call(Ar,this,n).call(hb,this,n,i)).node()}};function gb(e,t){let{x:r=dt,y:n,y1:o,y2:i,...a}=IM(t);return[o,i]=MM(n,o,i),new Vd(e,{...a,x:r,y1:o,y2:i})}function li(e,t){let{y:r=dt,x:n,x1:o,x2:i,...a}=SM(t);return[o,i]=MM(n,o,i),new Ud(e,{...a,y:r,x1:o,x2:i})}function MM(e,t,r){if(e==null){if(t===void 0){if(r!==void 0)return[0,r]}else if(r===void 0)return[0,t]}else{if(t===void 0)return r===void 0?[0,e]:[e,r];if(r===void 0)return[e,t]}return[t,r]}function Of(e,...t){let r=t.length;for(let n=0,o=!0;n{let o=e[0];for(let i=0;i=0))throw new Error(`invalid lineWidth: ${c}`);this.splitLines=_b(this),this.clipLine=vb(this)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:f,y:u,rotate:c,text:m,title:l,fontSize:p}=n,{rotate:d}=this,[y,x]=_o(this,o);return Ve("svg:g",i).call(Qt,this,o,i).call(Ib,this,m,o).call(Jt,this,{x:f&&a,y:u&&s}).call(w=>w.selectAll().data(t).enter().append("text").call(Bt,this).call(oF,this,m,l).attr("transform",Of`translate(${f?g=>f[g]:y},${u?g=>u[g]:x})${c?g=>` rotate(${c[g]})`:d?` rotate(${d})`:""}`).call(pe,"font-size",p&&(g=>p[g])).call(Ar,this,n)).node()}};function wb(e){return e==null?null:yr(e,"textOverflow",["clip","ellipsis","clip-start","clip-end","ellipsis-start","ellipsis-middle","ellipsis-end"]).replace(/^(clip|ellipsis)$/,"$1-end")}function oF(e,t,r,n){if(!r)return;let{lineAnchor:o,lineHeight:i,textOverflow:a,splitLines:s,clipLine:f}=t;e.each(function(u){let c=s(Io(r[u])??"").map(f),m=c.length,l=o==="top"?.71:o==="bottom"?1-m:(164-m*100)/200;if(m>1){let p=0;for(let d=0;do&&r(e,o,s)>t&&(n.push(e.slice(o,i)+(e[i-1]===PM?"-":"")),o=a),f){n.push(e.slice(o,s)),o=void 0;continue}i=s}return n}function*cF(e){let t=0,r=0,n=e.length;for(;ri.split(/\r\n?|\n/g);let n=e?Bd:jd,o=t*100;return i=>fF(i,o,n)}function vb({monospace:e,lineWidth:t,textOverflow:r}){if(r==null||t==1/0)return i=>i;let n=e?Bd:jd,o=t*100;switch(r){case"clip-start":return i=>CM(i,o,n,"");case"clip-end":return i=>RM(i,o,n,"");case"ellipsis-start":return i=>CM(i,o,n,Wa);case"ellipsis-middle":return i=>uF(i,o,n,Wa);case"ellipsis-end":return i=>RM(i,o,n,Wa)}}var Wa="\u2026";function Xa(e,t,r,n){let o=[],i=0;for(let a=0,s=0,f=e.length;at){for(i+=n;i>t&&a>0;)s=a,a=o.pop(),i-=r(e,a,s);return[a,t-i]}i+=u,o.push(a)}return[-1,0]}function RM(e,t,r,n){e=e.trim();let o=r(n),[i]=Xa(e,t,r,o);return i<0?e:e.slice(0,i).trimEnd()+n}function uF(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n)/2,[a,s]=Xa(e,t/2,r,i),[f]=Xa(e,o-t/2-s+i,r,-i);return f<0?n:e.slice(0,a).trimEnd()+n+e.slice(Rf(e,f)).trimStart()}function CM(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n),[a]=Xa(e,o-t+i,r,-i);return a<0?n:n+e.slice(Rf(e,a)).trimStart()}var bb=/[\p{Combining_Mark}\p{Emoji_Modifier}]+/uy,AM=/\p{Extended_Pictographic}/uy;function Rf(e,t){return t+=lF(e,t)?2:1,mF(e,t)&&(t=bb.lastIndex),pF(e,t)?Rf(e,t+1):t}function FM(e,t){return e.charCodeAt(t)<128}function lF(e,t){let r=e.charCodeAt(t);if(r>=55296&&r<56320){let n=e.charCodeAt(t+1);return n>=56320&&n<57344}return!1}function pF(e,t){return e.charCodeAt(t)===8205}function mF(e,t){return FM(e,t)?!1:(bb.lastIndex=t,bb.test(e))}function EM(e,t){return FM(e,t)?!1:(AM.lastIndex=t,AM.test(e))}var dF={ariaLabel:"vector",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"},$M=3.5,hF=$M*5,LM={draw(e,t,r){let n=t*r/hF;e.moveTo(0,0),e.lineTo(0,-t),e.moveTo(-n,n-t),e.lineTo(0,-t),e.lineTo(n,n-t)}},yF={draw(e,t,r){e.moveTo(-r,0),e.lineTo(0,-t),e.lineTo(r,0)}},xF=new Map([["arrow",LM],["spike",yF]]);function gF(e){return e&&typeof e.draw=="function"}function bF(e){if(gF(e))return e;let t=xF.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid shape: ${e}`)}var Gd=class extends ot{constructor(t,r={}){let{x:n,y:o,r:i=$M,length:a,rotate:s,shape:f=LM,anchor:u="middle",frameAnchor:c}=r,[m,l]=ht(a,12),[p,d]=ht(s,0);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:o,scale:"y",optional:!0},length:{value:m,scale:"length",optional:!0},rotate:{value:p,optional:!0}},r,dF),this.r=+i,this.length=l,this.rotate=d,this.shape=bF(f),this.anchor=yr(u,"anchor",["start","middle","end"]),this.frameAnchor=Yi(c)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:f,y:u,length:c,rotate:m}=n,{length:l,rotate:p,anchor:d,shape:y,r:x}=this,[w,g]=_o(this,o);return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,{x:f&&a,y:u&&s}).call(S=>S.selectAll().data(t).enter().append("path").call(Bt,this).attr("transform",Of`translate(${f?b=>f[b]:w},${u?b=>u[b]:g})${m?b=>` rotate(${m[b]})`:p?` rotate(${p})`:""}${d==="start"?"":d==="end"?c?b=>` translate(0,${c[b]})`:` translate(0,${l})`:c?b=>` translate(0,${c[b]/2})`:` translate(0,${l/2})`}`).attr("d",c?b=>{let T=En();return y.draw(T,c[b],x),T}:(()=>{let b=En();return y.draw(b,l,x),b})()).call(Ar,this,n)).node()}};function DM(e,t={}){let{x:r=dt,...n}=t;return new Gd(e,{...n,x:r})}function VM(e,t={}){let{y:r=dt,...n}=t;return new Gd(e,{...n,y:r})}function Zi(e,t){return arguments.length<2&&!hn(e)&&(t=e,e=null),t===void 0&&(t={}),[e,t]}function zd({anchor:e}={},t){return e===void 0?t[0]:yr(e,"anchor",t)}function UM(e){return zd(e,["left","right"])}function jM(e){return zd(e,["right","left"])}function BM(e){return zd(e,["bottom","top"])}function GM(e){return zd(e,["top","bottom"])}function Mb(){let[e,t]=Zi(...arguments);return qM("y",UM(t),e,t)}function zM(){let[e,t]=Zi(...arguments);return qM("fy",jM(t),e,t)}function Ob(){let[e,t]=Zi(...arguments);return HM("x",BM(t),e,t)}function KM(){let[e,t]=Zi(...arguments);return HM("fx",GM(t),e,t)}function qM(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:f=n,fillOpacity:u=o,textAnchor:c,textStroke:m,textStrokeOpacity:l,textStrokeWidth:p,tickSize:d=e==="y"?6:0,tickPadding:y,tickRotate:x,x:w,margin:g,marginTop:S=g===void 0?20:g,marginRight:b=g===void 0?t==="right"?40:0:g,marginBottom:T=g===void 0?20:g,marginLeft:I=g===void 0?t==="left"?40:0:g,label:v,labelAnchor:O,labelArrow:C,labelOffset:E,ariaLabel:A=`${e}-axis`,...F}){return d=St(d),y=St(y),x=St(x),O!==void 0&&(O=yr(O,"labelAnchor",["center","top","bottom"])),C=i8(C),ib(d&&!Ut(i)?wF(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:d,tickPadding:y,tickRotate:x,x:w,ariaLabel:A,...F}):null,Ut(f)?null:IF(e,t,r,{fill:f,fillOpacity:u,stroke:m,strokeOpacity:l,strokeWidth:p,textAnchor:c,tickSize:d,tickPadding:y,tickRotate:x,x:w,marginTop:S,marginRight:b,marginBottom:T,marginLeft:I,ariaLabel:A,...F}),!Ut(f)&&v!==null?Sb([],t8({fill:f,fillOpacity:u,...F},function(H,j,M,U,D){let oe=U[e],{marginTop:V,marginRight:K,marginBottom:Y,marginLeft:Z}=e==="y"&&D.inset||D,J=O??(oe.bandwidth?"center":"top"),ye=E??(t==="right"?K:Z)-3;return J==="center"?(this.textAnchor=void 0,this.lineAnchor=t==="right"?"bottom":"top",this.frameAnchor=t,this.rotate=-90):(this.textAnchor=t==="right"?"end":"start",this.lineAnchor=J,this.frameAnchor=`${J}-${t}`,this.rotate=0),this.dy=J==="top"?3-V:J==="bottom"?Y-3:0,this.dx=t==="right"?ye:-ye,this.ariaLabel=`${A} label`,{facets:[[0]],channels:{text:{value:[o8(e,oe,{anchor:t,label:v,labelAnchor:J,labelArrow:C})]}}}})):null)}function HM(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:f=n,fillOpacity:u=o,textAnchor:c,textStroke:m,textStrokeOpacity:l,textStrokeWidth:p,tickSize:d=e==="x"?6:0,tickPadding:y,tickRotate:x,y:w,margin:g,marginTop:S=g===void 0?t==="top"?30:0:g,marginRight:b=g===void 0?20:g,marginBottom:T=g===void 0?t==="bottom"?30:0:g,marginLeft:I=g===void 0?20:g,label:v,labelAnchor:O,labelArrow:C,labelOffset:E,ariaLabel:A=`${e}-axis`,...F}){return d=St(d),y=St(y),x=St(x),O!==void 0&&(O=yr(O,"labelAnchor",["center","left","right"])),C=i8(C),ib(d&&!Ut(i)?SF(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:d,tickPadding:y,tickRotate:x,y:w,ariaLabel:A,...F}):null,Ut(f)?null:_F(e,t,r,{fill:f,fillOpacity:u,stroke:m,strokeOpacity:l,strokeWidth:p,textAnchor:c,tickSize:d,tickPadding:y,tickRotate:x,y:w,marginTop:S,marginRight:b,marginBottom:T,marginLeft:I,ariaLabel:A,...F}),!Ut(f)&&v!==null?Sb([],t8({fill:f,fillOpacity:u,...F},function(H,j,M,U,D){let oe=U[e],{marginTop:V,marginRight:K,marginBottom:Y,marginLeft:Z}=e==="x"&&D.inset||D,J=O??(oe.bandwidth?"center":"right"),ye=E??(t==="top"?V:Y)-3;return J==="center"?(this.frameAnchor=t,this.textAnchor=void 0):(this.frameAnchor=`${t}-${J}`,this.textAnchor=J==="right"?"end":"start"),this.lineAnchor=t,this.dy=t==="top"?-ye:ye,this.dx=J==="right"?K-3:J==="left"?3-Z:0,this.ariaLabel=`${A} label`,{facets:[[0]],channels:{text:{value:[o8(e,oe,{anchor:t,label:v,labelAnchor:J,labelArrow:C})]}}}})):null)}function wF(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="y"?"-empty":""),frameAnchor:s=t,tickSize:f,inset:u=0,insetLeft:c=u,insetRight:m=u,dx:l=0,y:p=e==="y"?void 0:null,ariaLabel:d,...y}){return Cf(VM,e,r,{ariaLabel:`${d} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinecap:o,strokeLinejoin:i,facetAnchor:a,frameAnchor:s,y:p,...y,dx:t==="left"?+l-Zt+ +c:+l+Zt-m,anchor:"start",length:f,shape:t==="left"?OF:RF})}function SF(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="x"?"-empty":""),frameAnchor:s=t,tickSize:f,inset:u=0,insetTop:c=u,insetBottom:m=u,dy:l=0,x:p=e==="x"?void 0:null,ariaLabel:d,...y}){return Cf(DM,e,r,{ariaLabel:`${d} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinejoin:i,strokeLinecap:o,facetAnchor:a,frameAnchor:s,x:p,...y,dy:t==="bottom"?+l-Zt-m:+l+Zt+ +c,anchor:"start",length:f,shape:t==="bottom"?TF:MF})}function IF(e,t,r,{facetAnchor:n=t+(e==="y"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>60?4*Math.cos(a*lb):0),text:f,textAnchor:u=Math.abs(a)>60?"middle":t==="left"?"end":"start",lineAnchor:c=a>60?"top":a<-60?"bottom":"middle",fontVariant:m,inset:l=0,insetLeft:p=l,insetRight:d=l,dx:y=0,ariaLabel:x,y:w=e==="y"?void 0:null,...g}){return Cf(NM,e,r,{ariaLabel:`${x} tick label`},{facetAnchor:n,frameAnchor:o,text:f,textAnchor:u,lineAnchor:c,fontVariant:m,rotate:a,y:w,...g,dx:t==="left"?+y-i-s+ +p:+y+ +i+ +s-d},function(S,b,T,I,v){m===void 0&&(this.fontVariant=n8(S)),f===void 0&&(v.text=r8(S,b,T,I,t))})}function _F(e,t,r,{facetAnchor:n=t+(e==="x"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>=10?4*Math.cos(a*lb):0),text:f,textAnchor:u=Math.abs(a)>=10?a<0^t==="bottom"?"start":"end":"middle",lineAnchor:c=Math.abs(a)>=10?"middle":t==="bottom"?"top":"bottom",fontVariant:m,inset:l=0,insetTop:p=l,insetBottom:d=l,dy:y=0,x=e==="x"?void 0:null,ariaLabel:w,...g}){return Cf(kM,e,r,{ariaLabel:`${w} tick label`},{facetAnchor:n,frameAnchor:o,text:f===void 0?null:f,textAnchor:u,lineAnchor:c,fontVariant:m,rotate:a,x,...g,dy:t==="bottom"?+y+ +i+ +s-d:+y-i-s+ +p},function(S,b,T,I,v){m===void 0&&(this.fontVariant=n8(S)),f===void 0&&(v.text=r8(S,b,T,I,t))})}function YM(){let[e,t]=Zi(...arguments);return QM("y",UM(t),e,t)}function WM(){let[e,t]=Zi(...arguments);return QM("fy",jM(t),e,t)}function XM(){let[e,t]=Zi(...arguments);return JM("x",BM(t),e,t)}function ZM(){let[e,t]=Zi(...arguments);return JM("fx",GM(t),e,t)}function QM(e,t,r,{y:n=e==="y"?void 0:null,x:o=null,x1:i=t==="left"?o:null,x2:a=t==="right"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:f=!0,...u}){return Cf(li,e,r,{ariaLabel:s,ariaHidden:f},{y:n,x1:i,x2:a,...e8(u)})}function JM(e,t,r,{x:n=e==="x"?void 0:null,y:o=null,y1:i=t==="top"?o:null,y2:a=t==="bottom"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:f=!0,...u}){return Cf(gb,e,r,{ariaLabel:s,ariaHidden:f},{x:n,y1:i,y2:a,...e8(u)})}function e8({color:e="currentColor",opacity:t=.1,stroke:r=e,strokeOpacity:n=t,strokeWidth:o=1,...i}){return{stroke:r,strokeOpacity:n,strokeWidth:o,...i}}function t8({fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:f,shapeRendering:u,clip:c=!1},m){return[,e]=go(e),[,t]=ht(t),{facet:"super",x:null,y:null,fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:f,shapeRendering:u,clip:c,initializer:m}}function Cf(e,t,r,n,o,i){let a;function s(c,m,l,p,d,y){let x=c==null&&(t==="fx"||t==="fy"),{[t]:w}=p;if(!w)throw new Error(`missing scale: ${t}`);let g=w.domain(),{interval:S,ticks:b,tickFormat:T,tickSpacing:I=t==="x"?80:35}=o;if(typeof b=="string"&&a8(w)&&(S=b,b=void 0),b===void 0&&(b=qi(S,w.type)??vF(w,I)),c==null){if(hn(b))c=bo(b);else if(v6(b))c=Tb(b,...Tr(g));else if(w.interval){let O=w.interval;if(w.ticks){let[C,E]=Tr(g),A=(E-C)/O[lf];O=gg(O,A/b)??O,c=Tb(O,C,E)}else{c=g;let C=c.length;O=gg(O,C/b)??O,O!==w.interval&&(c=Tb(O,...Tr(c)))}if(O===w.interval){let C=Math.round(c.length/b);C>1&&(c=c.filter((E,A)=>A%C===0))}}else w.ticks?c=w.ticks(b):c=g;if(!w.ticks&&c.length&&c!==g){let O=new Pn(g);c=c.filter(C=>O.has(C)),c.length||Cr(`Warning: the ${t}-axis ticks appear to not align with the scale domain, resulting in no ticks. Try different ticks?`)}t==="y"||t==="x"?m=[Rr(c)]:a[t]={scale:t,value:dt}}i?.call(this,w,c,b,T,a);let v=Object.fromEntries(Object.entries(a).map(([O,C])=>[O,{...C,value:Vt(c,C.value)}]));return x&&(m=y.filterFacets(c,v)),{data:c,facets:m,channels:v}}let f=ai(o).initializer,u=e(r,ai({...o,initializer:s},f));return r==null?(a=u.channels,u.channels={}):a={},n!==void 0&&Object.assign(u,n),u.clip===void 0&&(u.clip=!1),u}function vF(e,t){let[r,n]=Tr(e.range());return(n-r)/t}function r8(e,t,r,n,o){return{value:Du(e,t,r,n,o)}}function Du(e,t,r,n,o){return typeof n=="function"&&!(e.type==="log"&&e.tickFormat)?n:n===void 0&&t&&Dt(t)?a6(e.type,t,o)??Io:e.tickFormat?e.tickFormat(typeof r=="number"?r:null,n):typeof n=="string"&&e.domain().length>0?(Dt(e.domain())?ho:sn)(n):n===void 0?Io:Gr(n)}function Tb(e,t,r){return e.range(t,e.offset(e.floor(r)))}var TF={draw(e,t){e.moveTo(0,0),e.lineTo(0,t)}},MF={draw(e,t){e.moveTo(0,0),e.lineTo(0,-t)}},OF={draw(e,t){e.moveTo(0,0),e.lineTo(-t,0)}},RF={draw(e,t){e.moveTo(0,0),e.lineTo(t,0)}};function n8(e){return e.bandwidth&&!e.interval?void 0:"tabular-nums"}function o8(e,t,{anchor:r,label:n=t.label,labelAnchor:o,labelArrow:i}={}){if(!(n==null||n.inferred&&a8(t)&&/^(date|time|year)$/i.test(n))){if(n=String(n),i==="auto"&&(i=(!t.bandwidth||t.interval)&&!/[↑↓→←]/.test(n)),!i)return n;if(i===!0){let a=$T(t);a&&(i=/x$/.test(e)||o==="center"?/x$/.test(e)===a<0?"left":"right":a<0?"up":"down")}switch(i){case"left":return`\u2190 ${n}`;case"right":return`${n} \u2192`;case"up":return r==="right"?`${n} \u2191`:`\u2191 ${n}`;case"down":return r==="right"?`${n} \u2193`:`\u2193 ${n}`}return n}}function i8(e="auto"){return Ut(e)?!1:typeof e=="boolean"?e:yr(e,"labelArrow",["auto","up","right","down","left"])}function a8(e){return Dt(e.domain())}function s8(e,t){if(t==null)return t;let r=e(t);if(!r)throw new Error(`scale not found: ${t}`);return r}function f8(e,{opacity:t,...r}={}){if(!So(e)&&!Zg(e))throw new Error(`swatches legend requires ordinal or threshold color scale (not ${e.type})`);return u8(e,r,(n,o,i,a)=>n.append("svg").attr("width",i).attr("height",a).attr("fill",o.scale).attr("fill-opacity",ht(t)[1]).append("rect").attr("width","100%").attr("height","100%"))}function c8(e,{fill:t=e.hint?.fill!==void 0?e.hint.fill:"none",fillOpacity:r=1,stroke:n=e.hint?.stroke!==void 0?e.hint.stroke:Ut(t)?"currentColor":"none",strokeOpacity:o=1,strokeWidth:i=1.5,r:a=4.5,...s}={},f){let[u,c]=go(t),[m,l]=go(n),p=s8(f,u),d=s8(f,m),y=a*a*Math.PI;return r=ht(r)[1],o=ht(o)[1],i=ht(i)[1],u8(e,s,(x,w,g,S)=>x.append("svg").attr("viewBox","-8 -8 16 16").attr("width",g).attr("height",S).attr("fill",u==="color"?b=>p.scale(b):c).attr("fill-opacity",r).attr("stroke",m==="color"?b=>d.scale(b):l).attr("stroke-opacity",o).attr("stroke-width",i).append("path").attr("d",b=>{let T=En();return e.scale(b).draw(T,y),T}))}function u8(e,t={},r){let{columns:n,tickFormat:o,fontVariant:i=Ld(e),swatchSize:a=15,swatchWidth:s=a,swatchHeight:f=a,marginLeft:u=0,className:c,style:m,width:l}=t,p=vf(t);c=Tf(c),o=Du(e.scale,e.domain,void 0,o);let d=Ve("div",p).attr("class",`${c}-swatches ${c}-swatches-${n!=null?"columns":"wrap"}`),y;return n!=null?(y=`:where(.${c}-swatches-columns .${c}-swatch) { + display: flex; + align-items: center; + break-inside: avoid; + padding-bottom: 1px; } -function wireTabInteraction(tabs, panels) { - const activateTab = (index2, setFocus = true) => { - tabs.forEach((tab, tabIndex) => { - const isSelected = tabIndex === index2; - tab.setAttribute("aria-selected", isSelected ? "true" : "false"); - tab.tabIndex = isSelected ? 0 : -1; - panels[tabIndex].hidden = !isSelected; - }); - if (setFocus) { - tabs[index2].focus(); - } - }; - tabs.forEach((tab, index2) => { - tab.addEventListener("click", () => { - activateTab(index2, false); - }); - tab.addEventListener("keydown", (event) => { - let targetIndex = null; - if (event.key === "ArrowRight") { - targetIndex = (index2 + 1) % tabs.length; - } else if (event.key === "ArrowLeft") { - targetIndex = (index2 - 1 + tabs.length) % tabs.length; - } else if (event.key === "Home") { - targetIndex = 0; - } else if (event.key === "End") { - targetIndex = tabs.length - 1; - } - if (targetIndex !== null) { - event.preventDefault(); - activateTab(targetIndex, true); - } - }); - }); +:where(.${c}-swatches-columns .${c}-swatch::before) { + flex-shrink: 0; } -function renderReportV1_0(spec) { - if (!value_exports2.Check(ReportSpecV1_0Schema, spec)) { - throw new Error("Invalid ReportSpec"); - } - assertReportReferentialIntegrity(spec); - const root2 = document.createElement("div"); - root2.className = "rtichoke-report"; - if (spec.title) { - const title = document.createElement("h1"); - title.className = "rtichoke-report__title"; - title.textContent = spec.title; - root2.append(title); - } - for (const component of spec.components) { - const container = document.createElement("section"); - container.className = "rtichoke-report__component"; - container.dataset.componentId = component.id; - if (component.title) { - const title = document.createElement("h2"); - title.className = "rtichoke-report__component-title"; - title.textContent = component.title; - container.append(title); - } - const content = document.createElement("div"); - content.className = "rtichoke-report__component-content"; - content.append(renderStandaloneComponentContent(component.spec)); - container.append(content); - root2.append(container); - } - return root2; +:where(.${c}-swatches-columns .${c}-swatch-label) { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +}`,d.style("columns",n).selectAll().data(e.domain).enter().append("div").attr("class",`${c}-swatch`).call(r,e,s,f).call(x=>x.append("div").attr("class",`${c}-swatch-label`).attr("title",o).text(o))):(y=`:where(.${c}-swatches-wrap) { + display: flex; + align-items: center; + min-height: 33px; + flex-wrap: wrap; } -function renderReportV1_1(spec, options) { - if (!value_exports2.Check(ReportSpecV1_1Schema, spec)) { - throw new Error("Invalid ReportSpec"); - } - assertReportReferentialIntegrity(spec); - const hasTitle = Boolean(spec.title); - const usedDomIds = /* @__PURE__ */ new Set(); - const root2 = document.createElement("article"); - root2.className = "rtichoke-report"; - if (spec.title) { - const header3 = document.createElement("header"); - header3.className = "rtichoke-report__header"; - const title = document.createElement("h1"); - title.className = "rtichoke-report__title"; - title.textContent = spec.title; - header3.append(title); - root2.append(header3); - } - const navSections = []; - let totalNavigableTargets = 0; - for (const section of spec.sections) { - const secDomId = generateUniqueDomId(section.id, usedDomIds); - totalNavigableTargets++; - const navGroups = []; - for (const item of section.items) { - if (item.type === "group") { - const grpDomId = generateUniqueDomId(item.id, usedDomIds); - totalNavigableTargets++; - navGroups.push({ - rawId: item.id, - title: item.title, - domId: grpDomId - }); - } - } - navSections.push({ - rawId: section.id, - title: section.title, - domId: secDomId, - groups: navGroups - }); - } - if (totalNavigableTargets > 1) { - const nav = document.createElement("nav"); - nav.className = "rtichoke-report__nav"; - nav.setAttribute("aria-label", "Report sections"); - const navList = document.createElement("ul"); - navList.className = "rtichoke-report__nav-list"; - for (const sec of navSections) { - const navItem = document.createElement("li"); - navItem.className = "rtichoke-report__nav-item"; - const navLink = document.createElement("a"); - navLink.className = "rtichoke-report__nav-link"; - navLink.href = `#${sec.domId}`; - navLink.textContent = sec.title; - navItem.append(navLink); - if (sec.groups.length > 0) { - const subList = document.createElement("ul"); - subList.className = "rtichoke-report__nav-sublist"; - for (const grp of sec.groups) { - const subItem = document.createElement("li"); - subItem.className = "rtichoke-report__nav-subitem"; - const subLink = document.createElement("a"); - subLink.className = "rtichoke-report__nav-link"; - subLink.href = `#${grp.domId}`; - subLink.textContent = grp.title; - subItem.append(subLink); - subList.append(subItem); - } - navItem.append(subList); - } - navList.append(navItem); - } - nav.append(navList); - root2.append(nav); - } - const sectionHeadingTag = hasTitle ? "h2" : "h1"; - const groupHeadingTag = hasTitle ? "h3" : "h2"; - const directCompHeadingTag = hasTitle ? "h3" : "h2"; - const groupCompHeadingTag = hasTitle ? "h4" : "h3"; - const renderComponent = (comp, headingTag) => { - const container = document.createElement("section"); - container.className = "rtichoke-report__component"; - container.dataset.componentId = comp.id; - if (comp.title) { - const compHeadingDomId = generateUniqueDomId( - `heading-${comp.id}`, - usedDomIds - ); - const titleEl = document.createElement(headingTag); - titleEl.className = "rtichoke-report__component-title"; - titleEl.id = compHeadingDomId; - titleEl.textContent = comp.title; - container.setAttribute("aria-labelledby", compHeadingDomId); - container.append(titleEl); - } - const content = document.createElement("div"); - content.className = "rtichoke-report__component-content"; - content.append(renderStandaloneComponentContent(comp.spec)); - container.append(content); - return container; - }; - const renderGroup = (item, grpNav, sectionPanelTabId) => { - const grpSection = document.createElement("section"); - grpSection.className = "rtichoke-report__group"; - grpSection.id = grpNav.domId; - grpSection.dataset.groupId = item.id; - const grpHeadingDomId = generateUniqueDomId( - `heading-${item.id}`, - usedDomIds - ); - const grpHeading = document.createElement(groupHeadingTag); - grpHeading.className = "rtichoke-report__group-title"; - if (sectionPanelTabId) { - grpHeading.classList.add("rtichoke-report__group-title--tab-panel"); - } - grpHeading.id = grpHeadingDomId; - grpHeading.textContent = item.title; - grpSection.setAttribute( - "aria-labelledby", - sectionPanelTabId ?? grpHeadingDomId - ); - grpSection.append(grpHeading); - if (options.groupPresentation === "tabs") { - const tablist = document.createElement("div"); - tablist.className = "rtichoke-report__tablist"; - tablist.setAttribute("role", "tablist"); - tablist.setAttribute("aria-labelledby", grpHeadingDomId); - const tabs = []; - const panels = []; - item.components.forEach((comp, compIdx) => { - const tabDomId = generateUniqueDomId( - `tab-${item.id}-${comp.id}`, - usedDomIds - ); - const panelDomId = generateUniqueDomId( - `panel-${item.id}-${comp.id}`, - usedDomIds - ); - const tab = document.createElement("button"); - tab.className = "rtichoke-report__tab"; - tab.type = "button"; - tab.id = tabDomId; - tab.setAttribute("role", "tab"); - tab.setAttribute("aria-controls", panelDomId); - tab.setAttribute("aria-selected", compIdx === 0 ? "true" : "false"); - tab.tabIndex = compIdx === 0 ? 0 : -1; - tab.textContent = comp.title || comp.id; - const panel = document.createElement("section"); - panel.className = "rtichoke-report__component rtichoke-report__tabpanel"; - panel.id = panelDomId; - panel.setAttribute("role", "tabpanel"); - panel.setAttribute("aria-labelledby", tabDomId); - panel.tabIndex = 0; - panel.dataset.componentId = comp.id; - panel.hidden = compIdx !== 0; - const content = document.createElement("div"); - content.className = "rtichoke-report__component-content"; - content.append(renderStandaloneComponentContent(comp.spec)); - panel.append(content); - tabs.push(tab); - panels.push(panel); - tablist.append(tab); - }); - wireTabInteraction(tabs, panels); - grpSection.append(tablist, ...panels); - } else { - for (const comp of item.components) { - grpSection.append(renderComponent(comp, groupCompHeadingTag)); - } - } - return grpSection; - }; - for (let i = 0; i < spec.sections.length; i++) { - const sectionSpec = spec.sections[i]; - const secNav = navSections[i]; - const secSection = document.createElement("section"); - secSection.className = "rtichoke-report__section"; - secSection.id = secNav.domId; - secSection.dataset.sectionId = sectionSpec.id; - const secHeadingDomId = generateUniqueDomId( - `heading-${sectionSpec.id}`, - usedDomIds - ); - const secHeading = document.createElement(sectionHeadingTag); - secHeading.className = "rtichoke-report__section-title"; - secHeading.id = secHeadingDomId; - secHeading.textContent = sectionSpec.title; - secSection.setAttribute("aria-labelledby", secHeadingDomId); - secSection.append(secHeading); - const groups2 = sectionSpec.items.filter( - (item) => item.type === "group" - ); - const useSectionGroupTabs = options.sectionGroupPresentation === "tabs" && groups2.length > 1; - let groupIndex2 = 0; - let renderedSectionGroupTabs = false; - let itemIndex = 0; - while (itemIndex < sectionSpec.items.length) { - const item = sectionSpec.items[itemIndex]; - if (item.type === "component") { - let runEnd = itemIndex; - while (runEnd < sectionSpec.items.length && sectionSpec.items[runEnd].type === "component") { - runEnd++; - } - const compRun = sectionSpec.items.slice( - itemIndex, - runEnd - ); - const useComponentTabs = options.sectionComponentPresentation === "tabs" && compRun.length > 1; - if (useComponentTabs) { - const tablist = document.createElement("div"); - tablist.className = "rtichoke-report__tablist"; - tablist.setAttribute("role", "tablist"); - tablist.setAttribute("aria-labelledby", secHeadingDomId); - const tabs = []; - const panels = []; - compRun.forEach((comp, compIdx) => { - const tabDomId = generateUniqueDomId( - `tab-${sectionSpec.id}-${comp.id}`, - usedDomIds - ); - const panelDomId = generateUniqueDomId( - `panel-${sectionSpec.id}-${comp.id}`, - usedDomIds - ); - const tab = document.createElement("button"); - tab.className = "rtichoke-report__tab"; - tab.type = "button"; - tab.id = tabDomId; - tab.setAttribute("role", "tab"); - tab.setAttribute("aria-controls", panelDomId); - tab.setAttribute("aria-selected", compIdx === 0 ? "true" : "false"); - tab.tabIndex = compIdx === 0 ? 0 : -1; - tab.textContent = comp.title || comp.id; - const panel = document.createElement("section"); - panel.className = "rtichoke-report__component rtichoke-report__tabpanel"; - panel.id = panelDomId; - panel.setAttribute("role", "tabpanel"); - panel.setAttribute("aria-labelledby", tabDomId); - panel.tabIndex = 0; - panel.dataset.componentId = comp.id; - panel.hidden = compIdx !== 0; - const content = document.createElement("div"); - content.className = "rtichoke-report__component-content"; - content.append(renderStandaloneComponentContent(comp.spec)); - panel.append(content); - tabs.push(tab); - panels.push(panel); - tablist.append(tab); - }); - wireTabInteraction(tabs, panels); - secSection.append(tablist, ...panels); - itemIndex = runEnd; - } else { - secSection.append(renderComponent(item, directCompHeadingTag)); - itemIndex++; - } - } else if (item.type === "group") { - if (useSectionGroupTabs) { - if (!renderedSectionGroupTabs) { - renderedSectionGroupTabs = true; - const tablist = document.createElement("div"); - tablist.className = "rtichoke-report__tablist rtichoke-report__section-group-tablist"; - tablist.setAttribute("role", "tablist"); - tablist.setAttribute("aria-labelledby", secHeadingDomId); - const tabs = []; - const panels = []; - groups2.forEach((group2, tabIndex) => { - const groupNav = secNav.groups[tabIndex]; - const tabDomId = generateUniqueDomId( - `section-group-tab-${sectionSpec.id}-${group2.id}`, - usedDomIds - ); - const tab = document.createElement("button"); - tab.className = "rtichoke-report__tab"; - tab.type = "button"; - tab.id = tabDomId; - tab.setAttribute("role", "tab"); - tab.setAttribute("aria-controls", groupNav.domId); - tab.setAttribute("aria-selected", tabIndex === 0 ? "true" : "false"); - tab.tabIndex = tabIndex === 0 ? 0 : -1; - tab.textContent = group2.title; - const panel = renderGroup(group2, groupNav, tabDomId); - panel.classList.add("rtichoke-report__tabpanel"); - panel.setAttribute("role", "tabpanel"); - panel.setAttribute("aria-labelledby", tabDomId); - panel.tabIndex = 0; - panel.hidden = tabIndex !== 0; - tabs.push(tab); - panels.push(panel); - tablist.append(tab); - }); - wireTabInteraction(tabs, panels); - secSection.append(tablist, ...panels); - } - } else { - secSection.append(renderGroup(item, secNav.groups[groupIndex2++])); - } - itemIndex++; - } - } - root2.append(secSection); - } - return root2; +:where(.${c}-swatches-wrap .${c}-swatch) { + display: inline-flex; + align-items: center; + margin-right: 1em; +}`,d.selectAll().data(e.domain).enter().append("span").attr("class",`${c}-swatch`).call(r,e,s,f).append(function(){return this.ownerDocument.createTextNode(o.apply(this,arguments))})),d.call(x=>x.insert("style","*").text(`:where(.${c}-swatches) { + font-family: system-ui, sans-serif; + font-size: 10px; + margin-bottom: 0.5em; } -function renderReport(spec, options) { - if (!spec || typeof spec !== "object") { - throw new Error("Invalid ReportSpec"); - } - const groupPresentation = options?.groupPresentation ?? "stacked"; - const sectionGroupPresentation = options?.sectionGroupPresentation ?? "stacked"; - const sectionComponentPresentation = options?.sectionComponentPresentation ?? "stacked"; - if (options !== void 0 && (typeof options !== "object" || options === null || options.groupPresentation !== void 0 && options.groupPresentation !== "stacked" && options.groupPresentation !== "tabs")) { - throw new Error( - "Invalid render options: groupPresentation must be 'stacked' or 'tabs'" - ); - } - if (options !== void 0 && options.sectionGroupPresentation !== void 0 && options.sectionGroupPresentation !== "stacked" && options.sectionGroupPresentation !== "tabs") { - throw new Error( - "Invalid render options: sectionGroupPresentation must be 'stacked' or 'tabs'" - ); - } - if (options !== void 0 && options.sectionComponentPresentation !== void 0 && options.sectionComponentPresentation !== "stacked" && options.sectionComponentPresentation !== "tabs") { - throw new Error( - "Invalid render options: sectionComponentPresentation must be 'stacked' or 'tabs'" - ); - } - if (spec.schemaVersion === "1.0") { - return renderReportV1_0(spec); - } - if (spec.schemaVersion === "1.1") { - return renderReportV1_1(spec, { - groupPresentation, - sectionGroupPresentation, - sectionComponentPresentation - }); - } - throw new Error("Invalid ReportSpec"); +:where(.${c}-swatch > svg) { + margin-right: 0.5em; + overflow: visible; } - -// src/render/roc.ts -var RTICHOKE_COLORS3 = [ - "#1b9e77", - "#d95f02", - "#7570b3", - "#e7298a", - "#07004D", - "#E6AB02", - "#FE5F55", - "#54494B", - "#006E90", - "#BC96E6" -]; -function renderRoc(spec) { - const data = spec.data.map((d) => ({ - ...d, - false_positive_rate: 1 - d.specificity - })); - const marks2 = [ - line(data, { - x: "false_positive_rate", - y: "sensitivity", - stroke: "model", - strokeWidth: 2, - tip: true - }) - ]; - if (spec.references?.some((reference) => reference.type === "identity")) { - marks2.unshift( - line( - [ - { x: 0, y: 0 }, - { x: 1, y: 1 } - ], - { x: "x", y: "y", stroke: "#BEBEBE", strokeWidth: 2 } - ) - ); - } - return plot({ - width: 600, - height: 600, - marginLeft: 64, - marginBottom: 56, - style: { - background: "transparent", - color: "#222", - fontFamily: "Arial, Helvetica, sans-serif", - fontSize: "13px" - }, - x: { - label: spec.xAxis.label, - domain: spec.xAxis.domain, - grid: false, - ticks: 6 - }, - y: { - label: spec.yAxis.label, - domain: spec.yAxis.domain, - grid: false, - ticks: 6 - }, - color: { legend: true, range: RTICHOKE_COLORS3 }, - marks: marks2 - }); +${y}`)).style("margin-left",u?`${+u}px`:null).style("width",l===void 0?null:`${+l}px`).style("font-variant",yt(i,"normal")).call(Mf,m).node()}var Rb=new Map([["symbol",c8],["color",m8],["opacity",CF]]);function l8(e,t,r={}){return(n,o)=>{if(!Rb.has(n))throw new Error(`unknown legend type: ${n}`);if(n in e)return Rb.get(n)(e[n],p8(t,r[n],o),i=>e[i])}}function p8({className:e,...t},{label:r,ticks:n,tickFormat:o}={},i){return P6(i,{className:e,...t},{label:r,ticks:n,tickFormat:o})}function m8(e,{legend:t=!0,...r}){if(t===!0&&(t=e.type==="ordinal"?"swatches":"ramp"),e.domain!==void 0)switch(`${t}`.toLowerCase()){case"swatches":return f8(e,r);case"ramp":return lM(e,r);default:throw new Error(`unknown legend type: ${t}`)}}function CF({type:e,interpolate:t,...r},{legend:n=!0,color:o=on(0,0,0),...i}){if(!t)throw new Error(`${e} opacity scales are not supported`);if(n===!0&&(n="ramp"),`${n}`.toLowerCase()!=="ramp")throw new Error(`${n} opacity legends are not supported`);return m8({type:e,...r,interpolate:AF(o)},{legend:n,...i})}function AF(e){let{r:t,g:r,b:n}=on(e)||on(0,0,0);return o=>`rgba(${t},${r},${n},${o})`}function d8(e,t,r){let n=[];for(let[o,i]of Rb){let a=r[o];if(a?.legend&&o in e){let s=i(e[o],p8(t,e[o],a),f=>e[f]);s!=null&&n.push(s)}}return n}function h8(e={},t="y"){return Rg(e)?e:{...e,[t]:dt}}function y8(e,t){if(t.length===1)return{data:e,facets:t};let r=zi(e),n=new Uint8Array(r),o=0;for(let s of t)for(let f of s)n[f]&&++o,n[f]=1;if(o===0)return{data:e,facets:t};e=Bi(e);let i=e[Sg]=new Uint32Array(r+o);t=t.map(s=>Bi(s,Uint32Array));let a=r;n.fill(0);for(let s of t)for(let f=0,u=s.length;f{({data:y,facets:x}=y8(y,x));let g=e==null?void 0:c(I6(Vt(y,e),w?.[r])),S=Vt(y,t,Float64Array),b=Vt(y,f),T=i&&i(y,g,S,b),I=zi(y),v=l(new Float64Array(I)),O=d(new Float64Array(I)),C=[];for(let E of x){let A=g?Array.from(Vo(E,F=>g[F]).values()):[E];if(T)for(let F of A)F.sort(T);for(let F of A){let H=0,j=0;a&&F.reverse();for(let M of F){let U=S[M];U<0?H=O[M]=(v[M]=H)+U:U>0?j=O[M]=(v[M]=j)+U:O[M]=v[M]=j}}C.push(A)}return o&&o(C,v,O,b),{data:y,facets:x}}),u,m,p]}function EF(e){if(e!=null){if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"expand":case"normalize":return $F;case"center":case"silhouette":return LF;case"wiggle":return S8}throw new Error(`unknown offset: ${e}`)}}function w8(e,t){let r=0,n=0;for(let o of e){let i=t[o];in&&(n=i)}return[r,n]}function $F(e,t,r){for(let n of e)for(let o of n){let[i,a]=w8(o,r);for(let s of o){let f=1/(a-i||1);t[s]=f*(t[s]-i),r[s]=f*(r[s]-i)}}}function LF(e,t,r){for(let n of e){for(let o of n){let[i,a]=w8(o,r);for(let s of o){let f=(a+i)/2;t[s]-=f,r[s]-=f}}I8(n,t,r)}_8(e,t,r)}function S8(e,t,r,n){for(let o of e){let i=new pr,a=0;for(let s of o){let f=-1,u=s.map(p=>Math.abs(r[p]-t[p])),c=s.map(p=>{f=n?n[p]:++f;let d=r[p]-t[p],y=i.has(f)?d-i.get(f):0;return i.set(f,d),y}),m=[0,...Rl(c)];for(let p of s)t[p]+=a,r[p]+=a;let l=rn(u);l&&(a-=rn(u,(p,d)=>(c[d]/2+m[d])*p)/l)}I8(o,t,r)}_8(e,t,r)}function I8(e,t,r){let n=mr(e,o=>mr(o,i=>t[i]));for(let o of e)for(let i of o)t[i]-=n,r[i]-=n}function _8(e,t,r){let n=e.length;if(n===1)return;let o=e.map(s=>s.flat()),i=o.map(s=>(mr(s,f=>t[f])+Nt(s,f=>r[f]))/2),a=mr(i);for(let s=0;s(o,i)=>e(n[o],n[i])}function UF(e){return(t,r,n,o)=>(i,a)=>e(o[i],o[a])}function jF(e){return Kd(e,(t,r,n,o)=>Ms(Rr(t),i=>rn(i,a=>n[a]),i=>o[i]))}function BF(e){return Kd(e,(t,r,n,o)=>Ms(Rr(t),i=>r[cc(i,a=>n[a])],i=>o[i]))}function x8(e){return Kd(e,(t,r,n,o)=>{let i=Rr(t),a=Ms(i,m=>r[cc(m,l=>n[l])],m=>o[m]),s=Qn(i,m=>rn(m,l=>n[l]),m=>o[m]),f=[],u=[],c=0;for(let m of a)c<0?(c+=s.get(m),f.push(m)):(c-=s.get(m),u.push(m));return u.reverse().concat(f)})}function g8(e){return t=>{let r=Vt(t,e);return(n,o)=>Or(r[n],r[o])}}function GF(e){return t=>Dn(t)?(r,n)=>e(t[r],t[n]):(r,n)=>e(t.get(r),t.get(n))}function zF(e){return Kd(Or,()=>e)}function Kd(e,t){return(r,n,o,i)=>{if(!i)throw new Error("missing channel: z");let a=new pr(t(r,n,o,i).map((s,f)=>[s,f]));return(s,f)=>e(a.get(i[s]),a.get(i[f]))}}var KF={ariaLabel:"rect"},Yd=class extends ot{constructor(t,r={}){let{x1:n,y1:o,x2:i,y2:a}=r;super(t,{x1:{value:n,scale:"x",type:n!=null&&i==null?"band":void 0,optional:!0},y1:{value:o,scale:"y",type:o!=null&&a==null?"band":void 0,optional:!0},x2:{value:i,scale:"x",optional:!0},y2:{value:a,scale:"y",optional:!0}},r,KF),Cb(this,r),Ab(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x1:f,y1:u,x2:c,y2:m}=n,{marginTop:l,marginRight:p,marginBottom:d,marginLeft:y,width:x,height:w}=o,{projection:g}=i,{insetTop:S,insetRight:b,insetBottom:T,insetLeft:I}=this,{rx:v,ry:O,rx1y1:C,rx1y2:E,rx2y1:A,rx2y2:F}=this;(f||c)&&!g&&Wi(a)&&(f=c=null),(u||m)&&!g&&Wi(s)&&(u=m=null);let H=a?.bandwidth?a.bandwidth():0,j=s?.bandwidth?s.bandwidth():0;return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,{},0,0).call(M=>M.selectAll().data(t).enter().call(C||E||A||F?U=>U.append("path").call(Bt,this).call(Pb,f&&c?D=>f[D]+(c[D]f[D]+I:y+I,u&&m?D=>u[D]+(m[D]u[D]+S:l+S,f&&c?D=>c[D]-(c[D]f[D]+H-b:x-p-b,u&&m?D=>m[D]-(m[D]u[D]+j-T:w-d-T,this).call(Ar,this,n):U=>U.append("rect").call(Bt,this).attr("x",f?c?D=>Math.min(f[D],c[D])+I:D=>f[D]+I:y+I).attr("y",u?m?D=>Math.min(u[D],m[D])+S:D=>u[D]+S:l+S).attr("width",f?c?D=>Math.max(0,Math.abs(c[D]-f[D])+H-I-b):H-I-b:x-p-y-b-I).attr("height",u?m?D=>Math.max(0,Math.abs(u[D]-m[D])+j-S-T):j-S-T:w-l-d-S-T).call(pe,"rx",v).call(pe,"ry",O).call(Ar,this,n))).node()}};function Cb(e,{inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={}){e.insetTop=St(r),e.insetRight=St(n),e.insetBottom=St(o),e.insetLeft=St(i)}function Ab(e,{r:t,rx:r,ry:n,rx1:o=t,ry1:i=t,rx2:a=t,ry2:s=t,rx1y1:f=o!==void 0?+o:i!==void 0?+i:0,rx1y2:u=o!==void 0?+o:s!==void 0?+s:0,rx2y1:c=a!==void 0?+a:i!==void 0?+i:0,rx2y2:m=a!==void 0?+a:s!==void 0?+s:0}={}){f||u||c||m?(e.rx1y1=f,e.rx1y2=u,e.rx2y1=c,e.rx2y2=m):(e.rx=yt(r,"auto"),e.ry=yt(n,"auto"))}function Pb(e,t,r,n,o,i){let{rx1y1:a,rx1y2:s,rx2y1:f,rx2y2:u}=i;typeof t!="function"&&(t=Gr(t)),typeof r!="function"&&(r=Gr(r)),typeof n!="function"&&(n=Gr(n)),typeof o!="function"&&(o=Gr(o));let c=Math.max(Math.abs(a+f),Math.abs(s+u)),m=Math.max(Math.abs(a+s),Math.abs(f+u));e.attr("d",l=>{let p=t(l),d=r(l),y=n(l),x=o(l),w=p>y,g=d>x,S=w?y:p,b=w?p:y,T=g?x:d,I=g?d:x,v=Math.min(1,(b-S)/c,(I-T)/m),O=v*(w?g?u:f:g?s:a),C=v*(w?g?s:a:g?u:f),E=v*(w?g?a:s:g?f:u),A=v*(w?g?f:u:g?a:s);return`M${S},${T+Hd(O,A)}A${O},${O} 0 0 ${O<0?0:1} ${S+qd(O,A)},${T}H${b-qd(C,E)}A${C},${C} 0 0 ${C<0?0:1} ${b},${T+Hd(C,E)}V${I-Hd(E,C)}A${E},${E} 0 0 ${E<0?0:1} ${b-qd(E,C)},${I}H${S+qd(A,O)}A${A},${A} 0 0 ${A<0?0:1} ${S},${I-Hd(A,O)}Z`})}function qd(e,t){return t<0?e:Math.abs(e)}function Hd(e,t){return t<0?Math.abs(e):e}function Vu(e,t={}){return x6(t)||(t={...t,x:Ru,y2:dt,interval:1}),new Yd(e,b8(wM(h8(t))))}var qF={ariaLabel:"frame",fill:"none",stroke:"currentColor",clip:!1},HF={ariaLabel:"frame",fill:null,stroke:"currentColor",strokeLinecap:"square",clip:!1},kb=class extends ot{constructor(t={}){let{anchor:r=null}=t;super(pf,void 0,t,r==null?qF:HF),this.anchor=Og(r,"anchor",["top","right","bottom","left"]),Cb(this,t),r||Ab(this,t)}render(t,r,n,o,i){let{marginTop:a,marginRight:s,marginBottom:f,marginLeft:u,width:c,height:m}=o,{anchor:l,insetTop:p,insetRight:d,insetBottom:y,insetLeft:x}=this,{rx:w,ry:g,rx1y1:S,rx1y2:b,rx2y1:T,rx2y2:I}=this,v=u+x,O=c-s-d,C=a+p,E=m-f-y;return Ve(l?"svg:line":S||b||T||I?"svg:path":"svg:rect",i).datum(0).call(Qt,this,o,i).call(Bt,this).call(Ar,this,n).call(Jt,this,{}).call(l==="left"?A=>A.attr("x1",v).attr("x2",v).attr("y1",C).attr("y2",E):l==="right"?A=>A.attr("x1",O).attr("x2",O).attr("y1",C).attr("y2",E):l==="top"?A=>A.attr("x1",v).attr("x2",O).attr("y1",C).attr("y2",C):l==="bottom"?A=>A.attr("x1",v).attr("x2",O).attr("y1",E).attr("y2",E):S||b||T||I?A=>A.call(Pb,v,C,O,E,this):A=>A.attr("x",v).attr("y",C).attr("width",O-v).attr("height",E-C).attr("rx",w).attr("ry",g)).node()}};function Nb(e){return new kb(e)}var Fb={ariaLabel:"tip",fill:"var(--plot-background)",stroke:"currentColor"},YF=new Set(["geometry","href","src","ariaLabel","scales"]),Eb=class extends ot{constructor(t,r={}){r.tip&&(r={...r,tip:!1}),r.title===void 0&&hn(t)&&Id(t)&&(r={...r,title:dt});let{x:n,y:o,x1:i,x2:a,y1:s,y2:f,anchor:u,preferredAnchor:c="bottom",monospace:m,fontFamily:l=m?"ui-monospace, monospace":void 0,fontSize:p,fontStyle:d,fontVariant:y,fontWeight:x,lineHeight:w=1,lineWidth:g=20,frameAnchor:S,format:b,textAnchor:T="start",textOverflow:I,textPadding:v=8,title:O,pointerSize:C=12,pathFilter:E="drop-shadow(0 3px 4px rgba(0,0,0,0.2))"}=r;super(t,{x:{value:i!=null&&a!=null?null:n,scale:"x",optional:!0},y:{value:s!=null&&f!=null?null:o,scale:"y",optional:!0},x1:{value:i,scale:"x",optional:a==null},y1:{value:s,scale:"y",optional:f==null},x2:{value:a,scale:"x",optional:i==null},y2:{value:f,scale:"y",optional:s==null},title:{value:O,optional:!0}},r,Fb),this.anchor=vd(u,"anchor"),this.preferredAnchor=vd(c,"preferredAnchor"),this.frameAnchor=Yi(S),this.textAnchor=yt(T,"middle"),this.textPadding=+v,this.pointerSize=+C,this.pathFilter=wt(E),this.lineHeight=+w,this.lineWidth=+g,this.textOverflow=wb(I),this.monospace=!!m,this.fontFamily=wt(l),this.fontSize=St(p),this.fontStyle=wt(d),this.fontVariant=wt(y),this.fontWeight=wt(x);for(let A in Fb)A in this.channels&&(this[A]=Fb[A]);this.splitLines=_b(this),this.clipLine=vb(this),this.format=typeof b=="string"||typeof b=="function"?{title:b}:{...b}}render(t,r,n,o,i){let a=this,{x:s,y:f,fx:u,fy:c}=r,{ownerSVGElement:m,document:l}=i,{anchor:p,monospace:d,lineHeight:y,lineWidth:x}=this,{textPadding:w,pointerSize:g,pathFilter:S}=this,{marginTop:b,marginLeft:T}=o,{x1:I,y1:v,x2:O,y2:C,x:E=I??O,y:A=v??C}=n,F=u?u(t.fx)-T:0,H=c?c(t.fy)-b:0,[j,M]=_o(this,o),U=cb(n,j),D=ub(n,M),oe=d?Bd:jd,V=oe(Wa),K,Y;"title"in n?(K=v8.call(this,{title:n.channels.title},r),Y=QF):(K=v8.call(this,n.channels,r),Y=JF);let Z=Ve("svg:g",i).call(Qt,this,o,i).call(Ib,this).call(Jt,this,{x:E&&s,y:A&&f}).call(B=>B.selectAll().data(t).enter().append("g").attr("transform",W=>`translate(${Math.round(U(W))},${Math.round(D(W))})`).call(Bt,this).call(W=>W.append("path").attr("filter",S)).call(W=>W.append("text").each(function(X){let le=nn(this);this.setAttribute("fill","currentColor"),this.setAttribute("fill-opacity",1),this.setAttribute("stroke","none");let L=Y.call(a,X,t,K,r,n);if(typeof L=="string")for(let Q of a.splitLines(L))J(le,{value:a.clipLine(Q)});else{let Q=new Set;for(let re of L){let{label:$=""}=re;$&&Q.has($)||(Q.add($),J(le,re))}}})));function J(B,{label:W,value:X,color:le,opacity:L}){W??="",X??="";let Q=le!=null||L!=null,re,$=x*100,[ke]=Xa(W,$,oe,V);if(ke>=0)W=W.slice(0,ke).trimEnd()+Wa,re=X.trim(),X="";else{(W||!X&&!Q)&&(X=" "+X);let[ae]=Xa(X,$-oe(W),oe,V);ae>=0&&(re=X.trim(),X=X.slice(0,ae).trimEnd()+Wa)}let G=B.append("tspan").attr("x",0).attr("dy",`${y}em`).text("\u200B");W&&G.append("tspan").attr("font-weight","bold").text(W),X&&G.append(()=>l.createTextNode(X)),Q&&G.append("tspan").text(" \u25A0").attr("fill",le).attr("fill-opacity",L).style("user-select","none"),re&&G.append("title").text(re)}function ye(){let{width:B,height:W}=o.facet??o;Z.selectChildren().each(function(X){let{x:le,width:L,height:Q}=this.getBBox();L=Math.round(L),Q=Math.round(Q);let re=p;if(re===void 0){let G=U(X)+F,ae=D(X)+H,xe=G+L+g+w*20,Pt=ae+Q+g+w*20;re=xe&&Ge?Pt&&qt?a.preferredAnchor:qt?"bottom":"top":Pt&&qt?xe?"left":"right":(xe||Ge)&&(Pt||qt)?`${qt?"bottom":"top"}-${xe?"left":"right"}`:a.preferredAnchor}let $=this.firstChild,ke=this.lastChild;if($.setAttribute("d",ZF(re,g,w,L,Q)),le)for(let G of ke.childNodes)G.setAttribute("x",-le);ke.setAttribute("y",`${+WF(re,ke.childNodes.length,y).toFixed(6)}em`),ke.setAttribute("transform",`translate(${XF(re,g,w,L,Q)})`)}),Z.attr("visibility",null)}return t.length&&(Z.attr("visibility","hidden"),m.isConnected?Promise.resolve().then(ye):typeof requestAnimationFrame<"u"&&requestAnimationFrame(ye)),Z.node()}};function R8(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=ii(t,r)),new Eb(e,{...n,x:t,y:r})}function WF(e,t,r){return/^top(?:-|$)/.test(e)?.94-r:-.29-t*r}function XF(e,t,r,n,o){switch(e){case"middle":return[-n/2,o/2];case"top-left":return[r,t+r];case"top":return[-n/2,t/2+r];case"top-right":return[-n-r,t+r];case"right":return[-t/2-n-r,o/2];case"bottom-left":return[r,-t-r];case"bottom":return[-n/2,-t/2-r];case"bottom-right":return[-n-r,-t-r];case"left":return[r+t/2,o/2]}}function ZF(e,t,r,n,o){let i=n+r*2,a=o+r*2;switch(e){case"middle":return`M${-i/2},${-a/2}h${i}v${a}h${-i}z`;case"top-left":return`M0,0l${t},${t}h${i-t}v${a}h${-i}z`;case"top":return`M0,0l${t/2},${t/2}h${(i-t)/2}v${a}h${-i}v${-a}h${(i-t)/2}z`;case"top-right":return`M0,0l${-t},${t}h${t-i}v${a}h${i}z`;case"right":return`M0,0l${-t/2},${-t/2}v${t/2-a/2}h${-i}v${a}h${i}v${t/2-a/2}z`;case"bottom-left":return`M0,0l${t},${-t}h${i-t}v${-a}h${-i}z`;case"bottom":return`M0,0l${t/2},${-t/2}h${(i-t)/2}v${-a}h${-i}v${a}h${(i-t)/2}z`;case"bottom-right":return`M0,0l${-t},${-t}h${t-i}v${-a}h${i}z`;case"left":return`M0,0l${t/2},${-t/2}v${t/2-a/2}h${i}v${a}h${-i}v${t/2-a/2}z`}}function v8(e,t){let r={},n=this.format;n=T8(n,e,"x"),n=T8(n,e,"y"),this.format=n;for(let o in n){let i=n[o];if(!(i===null||i===!1))if(o==="fx"||o==="fy")r[o]=!0;else{let a=Vg(e,o);a&&(r[o]=a)}}for(let o in e){if(o in r||o in n||YF.has(o)||(o==="x"||o==="y")&&e.geometry)continue;let i=Vg(e,o);if(i){if(i.scale==null&&i.defaultScale==="color")continue;r[o]=i}}this.facet&&(t.fx&&!("fx"in n)&&(r.fx=!0),t.fy&&!("fy"in n)&&(r.fy=!0));for(let o in r){let i=this.format[o];if(typeof i=="string"){let a=r[o]?.value??t[o]?.domain()??[];this.format[o]=(Dt(a)?ho:sn)(i)}else if(i===void 0||i===!0){let a=t[o];this.format[o]=a?.bandwidth?Du(a,a.domain()):Io}}return r}function T8(e,t,r){if(!(r in e))return e;let n=`${r}1`,o=`${r}2`;if((n in e||!(n in t))&&(o in e||!(o in t)))return e;let i=Object.entries(e),a=e[r];return i.splice(i.findIndex(([s])=>s===r)+1,0,[n,a],[o,a]),Object.fromEntries(i)}function QF(e,t,{title:r}){return this.format.title(r.value[e],e)}function*JF(e,t,r,n,o){for(let i in r){if(i==="fx"||i==="fy"){yield{label:Wd(n,r,i),value:this.format[i](t[i],e)};continue}if(i==="x1"&&"x2"in r||i==="y1"&&"y2"in r)continue;let a=r[i];if(i==="x2"&&"x1"in r)yield{label:O8(n,r,"x"),value:M8(this.format.x2,r.x1,a,e)};else if(i==="y2"&&"y1"in r)yield{label:O8(n,r,"y"),value:M8(this.format.y2,r.y1,a,e)};else{let s=a.value[e],f=a.scale;if(!mn(s)&&f==null)continue;yield{label:Wd(n,r,i),value:this.format[i](s,e),color:f==="color"?o[i][e]:null,opacity:f==="opacity"?o[i][e]:null}}}}function M8(e,t,r,n){return r.hint?.length?`${e(r.value[n]-t.value[n],n)}`:`${e(t.value[n],n)}\u2013${e(r.value[n],n)}`}function O8(e,t,r){let n=Wd(e,t,`${r}1`,r),o=Wd(e,t,`${r}2`,r);return n===o?n:`${n}\u2013${o}`}function Wd(e,t,r,n=r){let o=t[r],i=e[o?.scale??r];return String(i?.label??o?.label??n)}function vo(e={}){let{facet:t,style:r,title:n,subtitle:o,caption:i,ariaLabel:a,ariaDescription:s}=e,f=Tf(e.className),u=e.marks===void 0?[]:A8(e.marks);u.push(...iE(u));let c=nE(t,e),m=new Map;for(let V of u){let K=P8(V,c,e);K&&m.set(V,K)}let l=new Map;c&&Uu(l,[c],e),Uu(l,m,e);let p=A8(aE(u,l,e));for(let V of p){let K=P8(V,c,e);K&&m.set(V,K)}u.unshift(...p);let d=jT(l,e);if(d!==void 0){let V=c?Nd(d,c):void 0;for(let Y of u){if(Y.facet===null||Y.facet==="super")continue;let Z=m.get(Y);Z!==void 0&&(Z.facetsIndex=Y.fx!=null||Y.fy!=null?Nd(d,Z):V)}let K=new Set;for(let{facetsIndex:Y}of m.values())Y?.forEach((Z,J)=>{Z?.length>0&&K.add(J)});d.forEach(0Y.empty=!K.has(Z):Y=>Y.empty=!1);for(let Y of u)if(Y.facet==="exclude"){let Z=m.get(Y);Z!==void 0&&(Z.facetsIndex=zT(Z.facetsIndex))}}for(let V of Be.keys())mf(e[V])&&V!=="fx"&&V!=="fy"&&l.set(V,[]);let y=new Map;for(let V of u){if(y.has(V))throw new Error("duplicate mark; each mark must be unique");let{facetsIndex:K,channels:Y}=m.get(V)??{},{data:Z,facets:J,channels:ye}=V.initialize(K,Y,e);Db(ye,e),y.set(V,{data:Z,facets:J,channels:ye})}let x=Nu(Uu(l,y,e),e),w=sM(x,u,e);ET(x,w);let g=Wg(x),{fx:S,fy:b}=g,T=S||b?Xg(x,w):w,I=S||b?mE(g,w):w,v=vf(e),O=v.document,C=Go("svg").call(O.documentElement),E=C;v.ownerSVGElement=C,v.className=f,v.projection=HT(e,T),v.path=function(){return Ks(this.projection??JT(g))},v.filterFacets=(V,K)=>Nd(d,{channels:K,groups:Pd(V,K)}),v.getMarkState=V=>{let K=y.get(V),Y=m.get(V);return{...K,channels:{...K.channels,...Y?.channels}}},v.dispatchValue=V=>{E.value!==V&&(E.value=V,E.dispatchEvent(new v.document.defaultView.Event("input",{bubbles:!0})))};let A=new Set;for(let[V,K]of y)if(V.initializer!=null){let Y=V.facet==="super"?I:T,Z=V.initializer(K.data,K.facets,K.channels,g,Y,v);if(Z.data!==void 0&&(K.data=Z.data),Z.facets!==void 0&&(K.facets=Z.facets),Z.channels!==void 0){let{fx:J,fy:ye,...B}=Z.channels;rE(B),Object.assign(K.channels,B);for(let W of Object.values(B)){let{scale:X}=W;X!=null&&!E6(Be.get(X))&&(F8(W,e),A.add(X))}(J!=null||ye!=null)&&m.set(V,!0)}}if(A.size){let V=new Map;Uu(V,y,e,J=>A.has(J)),Uu(l,y,e,J=>A.has(J));let K=pE(Nu(V,e),x),{scales:Y,...Z}=Wg(K);Object.assign(x,K),Object.assign(g,Z),Object.assign(g.scales,Y)}let F,H;d!==void 0&&(F={x:S?.domain(),y:b?.domain()},d=BT(d,F),H=GT(S,b,w));for(let[V,K]of y)K.values=V.scale(K.channels,g,v);let{width:j,height:M}=w;nn(C).attr("class",f).attr("fill","currentColor").attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("text-anchor","middle").attr("width",j).attr("height",M).attr("viewBox",`0 0 ${j} ${M}`).attr("aria-label",a).attr("aria-description",s).call(V=>V.append("style").text(`:where(.${f}) { + --plot-background: white; + display: block; + height: auto; + height: intrinsic; + max-width: 100%; } -export { - AUROCSummaryMetricSchema, - CalibrationSpecSchema, - CalibrationV2DatumSchema, - CalibrationV2SpecSchema, - DecisionCurveV2DatumSchema, - DecisionCurveV2EvaluationSchema, - DecisionCurveV2ReferenceSchema, - DecisionCurveV2SeriesSchema, - DecisionCurveV2SpecSchema, - DiscreteCalibrationV2DatumSchema, - DisplayGroupingSpecSchema, - DisplayRoleSchema, - EvaluationSpecSchema, - GainsV2SpecSchema, - InterventionsAvoidedTreatAllReferenceSchema, - InterventionsAvoidedTreatNoneReferenceSchema, - InterventionsAvoidedV2DatumSchema, - InterventionsAvoidedV2EvaluationSchema, - InterventionsAvoidedV2ReferenceSchema, - InterventionsAvoidedV2SeriesSchema, - InterventionsAvoidedV2SpecSchema, - LiftV2SpecSchema, - OperatingPointDimensionSchema, - OperatingPointSchema, - OperatingPointSpecSchema, - PerformanceEvaluationContextSchema, - PerformanceMetricDefinitionSchema, - PerformanceMetricIdSchema, - PerformanceMetricValueSchema, - PerformanceTableRowSchema, - PerformanceTableSpecSchema, - PopulationSummaryOwnerSpecSchema, - PrecisionRecallV2SpecSchema, - PrevalenceSummaryMetricSchema, - RTICHOKE_BROWSER_THEME, - RTICHOKE_COLORS2 as RTICHOKE_COLORS, - ReferenceLineV2SpecSchema, - ReportComponentSchema, - ReportComponentV1_1Schema, - ReportGroupSchema, - ReportSectionSchema, - ReportSpecSchema, - ReportSpecV1_0Schema, - ReportSpecV1_1Schema, - RocSpecSchema, - RocV2SpecSchema, - RtichokeChartSpecSchema, - RtichokeChartSpecV2Schema, - SeriesSpecSchema, - SmoothCalibrationV2DatumSchema, - StandaloneCanonicalSpecSchema, - SummaryMetricSchema, - SummaryMetricsSpecSchema, - TreatAllReferenceSchema, - TreatNoneReferenceSchema, - assertPerformanceTableReferentialIntegrity, - assertReportReferentialIntegrity, - assertSummaryMetricsReferentialIntegrity, - assertV2ReferentialIntegrity, - calibrationSpecFromRtichokeRows, - calibrationV2SpecFromRtichokeRows, - extractOperatingPointValues, - renderCalibration, - renderCalibrationV2, - renderDecisionCurveV2, - renderGainsV2, - renderInterventionsAvoidedV2, - renderLiftV2, - renderPerformanceTable, - renderPrecisionRecallV2, - renderReport, - renderRoc, - renderRocV2, - renderSummaryMetrics, - renderWithOperatingPointSelection, - resolveV2RenderOptions, - rocSpecFromRtichokePython, - rocSpecFromRtichokeR, - rocV2SpecFromRtichokePython, - rocV2SpecFromRtichokeR -}; +:where(.${f} text), +:where(.${f} tspan) { + white-space: pre; +}`)).call(Mf,r);for(let V of u){let{channels:K,values:Y,facets:Z}=y.get(V);if(d===void 0||V.facet==="super"){let J=null;if(Z&&(J=Z[0],J=V.filter(J,K,Y),J.length===0))continue;let ye=V.render(J,g,Y,I,v);if(ye==null)continue;C.appendChild(ye)}else{let J;for(let ye of d){if(!(V.facetAnchor?.(d,F,ye)??!ye.empty))continue;let B=null;if(Z){let X=m.has(V);if(B=Z[X?ye.i:0],B=V.filter(B,K,Y),B.length===0)continue;!X&&B===Z[0]&&(B=b6(B)),B.fx=ye.x,B.fy=ye.y,B.fi=ye.i}let W=V.render(B,g,Y,T,v);if(W!=null){(J??=nn(C).append("g")).append(()=>W).datum(ye);for(let X of["aria-label","aria-description","aria-hidden","transform"])W.hasAttribute(X)&&(J.attr(X,W.getAttribute(X)),W.removeAttribute(X))}}J?.selectChildren().each(H)}}let U=d8(x,v,e),{figure:D=n!=null||o!=null||i!=null||U.length>0}=e;D&&(E=O.createElement("figure"),E.className=`${f}-figure`,E.style.maxWidth="initial",n!=null&&E.append(C8(O,n,"h2")),o!=null&&E.append(C8(O,o,"h3")),E.append(...U,C),i!=null&&E.append(eE(O,i)),"value"in C&&(E.value=C.value,delete C.value)),E.scale=VT(g.scales),E.legend=l8(x,v,e);let oe=yT();return oe>0&&nn(C).append("text").attr("x",j).attr("y",20).attr("dy","-1em").attr("text-anchor","end").attr("font-family","initial").text("\u26A0\uFE0F").append("title").text(`${oe.toLocaleString("en-US")} warning${oe===1?"":"s"}. Please check the console.`),E}function C8(e,t,r){if(t.ownerDocument)return t;let n=e.createElement(r);return n.append(t),n}function eE(e,t){let r=e.createElement("figcaption");return r.append(t),r}function A8(e){return e.flat(1/0).filter(t=>t!=null).map(tE)}function tE(e){return typeof e.render=="function"?e:new Lb(e)}var Lb=class extends ot{constructor(t){if(typeof t!="function")throw new TypeError("invalid mark; missing render function");super(),this.render=t}render(){}};function Db(e,t){for(let r in e)F8(e[r],t);return e}function F8(e,t){let{scale:r,transform:n=!0}=e;if(r==null||!n)return;let{type:o,percent:i,interval:a,transform:s=i?f=>f==null?NaN:f*100:Cg(a,o)}=t[r]??{};s!=null&&(e.value=We(e.value,s),e.transform=!1)}function rE(e){for(let t in e)Dg(t,e[t])}function Uu(e,t,r,n=p6){for(let{channels:o}of t.values())for(let i in o){let a=o[i],{scale:s}=a;if(s!=null&&n(s))if(s==="projection"){if(!XT(r)){let f=r.x?.domain===void 0,u=r.y?.domain===void 0;if(f||u){let[c,m]=QT(a);f&&$b(e,"x",c),u&&$b(e,"y",m)}}}else $b(e,s,a)}return e}function $b(e,t,r){let n=e.get(t);n!==void 0?n.push(r):e.set(t,[r])}function nE(e,t){if(e==null)return;let{x:r,y:n}=e;if(r==null&&n==null)return;let o=oi(e.data);if(o==null)throw new Error("missing facet data");let i={};r!=null&&(i.fx=gf(o,{value:r,scale:"fx"})),n!=null&&(i.fy=gf(o,{value:n,scale:"fy"})),Db(i,t);let a=Pd(o,i);return{channels:i,groups:a,data:e.data}}function P8(e,t,r){if(e.facet===null||e.facet==="super")return;let{fx:n,fy:o}=e;if(n!=null||o!=null){let f=oi(e.data??n??o);if(f===void 0)throw new Error(`missing facet data in ${e.ariaLabel}`);if(f===null)return;let u={};return n!=null&&(u.fx=gf(f,{value:n,scale:"fx"})),o!=null&&(u.fy=gf(f,{value:o,scale:"fy"})),Db(u,r),{channels:u,groups:Pd(f,u)}}if(t===void 0)return;let{channels:i,groups:a,data:s}=t;if(e.facet!=="auto"||e.data===s)return{channels:i,groups:a};s.length>0&&(a.size>1||a.size===1&&i.fx&&i.fy&&[...a][0][1].size>1)&&zi(oi(e.data))===zi(s)&&Cr(`Warning: the ${e.ariaLabel} mark appears to use faceted data, but isn\u2019t faceted. The mark data has the same length as the facet data and the mark facet option is "auto", but the mark data and facet data are distinct. If this mark should be faceted, set the mark facet option to true; otherwise, suppress this warning by setting the mark facet option to false.`)}function oE(e,t={}){return ai({...t,x:null,y:null},(r,n,o,i,a,s)=>s.getMarkState(e))}function iE(e){let t=[];for(let r of e){let n=r.tip;if(n){n===!0?n={}:typeof n=="string"&&(n={pointer:n});let{pointer:o,preferredAnchor:i}=n;o=/^x$/i.test(o)?uM:/^y$/i.test(o)?fb:cM,n=o(oE(r,n)),n.title=null,i===void 0&&(n.preferredAnchor=o===fb?"left":"bottom");let a=R8(r.data,n);a.facet=r.facet,a.facetAnchor=r.facetAnchor,t.push(a)}}return t}function aE(e,t,r){let{projection:n,x:o={},y:i={},fx:a={},fy:s={},axis:f,grid:u,facet:c={},facet:{axis:m=f,grid:l}=c,x:{axis:p=f,grid:d=p===null?null:u}=o,y:{axis:y=f,grid:x=y===null?null:u}=i,fx:{axis:w=m,grid:g=w===null?null:l}=a,fy:{axis:S=m,grid:b=S===null?null:l}=s}=r;(n||!mf(o)&&!k8("x",e))&&(p=d=null),(n||!mf(i)&&!k8("y",e))&&(y=x=null),t.has("fx")||(w=g=null),t.has("fy")||(S=b=null),p===void 0&&(p=!Qd(e,"x")),y===void 0&&(y=!Qd(e,"y")),w===void 0&&(w=!Qd(e,"fx")),S===void 0&&(S=!Qd(e,"fy")),p===!0&&(p="bottom"),y===!0&&(y="left"),w===!0&&(w=p==="top"||p===null?"bottom":"top"),S===!0&&(S=y==="right"||y===null?"left":"right");let T=[];return Zd(T,b,WM,s),Xd(T,S,zM,"right","left",c,s),Zd(T,g,ZM,a),Xd(T,w,KM,"top","bottom",c,a),Zd(T,x,YM,i),Xd(T,y,Mb,"left","right",r,i),Zd(T,d,XM,o),Xd(T,p,Ob,"bottom","top",r,o),T}function Xd(e,t,r,n,o,i,a){if(!t)return;let s=sE(t);a=fE(s?n:t,i,a);let{line:f}=a;(r===Mb||r===Ob)&&f&&!Ka(f)&&e.push(Nb(cE(a))),e.push(r(a)),s&&e.push(r({...a,anchor:o,label:null}))}function Zd(e,t,r,n){!t||Ka(t)||e.push(r(uE(t,n)))}function sE(e){return/^\s*both\s*$/i.test(e)}function fE(e,t,{line:r=t.line,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:f,fontVariant:u,ariaLabel:c,ariaDescription:m,label:l=t.label,labelAnchor:p,labelArrow:d=t.labelArrow,labelOffset:y}){return{anchor:e,line:r,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:f,fontVariant:u,ariaLabel:c,ariaDescription:m,label:l,labelAnchor:p,labelArrow:d,labelOffset:y}}function cE(e){let{anchor:t,line:r}=e;return{anchor:t,facetAnchor:t+"-empty",stroke:r===!0?void 0:r}}function uE(e,{stroke:t=hf(e)?e:void 0,ticks:r=lE(e)?e:void 0,tickSpacing:n,ariaLabel:o,ariaDescription:i}){return{stroke:t,ticks:r,tickSpacing:n,ariaLabel:o,ariaDescription:i}}function lE(e){switch(typeof e){case"number":return!0;case"string":return!hf(e)}return hn(e)||typeof e?.range=="function"}function Qd(e,t){let r=`${t}-axis `;return e.some(n=>n.ariaLabel?.startsWith(r))}function k8(e,t){for(let r of t)for(let n in r.channels){let{scale:o}=r.channels[n];if(o===e||o==="projection")return!0}return!1}function pE(e,t){for(let r in e){let n=e[r],o=t[r];n.label===void 0&&o&&(n.label=o.label)}return e}function mE({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:f}=Cd(r),u=e&&N8(e),c=t&&N8(t);return{marginTop:t?c[0]:n,marginRight:e?s-u[1]:o,marginBottom:t?f-c[1]:i,marginLeft:e?u[0]:a,inset:{marginTop:r.marginTop,marginRight:r.marginRight,marginBottom:r.marginBottom,marginLeft:r.marginLeft},width:s,height:f}}function N8(e){let t=e.domain();if(t.length===0)return[0,e.bandwidth()];let r=e(t[0]),n=e(t[t.length-1]);return nb.selectAll().data(t).enter().append(g?"circle":"path").call(Bt,this).call(g?T=>{T.attr("cx",f?I=>f[I]:x).attr("cy",u?I=>u[I]:w).attr("r",c?I=>c[I]:p)}:T=>{T.attr("transform",Of`translate(${f?I=>f[I]:x},${u?I=>u[I]:w})${m?I=>` rotate(${m[I]})`:d?` rotate(${d})`:""}`).attr("d",c&&l?I=>{let v=En();return l[I].draw(v,c[I]*c[I]*Math.PI),v}:c?I=>{let v=En();return y.draw(v,c[I]*c[I]*Math.PI),v}:l?I=>{let v=En();return l[I].draw(v,S),v}:(()=>{let I=En();return y.draw(I,S),I})())}).call(Ar,this,n)).node()}};function Za(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=ii(t,r)),new Jd(e,{...n,x:t,y:r})}var gE={ariaLabel:"line",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1},eh=class extends ot{constructor(t,r={}){let{x:n,y:o,z:i,curve:a,tension:s}=r;super(t,{x:{value:n,scale:"x"},y:{value:o,scale:"y"},z:{value:bd(r),optional:!0}},r,gE),this.z=i,this.curve=E8(a,s),$u(this,r)}filter(t){return t}project(t,r,n){this.curve!==ju&&super.project(t,r,n)}render(t,r,n,o,i){let{x:a,y:s}=n,{curve:f}=this;return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,r).call(u=>u.selectAll().data(oM(t,[a,s],this,n)).enter().append("path").call(Bt,this).call(nM,this,n).call(dM,this,n,i).attr("d",f===ju&&i.projection?bE(i.path(),a,s):Ux().curve(f).defined(c=>c>=0).x(c=>a[c]).y(c=>s[c]))).node()}};function bE(e,t,r){return t=za(t),r=za(r),n=>{let o=[],i=[o];for(let a of n)a===-1?(o=[],i.push(o)):o.push([t[a],r[a]]);return e({type:"MultiLineString",coordinates:i})}}function Ct(e,{x:t,y:r,...n}={}){return[t,r]=ii(t,r),new eh(e,{...n,x:t,y:r})}ot.prototype.plot=function({marks:e=[],...t}={}){return vo({...t,marks:[...e,this]})};var wE=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],$8={background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"};function SE(e,t){let r=[...t?[e.model]:[],`Predicted: ${e.predicted.toFixed(3)}`,`Observed: ${e.observed.toFixed(3)}`];return e.method==="discrete"&&e.events!==void 0&&e.total!==void 0&&(r[r.length-1]+=` ( ${e.events} / ${e.total} )`),r.join(` +`)}function IE(e){let r=[...new Set(e.data.map(p=>p.model))].length>1,n=r?wE:["#000000"],o=e.data.map(p=>({...p,tooltip:SE(p,r)})),i=[];e.references?.some(p=>p.type==="identity")&&i.push(Ct([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2,strokeDasharray:"4,4"})),i.push(Ct(o,{x:"predicted",y:"observed",stroke:"model",strokeWidth:2,title:"tooltip",tip:!0}));let a=o.filter(p=>p.method==="discrete");a.length>0&&i.push(Za(a,{x:"predicted",y:"observed",fill:"model",stroke:"white",strokeWidth:1.5,r:5,title:"tooltip",tip:!0}));let s=(e.distribution?.length??0)>0,f=vo({width:600,height:s?480:600,marginLeft:64,marginBottom:s?16:56,style:$8,x:{label:s?null:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6,axis:s?null:"bottom"},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:r,range:n},marks:i});if(!s||!e.distribution)return f;let u=e.distribution.map(p=>({...p,tooltip:`${r?`${p.model} +`:""}${p.count} observations in [${(p.midpoint-p.binWidth/2).toFixed(3)}, ${(p.midpoint+p.binWidth/2).toFixed(3)}]`})),c=new Set(e.distribution.map(p=>p.model)).size,m=vo({width:600,height:120,marginLeft:64,marginTop:0,marginBottom:48,style:$8,x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:null,grid:!1,ticks:3},color:{legend:!1,range:n},marks:[Vu(u,{x1:p=>p.midpoint-p.binWidth/2,x2:p=>p.midpoint+p.binWidth/2,y:"count",fill:"model",fillOpacity:1/Math.max(c,1),title:"tooltip",tip:!0})]}),l=document.createElement("div");return l.style.width="600px",l.style.maxWidth="100%",l.append(f,m),l}var L8=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],xr={width:600,height:500,margins:{top:28,right:28,bottom:58,left:66},background:"#ffffff",frame:{color:"#444444",width:1},typography:{fontFamily:"Arial, Helvetica, sans-serif",fontSize:12,axisTitleSize:14,axisTitleWeight:400,legendSize:12},axis:{color:"#444444",tickSize:5,tickPadding:7,ticks:6,numberFormat:".1f"},colors:L8,line:{width:2,dash:null},marker:{radius:2.5,fill:null,stroke:"#ffffff",strokeWidth:.5},reference:{color:"#BEBEBE",width:1.5,dash:"2,3"},legend:{position:"top",swatchWidth:12,columns:null},tip:{digits:3}};function _E(e){let t=e.theme??{};return{...xr,width:e.width??xr.width,height:e.height??xr.height,background:t.background??xr.background,colors:e.colors??xr.colors,margins:{...xr.margins,...t.margins},frame:{...xr.frame,...t.frame},typography:{...xr.typography,...t.typography},axis:{...xr.axis,...t.axis},line:{...xr.line,...t.line},marker:{...xr.marker,...t.marker},reference:{...xr.reference,...t.reference},legend:{...xr.legend,...t.legend},tip:{...xr.tip,...t.tip}}}function To(e,t={}){let r=t.allGroups??(typeof e=="number"?Array.from({length:e},(s,f)=>`group-${f+1}`):[...e]),n=_E(t);if(!Number.isFinite(n.width)||n.width<=0||!Number.isFinite(n.height)||n.height<=0)throw new Error("Renderer width and height must be positive finite numbers");if(!Number.isInteger(n.tip.digits)||n.tip.digits<0||n.tip.digits>20)throw new Error("Renderer tip digits must be an integer between 0 and 20");let o=r.length<=1?["#000000"]:[...n.colors];if(o.length1;return{theme:{...n,colors:i},groups:r,colors:i,colorByGroup:new Map(r.map((s,f)=>[s,i[f]])),showLegend:a}}function D8(e){if(!e.operatingPoint)return[];let t=e.operatingPoint.dimension,r=t==="probability_threshold"?e.type==="decision_curve"||e.type==="interventions_avoided"?"threshold":"cutoff":"ppcr";if(t==="probability_threshold"){let n=e.series.map(i=>i.id);if(n.length===0)return[];let o=null;for(let i of n){let s=e.data.filter(u=>u.seriesId===i).map(u=>u[r]).filter(u=>typeof u=="number"&&Number.isFinite(u)),f=new Set(s);if(o===null)o=f;else{let u=o;o=new Set(Array.from(u).filter(c=>f.has(c)))}}return Array.from(o??[]).sort((i,a)=>i-a)}else{let n=e.data.map(i=>i[r]).filter(i=>typeof i=="number"&&Number.isFinite(i));return[...new Set(n)].sort((i,a)=>i-a)}}function vE(e,t){let r=e.series.filter(o=>t.has(o.display.group)),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId))}}function Af(e,t,r,n,o){let i=Gu(e),a=n;if(i.length<=1)return r(e,t,a,g=>{a=g,o&&o(g)});let s={...t,allGroups:i,showLegend:!1},f=To(i,s),{theme:u,colorByGroup:c}=f,m=new Map(e.series.map(g=>[g.display.group,g.display.label])),l=new Set(i),p=document.createElement("div");p.className="rtichoke-legend-chart",p.style.maxWidth=`${u.width}px`;let d=document.createElement("div");d.className="rtichoke-legend",d.style.paddingLeft=`${u.margins.left}px`,d.setAttribute("aria-label","Chart legend");let y=new Map;i.forEach(g=>{let S=document.createElement("button");S.type="button",S.className="rtichoke-legend-item",S.setAttribute("aria-pressed","true");let b=m.get(g)??g;S.setAttribute("aria-label",`Toggle series ${b}`);let T=document.createElement("span");T.className="rtichoke-legend-swatch";let I=document.createElement("span");I.className="rtichoke-legend-line",I.style.backgroundColor=c.get(g)??"#000000",T.append(I);let v=document.createElement("span");v.className="rtichoke-legend-label",v.textContent=b,S.append(T,v),d.append(S),y.set(g,S)});let x=document.createElement("div");x.className="rtichoke-legend-content";let w=()=>{let g=vE(e,l),S=r(g,s,a,b=>{a=b,o&&o(b)});x.replaceChildren(S)};return i.forEach(g=>{let S=y.get(g);S.addEventListener("click",()=>{if(l.has(g)){if(l.size<=1)return;l.delete(g),S.setAttribute("aria-pressed","false")}else l.add(g),S.setAttribute("aria-pressed","true");w()})}),p.append(d,x),w(),p}function Qa(e,t,r,n,o){if(!e.operatingPoint)return r(e,void 0);let i=D8(e);if(i.length===0)return r(e,void 0);let a=To(Gu(e),t),{theme:s}=a,f=document.createElement("div");f.className="rtichoke-operating-point-chart",f.style.maxWidth=`${s.width}px`;let u=document.createElement("div");u.className="rtichoke-operating-point-control",u.style.marginLeft=`${s.margins.left}px`,u.style.marginRight=`${s.margins.right}px`;let c=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"Predicted positives condition rate (PPCR)",m=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"PPCR",l=document.createElement("label");l.className="rtichoke-operating-point-label";let p=document.createElement("span");p.textContent=`${m}: `;let d=document.createElement("span");d.className="rtichoke-operating-point-value";let y=document.createElement("input");y.type="range",y.className="rtichoke-operating-point-slider",y.min="0",y.max=String(i.length-1),y.step="1",y.setAttribute("aria-label",c);let x=0;if(n!==void 0){let T=i.indexOf(n);T!==-1&&(x=T)}let w=i[x];y.value=String(x);let g=w.toFixed(s.tip.digits);d.textContent=g,y.setAttribute("aria-valuetext",g),o&&o(w),l.append(p,d),u.append(l,y);let S=document.createElement("div");S.className="rtichoke-operating-point-content";let b=T=>{S.replaceChildren(r(e,T))};return y.addEventListener("input",()=>{let T=Number(y.value),I=i[T],v=I.toFixed(s.tip.digits);d.textContent=v,y.setAttribute("aria-valuetext",v),o&&o(I),b(I)}),f.append(S,u),b(w),f}function TE(e){return new Map(e.series.map(t=>[t.id,t.display]))}function Gu(e){return[...new Set(e.series.map(t=>t.display.group))]}function th(e,t){let r=TE(e);return t.map(n=>({...n,group:r.get(n.seriesId).group,label:r.get(n.seriesId).label}))}function Ji(e,t){return t.filter(([,r])=>r!==void 0).map(([r,n])=>`${r}: ${typeof n=="number"?n.toFixed(e):String(n)}`).join(` +`)}function rh(e,t){let{theme:r}=e,n=new Map(t.series.map(o=>[o.display.group,o.display.label]));return{width:r.width,height:r.height,marginTop:r.margins.top,marginRight:r.margins.right,marginBottom:r.margins.bottom,marginLeft:r.margins.left,style:{background:r.background,color:r.axis.color,fontFamily:r.typography.fontFamily,fontSize:`${r.typography.fontSize}px`},color:{legend:e.showLegend,domain:e.groups,range:e.colors,tickFormat:o=>n.get(o)??o}}}function Qi(e,t,r){return{label:t,domain:r,grid:!1,line:!0,ticks:e.axis.ticks,tickSize:e.axis.tickSize,tickPadding:e.axis.tickPadding,tickFormat:e.axis.numberFormat}}function Vb(e,t){let r={stroke:t.reference.color,strokeWidth:t.reference.width,strokeDasharray:t.reference.dash},n=[];for(let o of e.references??[])o.type==="identity"?n.push(Ct([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",...r,title:o.label})):o.type==="horizontal"&&o.value!==void 0?n.push(li([o.value],{...r,title:o.label})):o.type==="path"&&o.points&&n.push(Ct(o.points,{x:"x",y:"y",...r,title:o.label}));return n}function nh(e,t){return e}function ME(e,t,r=40){let n=new Map;for(let i of e){let a=t(i),s=n.get(a);s||(s=[],n.set(a,s)),s.push(i)}let o=[];for(let i of n.values()){let a=i.length;if(a<=r)o.push(...i);else{let s=new Set;for(let f=0;fc.seriesId,40),a=n.theme,s=o?.marker?.radius??a.marker.radius,f=o?.marker?.stroke??a.marker.stroke,u=o?.marker?.strokeWidth??a.marker.strokeWidth;return Za(i,{ariaLabel:"ordinary-point",x:t,y:r,fill:"group",stroke:f,strokeWidth:u,r:s,title:c=>c.title,tip:!0})}function kf(e,t,r,n,o){let i=n.groups.length>1,a=o?.marker?.fill??(i?"group":"#f6e3be"),s=o?.marker?.stroke??"#1a1a1a",f=o?.marker?.strokeWidth??2.5,u=o?.marker?.radius??7.5;return Za(e,{className:"rtichoke-selected-operating-point",x:t,y:r,fill:a,stroke:s,strokeWidth:f,r:u,title:c=>c.title,tip:!0})}function ea(e,t){let r=vo(e);for(let n of r.querySelectorAll('[aria-label$="axis label"] text'))n.style.fontSize=`${t.typography.axisTitleSize}px`,n.style.fontWeight=String(t.typography.axisTitleWeight);for(let n of r.querySelectorAll('[aria-label="frame"]'))n.setAttribute("stroke",t.frame.color);if(r instanceof HTMLElement){r.style.fontSize=`${t.typography.legendSize}px`;for(let n of r.querySelectorAll('svg[width="15"], div[class*="-swatches"] svg'))n.setAttribute("width",String(t.legend.swatchWidth)),n.setAttribute("height","10")}return r}function OE(e,t={},r){Lo(e);let n=To(Gu(e),t),{theme:o}=n,i=e.operatingPoint?.dimension,a=th(e,e.data).map(f=>{let u=1-f.specificity,c=[["Series",f.label]];return i==="ppcr"?(f.ppcr!==void 0&&c.push(["PPCR",f.ppcr]),c.push(["Cutoff",f.cutoff])):(c.push(["Cutoff",f.cutoff]),f.ppcr!==void 0&&c.push(["PPCR",f.ppcr])),c.push(["Sensitivity",f.sensitivity],["Specificity",f.specificity],["False Positive Rate",u]),{...f,false_positive_rate:u,title:Ji(o.tip.digits,c)}}),s=Vb(e,o);if(s.push(Ct(a,{x:"false_positive_rate",y:"sensitivity",z:"seriesId",stroke:"group",strokeWidth:o.line.width,strokeDasharray:o.line.dash??void 0,title:f=>f.title,tip:!0}),Pf(a,"false_positive_rate","sensitivity",n,t.theme)),r!==void 0&&e.operatingPoint){let f=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr",u=a.filter(c=>c[f]===r);u.length>0&&s.push(kf(u,"false_positive_rate","sensitivity",n,t.theme))}return ea({...rh(n,e),x:Qi(o,e.xAxis.label,e.xAxis.domain),y:Qi(o,e.yAxis.label,e.yAxis.domain),marks:nh(s,o)},o)}function Ub(e,t={}){return Af(e,t,(r,n,o,i)=>Nf(r,(a,s,f)=>Qa(a,n,(u,c)=>OE(u,n,c),s,f),o,i))}function jb(e,t={}){Lo(e);let r=To(Gu(e),t),{theme:n}=r,o=th(e,e.data).map(y=>({...y,title:Ji(n.tip.digits,[["Series",y.label],["Predicted",y.predicted],["Observed",y.observed],["Events",y.events],["Total",y.total]])})),i=Vb(e,n);i.push(Ct(o,{x:"predicted",y:"observed",z:"seriesId",stroke:"group",strokeWidth:n.line.width,strokeDasharray:n.line.dash??void 0,title:y=>y.title,tip:!0}));let a=o.filter(y=>y.method==="discrete");a.length>0&&i.push(Za(a,{x:"predicted",y:"observed",fill:n.marker.fill??"group",stroke:n.marker.stroke,strokeWidth:n.marker.strokeWidth,r:n.marker.radius,title:y=>y.title,tip:!0}));let s=(e.distribution?.length??0)>0,f=s?Math.round(n.height*.8):n.height,u=o.map(y=>y.observed).filter(Number.isFinite),c=e.yAxis.domain??[Math.min(0,...u),Math.max(1,...u)],m=ea({...rh(r,e),height:f,marginBottom:s?8:n.margins.bottom,x:s?{...Qi(n,e.xAxis.label,e.xAxis.domain),axis:null,label:null}:Qi(n,e.xAxis.label,e.xAxis.domain),y:Qi(n,e.yAxis.label,c),marks:nh(i,n)},n);if(!s||!e.distribution)return m;let l=th(e,e.distribution).map(y=>({...y,title:Ji(n.tip.digits,[["Series",y.label],["Midpoint",y.midpoint],["Count",y.count]])})),p=ea({...rh(r,e),height:n.height-f,marginTop:0,marginBottom:n.margins.bottom,x:Qi(n,e.xAxis.label,e.xAxis.domain),y:{label:null,grid:!1,ticks:3,tickSize:n.axis.tickSize,tickPadding:n.axis.tickPadding},color:{legend:!1,domain:r.groups,range:r.colors},marks:nh([Vu(l,{x1:y=>y.midpoint-y.binWidth/2,x2:y=>y.midpoint+y.binWidth/2,y:"count",fill:"group",fillOpacity:1/Math.max(r.groups.length,1),title:y=>y.title,tip:!0})],n)},n),d=document.createElement("div");return d.className="rtichoke-calibration",d.style.width=`${n.width}px`,d.style.maxWidth="100%",d.append(m,p),d}function RE(e,t,r,n,o){Lo(e);let i=To(Gu(e),t),{theme:a}=i,s=e.operatingPoint?.dimension,f=th(e,e.data).map(c=>{let m=c,l=[["Series",c.label]];return e.type==="precision_recall"?(s==="ppcr"?(m.ppcr!==void 0&&l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])):(l.push(["Cutoff",m.cutoff]),m.ppcr!==void 0&&l.push(["PPCR",m.ppcr])),l.push(["Sensitivity",m.sensitivity],["PPV",m.ppv])):e.type==="gains"?(s==="probability_threshold"?(l.push(["Cutoff",m.cutoff]),l.push(["PPCR",m.ppcr])):(l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])),l.push(["Sensitivity",m.sensitivity])):e.type==="lift"&&(s==="probability_threshold"?(l.push(["Cutoff",m.cutoff]),l.push(["PPCR",m.ppcr])):(l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])),l.push(["Lift",m.lift])),{...c,title:Ji(a.tip.digits,l)}}),u=Vb(e,a);if(u.push(Ct(f,{x:r,y:n,z:"seriesId",stroke:"group",strokeWidth:a.line.width,strokeDasharray:a.line.dash??void 0,title:c=>c.title,tip:!0}),Pf(f,r,n,i,t.theme)),o!==void 0&&e.operatingPoint){let m=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr",l=f.filter(p=>p[m]===o);l.length>0&&u.push(kf(l,r,n,i,t.theme))}return ea({...rh(i,e),x:Qi(a,e.xAxis.label,e.xAxis.domain),y:Qi(a,e.yAxis.label,e.yAxis.domain),marks:nh(u,a)},a)}function CE(e){return[...new Set(e.series.map(t=>t.horizon).filter(t=>t!==void 0))]}function AE(e,t){let r=e.series.filter(o=>o.horizon===void 0||o.horizon===t),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId)),references:e.references?.filter(o=>o.scope!=="population_horizon"||o.horizon===t)}}function Nf(e,t,r,n){let o=CE(e);if(o.length<=1)return t(e,r,n);let i=r,a=document.createElement("div");a.className="rtichoke-horizon-chart";let s=document.createElement("label");s.className="rtichoke-horizon-control",s.textContent="Fixed Time Horizon: ";let f=document.createElement("select");f.className="rtichoke-horizon-select",f.setAttribute("aria-label","Fixed Time Horizon");for(let m of o){let l=document.createElement("option");l.value=String(m),l.textContent=String(m),f.append(l)}s.append(f);let u=document.createElement("div"),c=m=>{u.replaceChildren(t(AE(e,m),i,l=>{i=l,n&&n(l)}))};return f.addEventListener("change",()=>c(Number(f.value))),a.append(s,u),c(o[0]),a}function Bb(e,t,r,n){return Af(e,t,(o,i,a,s)=>Nf(o,(f,u,c)=>Qa(f,i,(m,l)=>RE(m,i,r,n,l),u,c),a,s))}function Gb(e,t={}){return Bb(e,t,"sensitivity","ppv")}function zb(e,t={}){return Bb(e,t,"ppcr","sensitivity")}function Kb(e,t={}){return Bb(e,t,"ppcr","lift")}function qb(e,t={}){return Lo(e),Af(e,t,(r,n,o,i)=>Nf(r,(a,s,f)=>Qa(a,n,(u,c)=>PE(u,n,c),s,f),o,i))}function PE(e,t,r){let n=[...new Set(e.series.map(p=>p.display.group))],o=To(n,{...t,showLegend:!1}),{theme:i}=o,a=new Map(e.series.map(p=>[p.id,p.display])),s=new Map(e.series.map(p=>[p.display.group,p.display.label])),f=e.data.map(p=>({...p,group:a.get(p.seriesId).group,label:a.get(p.seriesId).label,title:Ji(i.tip.digits,[["Series",a.get(p.seriesId).label],["Threshold",p.threshold],["Net Benefit",p.netBenefit]])})),u={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},c={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:"4,3"},m=[];for(let p of e.references)p.benchmark==="treat_none"?m.push(li([0],{...u,title:()=>p.label??"Treat None"})):m.push(Ct(p.points,{x:"x",y:"y",...c,title:()=>p.label??`Treat All \u2014 ${p.population}`}));if(m.push(Ct(f,{x:"threshold",y:"netBenefit",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),Pf(f,"threshold","netBenefit",o,t.theme)),r!==void 0&&e.operatingPoint){let p=f.filter(d=>d.threshold===r);p.length>0&&m.push(kf(p,"threshold","netBenefit",o,t.theme))}let l=(p,d)=>({label:p,domain:d,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat});return ea({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:p=>s.get(p)??p},x:l(e.xAxis.label,e.xAxis.domain),y:l(e.yAxis.label,e.yAxis.domain),marks:m},i)}function Hb(e,t={}){return Lo(e),Af(e,t,(r,n,o,i)=>Nf(r,(a,s,f)=>Qa(a,n,(u,c)=>kE(u,n,c),s,f),o,i))}function kE(e,t,r){let n=[...new Set(e.series.map(p=>p.display.group))],o=To(n,{...t,showLegend:!1}),{theme:i}=o,a=new Map(e.series.map(p=>[p.id,p.display])),s=new Map(e.series.map(p=>[p.display.group,p.display.label])),f=e.data.map(p=>({...p,group:a.get(p.seriesId).group,label:a.get(p.seriesId).label,title:Ji(i.tip.digits,[["Series",a.get(p.seriesId).label],["Threshold",p.threshold],["Interventions Avoided",p.interventionsAvoided]])})),u={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},c={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:"4,3"},m=[];for(let p of e.references)p.benchmark==="treat_all"?m.push(li([0],{...u,title:()=>p.label??"Treat All"})):m.push(Ct(p.points,{x:"x",y:"y",...c,title:()=>p.label??`Treat None \u2014 ${p.population}`}));if(m.push(Ct(f,{x:"threshold",y:"interventionsAvoided",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),Pf(f,"threshold","interventionsAvoided",o,t.theme)),r!==void 0&&e.operatingPoint){let p=f.filter(d=>d.threshold===r);p.length>0&&m.push(kf(p,"threshold","interventionsAvoided",o,t.theme))}let l=(p,d)=>({label:p,domain:d,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat});return ea({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:p=>s.get(p)??p},x:l(e.xAxis.label,e.xAxis.domain),y:l(e.yAxis.label,e.yAxis.domain),marks:m},i)}var Pr="\u2014",NE=[{id:"sensitivity",defaultLabel:"Sensitivity"},{id:"specificity",defaultLabel:"Specificity"},{id:"ppv",defaultLabel:"PPV"},{id:"npv",defaultLabel:"NPV"},{id:"lift",defaultLabel:"Lift"},{id:"net_benefit",defaultLabel:"Net Benefit"}];function Un(e,t,r){let n=e.createElement("td"),o=e.createElement("span");return o.className="rtichoke-performance-table__cell-text",o.textContent=t,n.append(o),r&&(n.className=r),n}function ut(e,t,r){let n=e.createElement("th");return n.scope=r?.scope??"col",r?.colSpan&&(n.colSpan=r.colSpan),r?.rowSpan&&(n.rowSpan=r.rowSpan),n.textContent=t,r?.className&&(n.className=r.className),r?.ariaLabel&&n.setAttribute("aria-label",r.ariaLabel),n}function FE(e){let t=new Map(e.map(a=>[a.metricId,a.estimate])),r=t.get("true_positives"),n=t.get("true_negatives"),o=t.get("false_positives"),i=t.get("false_negatives");return r==null||isNaN(r)||n===void 0||n===null||isNaN(n)||o===void 0||o===null||isNaN(o)||i===void 0||i===null||isNaN(i)?null:{tp:r,tn:n,fp:o,fn:i}}function ta(e,t,r,n){let o=e.createElement("td");o.className=n;let i=e.createElement("span");i.className="rtichoke-performance-table__confusion-val",i.textContent=oh(t);let a=e.createElement("span");if(a.className="rtichoke-performance-table__confusion-pct",r>0&&!isNaN(t)&&!isNaN(r)){let s=t/r*100;a.textContent=`${s.toFixed(2)}%`}else a.textContent=Pr;return o.append(i,a),o}var EE=0;function V8(e){return e.split("_").map((t,r)=>r===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}function oh(e){return Number.isInteger(e)?e.toString():new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(e)}function $E(e){return e.toFixed(2)}function LE(e){if(e.length<=1)return 2;let t=2;for(;t<=6;){let r=e.map(o=>o.toFixed(t));if(new Set(r).size===new Set(e).size)return t;t++}return t}function DE(e,t){if(!e||e.estimate===null||e.estimate===void 0||isNaN(e.estimate))return Pr;let r=t(e.estimate);if(e.lower===void 0&&e.upper===void 0)return r;let n=e.lower===void 0||e.lower===null||isNaN(e.lower)?Pr:t(e.lower),o=e.upper===void 0||e.upper===null||isNaN(e.upper)?Pr:t(e.upper);return`${r} [${n}, ${o}]`}function zu(e,t,r,n=!1,o=!1,i="positive"){if(isNaN(r)||!isFinite(r))return;let a=t.createElement("div");a.className="rtichoke-performance-table__bar";let s=t.createElement("div");if(s.className="rtichoke-performance-table__bar-fill",n){let f=Math.min(Math.max(r,0),50);s.style.width=`${f}%`,o?(s.classList.add("rtichoke-performance-table__bar-fill--negative"),s.style.right="50%",s.style.left="auto"):(s.classList.add("rtichoke-performance-table__bar-fill--positive"),s.style.left="50%",s.style.right="auto")}else{let f=Math.min(Math.max(r,0),100);s.style.width=`${f}%`,i==="neutral"?s.classList.add("rtichoke-performance-table__bar-fill--neutral"):s.classList.add("rtichoke-performance-table__bar-fill--positive")}a.append(s),e.append(a)}function Yb(e,t=globalThis.document){A0(e);let r=t.createElement("div");if(r.className="rtichoke-performance-table",e.title){let B=t.createElement("div");B.className="rtichoke-performance-table__title",B.textContent=e.title,r.append(B)}let n=t.createElement("div");n.className="rtichoke-performance-table__scroll";let o=t.createElement("table");o.className="rtichoke-performance-table__table";let i=new Map(e.evaluations.map(B=>[B.id,B])),a=new Set(e.evaluations.map(B=>B.model).filter(Boolean)),s=new Set(e.evaluations.map(B=>B.population).filter(Boolean)),f=a.size>1,u=s.size>1,c=f,m=u||!f&&a.size===0&&s.size>1,l=e.evaluations.some(B=>B.label?!!(f&&B.label!==B.model||u&&B.label!==B.population||!f&&!u&&B.label!==B.model&&B.label!==B.population):!1),p=e.rows.some(B=>B.horizon!==void 0),d=e.rows.some(B=>B.context?.censoringHeuristic!==void 0),y=e.rows.some(B=>B.context?.competingEventHeuristic!==void 0),x=new Set(e.rows.map(B=>B.operatingPoint.type)),w=x.size===1&&x.has("probability_threshold"),g=x.size===1&&x.has("ppcr"),S=new Set(e.metrics.map(B=>B.id)),b=S.has("predicted_positives"),T=S.has("ppcr"),I=b&&(T||g),v=w||!g&&x.has("probability_threshold"),O=I,C=g&&!I,E=!w&&!g&&!I,A=e.rows.filter(B=>B.operatingPoint.type==="probability_threshold").map(B=>B.operatingPoint.value),F=LE(A),H=NE.map(B=>{let W=e.metrics.find(X=>X.id===B.id);return W?{id:W.id,label:W.label||B.defaultLabel}:null}).filter(B=>B!==null),j=new Set,M=H.filter(B=>j.has(B.label)?!1:(j.add(B.label),!0)),U=0,D=0;for(let B of e.rows)for(let W of B.values)if(W.metricId==="lift"&&W.estimate!==null&&W.estimate!==void 0&&isFinite(W.estimate)&&W.estimate>U&&(U=W.estimate),W.metricId==="net_benefit"&&W.estimate!==null&&W.estimate!==void 0&&isFinite(W.estimate)){let X=Math.abs(W.estimate);X>D&&(D=X)}let oe=++EE,V=t.createElement("thead");V.className="rtichoke-performance-table__header";let K=t.createElement("tr"),Y=t.createElement("tr"),Z=1;if(Y.append(ut(t,"",{ariaLabel:"Row details",className:"rtichoke-performance-table__toggle-header"})),c&&(Z++,Y.append(ut(t,"Model"))),m&&(Z++,Y.append(ut(t,"Population"))),l&&(Z++,Y.append(ut(t,"Evaluation"))),v&&(Z++,Y.append(ut(t,"Probability Threshold"))),O&&(Z++,Y.append(ut(t,"Predicted Positives"))),C&&(Z++,Y.append(ut(t,"PPCR"))),E&&(Z++,Y.append(ut(t,"Operating Point"))),p&&(Z++,Y.append(ut(t,"Time Horizon"))),d&&(Z++,Y.append(ut(t,"Censoring"))),y&&(Z++,Y.append(ut(t,"Competing Event"))),M.length>0){let B=ut(t,"",{colSpan:Z,className:"rtichoke-performance-table__spanner--empty"});K.append(B)}if(M.length>0){let B=ut(t,"Performance Metrics",{colSpan:M.length,className:"rtichoke-performance-table__spanner"});K.append(B);for(let W of M)Y.append(ut(t,W.label,{className:"rtichoke-performance-table__metric-header"}))}V.append(K),V.append(Y),o.append(V);let J=Z+M.length,ye=t.createElement("tbody");for(let B=0;B0?"100.00%":Pr,Th.append(Mh,Oh),Uf.append(Th),Wu.append(Uf),qt.append(Wu),xe.append(qt),ae.append(xe),$.append(ae),G.addEventListener("click",()=>{if(!$)return;let di=G.getAttribute("aria-expanded")==="true";G.setAttribute("aria-expanded",di?"false":"true"),G.setAttribute("aria-label",di?"Show confusion matrix detail":"Hide confusion matrix detail"),G.textContent=di?"\u25B8":"\u25BE",$.hidden=di})}le.append(re),c&&le.append(Un(t,X?.model??Pr,"rtichoke-performance-table__model")),m&&le.append(Un(t,X?.population??Pr,"rtichoke-performance-table__population")),l&&le.append(Un(t,X?.label??X?.id??Pr,"rtichoke-performance-table__evaluation"));let ke=new Map(W.values.map(G=>[G.metricId,G]));if(v){let G=W.operatingPoint.type==="probability_threshold"?W.operatingPoint.value:void 0,ae=G!==void 0?G.toFixed(F):Pr;le.append(Un(t,ae,"rtichoke-performance-table__op"))}if(O){let G=ke.get("predicted_positives")?.estimate,ae=ke.get("ppcr")?.estimate??(W.operatingPoint.type==="ppcr"?W.operatingPoint.value:void 0),xe=Pr,Ge=NaN;if(G!=null&&ae!==void 0&&ae!==null){let qt=oh(G),ts=(ae*100).toFixed(2);xe=`${qt} (${ts}%)`,Ge=ae*100}else ae!=null&&(xe=`${(ae*100).toFixed(2)}%`,Ge=ae*100);let Pt=Un(t,xe,"rtichoke-performance-table__op");isNaN(Ge)||zu(Pt,t,Ge,!1,!1,"neutral"),le.append(Pt)}if(C){let G=W.operatingPoint.type==="ppcr"?W.operatingPoint.value:ke.get("ppcr")?.estimate,ae=G!=null?`PPCR ${G.toFixed(2)}`:Pr,xe=Un(t,ae,"rtichoke-performance-table__op");G!=null&&zu(xe,t,G*100,!1,!1,"neutral"),le.append(xe)}if(E){let G=W.operatingPoint.type==="ppcr"?`PPCR ${W.operatingPoint.value.toFixed(2)}`:`Threshold ${W.operatingPoint.value.toFixed(F)}`;le.append(Un(t,G,"rtichoke-performance-table__op"))}if(p&&le.append(Un(t,W.horizon!==void 0?oh(W.horizon):Pr,"rtichoke-performance-table__horizon")),d){let G=W.context?.censoringHeuristic;le.append(Un(t,G?V8(G):Pr,"rtichoke-performance-table__context"))}if(y){let G=W.context?.competingEventHeuristic;le.append(Un(t,G?V8(G):Pr,"rtichoke-performance-table__context"))}for(let G of M){let ae=ke.get(G.id),xe=DE(ae,$E),Ge=Un(t,xe,"rtichoke-performance-table__metric");if(Ge.dataset.metricId=G.id,ae&&ae.estimate!==null&&ae.estimate!==void 0&&isFinite(ae.estimate)){let Pt=ae.estimate;if(["sensitivity","specificity","ppv","npv"].includes(G.id))zu(Ge,t,Pt*100);else if(G.id==="lift"){let qt=U>0?Pt/U*100:0;zu(Ge,t,qt)}else if(G.id==="net_benefit"&&D>0){let qt=Pt<0,ts=Math.abs(Pt)/D*50;zu(Ge,t,ts,!0,qt)}}le.append(Ge)}ye.append(le),$&&ye.append($)}return o.append(ye),n.append(o),r.append(n),r}var VE="\u2014";function Wb(e,t,r){let n=e.createElement("td");return n.textContent=t,r&&(n.className=r),n}function UE(e,t){let r=e.createElement("th");return r.scope="col",r.textContent=t,r}function jE(e){return e===null?VE:e.toFixed(2)}function Xb(e,t=globalThis.document){P0(e);let r=t.createElement("div");if(r.className="rtichoke-summary-metrics",e.title){let p=t.createElement("div");p.className="rtichoke-summary-metrics__title",p.textContent=e.title,r.append(p)}let n=[];for(let p of e.metrics)"horizon"in p&&p.horizon!==void 0&&(n.includes(p.horizon)||n.push(p.horizon));let o=n.length>0?n[0]:void 0,i=[];if(n.length>1){let p=t.createElement("label");p.className="rtichoke-horizon-control",p.textContent="Fixed Time Horizon: ";let d=t.createElement("select");d.className="rtichoke-horizon-select",d.setAttribute("aria-label","Fixed Time Horizon");for(let y of n){let x=t.createElement("option");x.value=String(y),x.textContent=String(y),d.append(x)}d.value=String(o),d.addEventListener("change",()=>{o=Number(d.value),l()}),p.append(d),r.append(p)}let a=t.createElement("table");a.className="rtichoke-summary-metrics__table";let s=t.createElement("thead"),f=t.createElement("tr");for(let p of["Owner","Metric","Estimate"])f.append(UE(t,p));s.append(f),a.append(s);let u=new Map(e.evaluations.map(p=>[p.id,p])),c=new Map(e.populations.map(p=>[p.id,p])),m=t.createElement("tbody");for(let p of e.metrics){let d=t.createElement("tr"),y="",x="",w;if(p.metric==="auroc"){let S=u.get(p.owner.evaluationId);y=S.label??S.model??S.population??S.id,x="AUROC",d.dataset.metric="auroc",d.dataset.evaluationId=p.owner.evaluationId}else p.metric==="prevalence"?(y=c.get(p.owner.populationId).label,x="Prevalence",d.dataset.metric="prevalence",d.dataset.populationId=p.owner.populationId):p.metric==="event_risk"&&(y=c.get(p.owner.populationId).label,x="Event Risk",w=p.horizon,d.dataset.metric="event_risk",d.dataset.populationId=p.owner.populationId,d.dataset.horizon=String(p.horizon));d.append(Wb(t,y,"rtichoke-summary-metrics__owner"),Wb(t,x,"rtichoke-summary-metrics__metric"));let g=Wb(t,jE(p.estimate),"rtichoke-summary-metrics__estimate");p.estimate===null?g.dataset.unavailable="true":g.dataset.estimate=String(p.estimate),d.append(g),i.push({element:d,horizon:w}),m.append(d)}a.append(m),r.append(a);function l(){for(let{element:p,horizon:d}of i)d===void 0||d===o?p.style.display="":p.style.display="none"}return l(),r}function BE(e){switch(e.errorType){case R.ArrayContains:return"Expected array to contain at least one matching value";case R.ArrayMaxContains:return`Expected array to contain no more than ${e.schema.maxContains} matching values`;case R.ArrayMinContains:return`Expected array to contain at least ${e.schema.minContains} matching values`;case R.ArrayMaxItems:return`Expected array length to be less or equal to ${e.schema.maxItems}`;case R.ArrayMinItems:return`Expected array length to be greater or equal to ${e.schema.minItems}`;case R.ArrayUniqueItems:return"Expected array elements to be unique";case R.Array:return"Expected array";case R.AsyncIterator:return"Expected AsyncIterator";case R.BigIntExclusiveMaximum:return`Expected bigint to be less than ${e.schema.exclusiveMaximum}`;case R.BigIntExclusiveMinimum:return`Expected bigint to be greater than ${e.schema.exclusiveMinimum}`;case R.BigIntMaximum:return`Expected bigint to be less or equal to ${e.schema.maximum}`;case R.BigIntMinimum:return`Expected bigint to be greater or equal to ${e.schema.minimum}`;case R.BigIntMultipleOf:return`Expected bigint to be a multiple of ${e.schema.multipleOf}`;case R.BigInt:return"Expected bigint";case R.Boolean:return"Expected boolean";case R.DateExclusiveMinimumTimestamp:return`Expected Date timestamp to be greater than ${e.schema.exclusiveMinimumTimestamp}`;case R.DateExclusiveMaximumTimestamp:return`Expected Date timestamp to be less than ${e.schema.exclusiveMaximumTimestamp}`;case R.DateMinimumTimestamp:return`Expected Date timestamp to be greater or equal to ${e.schema.minimumTimestamp}`;case R.DateMaximumTimestamp:return`Expected Date timestamp to be less or equal to ${e.schema.maximumTimestamp}`;case R.DateMultipleOfTimestamp:return`Expected Date timestamp to be a multiple of ${e.schema.multipleOfTimestamp}`;case R.Date:return"Expected Date";case R.Function:return"Expected function";case R.IntegerExclusiveMaximum:return`Expected integer to be less than ${e.schema.exclusiveMaximum}`;case R.IntegerExclusiveMinimum:return`Expected integer to be greater than ${e.schema.exclusiveMinimum}`;case R.IntegerMaximum:return`Expected integer to be less or equal to ${e.schema.maximum}`;case R.IntegerMinimum:return`Expected integer to be greater or equal to ${e.schema.minimum}`;case R.IntegerMultipleOf:return`Expected integer to be a multiple of ${e.schema.multipleOf}`;case R.Integer:return"Expected integer";case R.IntersectUnevaluatedProperties:return"Unexpected property";case R.Intersect:return"Expected all values to match";case R.Iterator:return"Expected Iterator";case R.Literal:return`Expected ${typeof e.schema.const=="string"?`'${e.schema.const}'`:e.schema.const}`;case R.Never:return"Never";case R.Not:return"Value should not match";case R.Null:return"Expected null";case R.NumberExclusiveMaximum:return`Expected number to be less than ${e.schema.exclusiveMaximum}`;case R.NumberExclusiveMinimum:return`Expected number to be greater than ${e.schema.exclusiveMinimum}`;case R.NumberMaximum:return`Expected number to be less or equal to ${e.schema.maximum}`;case R.NumberMinimum:return`Expected number to be greater or equal to ${e.schema.minimum}`;case R.NumberMultipleOf:return`Expected number to be a multiple of ${e.schema.multipleOf}`;case R.Number:return"Expected number";case R.Object:return"Expected object";case R.ObjectAdditionalProperties:return"Unexpected property";case R.ObjectMaxProperties:return`Expected object to have no more than ${e.schema.maxProperties} properties`;case R.ObjectMinProperties:return`Expected object to have at least ${e.schema.minProperties} properties`;case R.ObjectRequiredProperty:return"Expected required property";case R.Promise:return"Expected Promise";case R.RegExp:return"Expected string to match regular expression";case R.StringFormatUnknown:return`Unknown format '${e.schema.format}'`;case R.StringFormat:return`Expected string to match '${e.schema.format}' format`;case R.StringMaxLength:return`Expected string length less or equal to ${e.schema.maxLength}`;case R.StringMinLength:return`Expected string length greater or equal to ${e.schema.minLength}`;case R.StringPattern:return`Expected string to match '${e.schema.pattern}'`;case R.String:return"Expected string";case R.Symbol:return"Expected symbol";case R.TupleLength:return`Expected tuple to have ${e.schema.maxItems||0} elements`;case R.Tuple:return"Expected tuple";case R.Uint8ArrayMaxByteLength:return`Expected byte length less or equal to ${e.schema.maxByteLength}`;case R.Uint8ArrayMinByteLength:return`Expected byte length greater or equal to ${e.schema.minByteLength}`;case R.Uint8Array:return"Expected Uint8Array";case R.Undefined:return"Expected undefined";case R.Union:return"Expected union value";case R.Void:return"Expected void";case R.Kind:return`Expected kind '${e.schema[k]}'`;default:return"Unknown error type"}}var GE=BE;function U8(){return GE}var Zb=class extends ce{constructor(t){super(`Unable to dereference schema with $id '${t.$ref}'`),this.schema=t}};function zE(e,t){let r=t.find(n=>n.$id===e.$ref);if(r===void 0)throw new Zb(e);return Pe(r,t)}function Gt(e,t){return!Ee(e.$id)||t.some(r=>r.$id===e.$id)||t.push(e),t}function Pe(e,t){return e[k]==="This"||e[k]==="Ref"?zE(e,t):e}var Qb=class extends ce{constructor(t){super("Unable to hash value"),this.value=t}},Kr;(function(e){e[e.Undefined=0]="Undefined",e[e.Null=1]="Null",e[e.Boolean=2]="Boolean",e[e.Number=3]="Number",e[e.String=4]="String",e[e.Object=5]="Object",e[e.Array=6]="Array",e[e.Date=7]="Date",e[e.Uint8Array=8]="Uint8Array",e[e.Symbol=9]="Symbol",e[e.BigInt=10]="BigInt"})(Kr||(Kr={}));var Ff=BigInt("14695981039346656037"),[KE,qE]=[BigInt("1099511628211"),BigInt("18446744073709551616")],HE=Array.from({length:256}).map((e,t)=>BigInt(t)),j8=new Float64Array(1),B8=new DataView(j8.buffer),G8=new Uint8Array(j8.buffer);function*YE(e){let t=e===0?1:Math.ceil(Math.floor(Math.log2(e)+1)/8);for(let r=0;r>8*(t-1-r)&255}function WE(e){cr(Kr.Array);for(let t of e)Ef(t)}function XE(e){cr(Kr.Boolean),cr(e?1:0)}function ZE(e){cr(Kr.BigInt),B8.setBigInt64(0,e);for(let t of G8)cr(t)}function QE(e){cr(Kr.Date),Ef(e.getTime())}function JE(e){cr(Kr.Null)}function e$(e){cr(Kr.Number),B8.setFloat64(0,e);for(let t of G8)cr(t)}function t$(e){cr(Kr.Object);for(let t of globalThis.Object.getOwnPropertyNames(e).sort())Ef(t),Ef(e[t])}function r$(e){cr(Kr.String);for(let t=0;t=e.minItems)||we(e.maxItems)&&!(r.length<=e.maxItems))return!1;for(let i of r)if(!zt(e.items,t,i))return!1;if(e.uniqueItems===!0&&!(function(){let i=new Set;for(let a of r){let s=$f(a);if(i.has(s))return!1;i.add(s)}return!0})())return!1;if(!(we(e.contains)||Qe(e.minContains)||Qe(e.maxContains)))return!0;let n=we(e.contains)?e.contains:ge(),o=r.reduce((i,a)=>zt(n,t,a)?i+1:i,0);return!(o===0||Qe(e.minContains)&&oe.maxContains)}function u$(e,t,r){return Qu(r)}function l$(e,t,r){return!(!xn(r)||we(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||we(e.maximum)&&!(r<=e.maximum)||we(e.minimum)&&!(r>=e.minimum)||we(e.multipleOf)&&r%e.multipleOf!==BigInt(0))}function p$(e,t,r){return Yn(r)}function m$(e,t,r){return zt(e.returns,t,r.prototype)}function d$(e,t,r){return!(!ur(r)||we(e.exclusiveMaximumTimestamp)&&!(r.getTime()e.exclusiveMinimumTimestamp)||we(e.maximumTimestamp)&&!(r.getTime()<=e.maximumTimestamp)||we(e.minimumTimestamp)&&!(r.getTime()>=e.minimumTimestamp)||we(e.multipleOfTimestamp)&&r.getTime()%e.multipleOfTimestamp!==0)}function h$(e,t,r){return hi(r)}function y$(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return zt(o,[...t,...n],r)}function x$(e,t,r){return!(!tl(r)||we(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||we(e.maximum)&&!(r<=e.maximum)||we(e.minimum)&&!(r>=e.minimum)||we(e.multipleOf)&&r%e.multipleOf!==0)}function g$(e,t,r){let n=e.allOf.every(o=>zt(o,t,r));if(e.unevaluatedProperties===!1){let o=new RegExp(ys(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a));return n&&i}else if(rt(e.unevaluatedProperties)){let o=new RegExp(ys(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a)||zt(e.unevaluatedProperties,t,r[a]));return n&&i}else return n}function b$(e,t,r){return Ju(r)}function w$(e,t,r){return r===e.const}function S$(e,t,r){return!1}function I$(e,t,r){return!zt(e.not,t,r)}function _$(e,t,r){return Co(r)}function v$(e,t,r){return!(!It.IsNumberLike(r)||we(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||we(e.minimum)&&!(r>=e.minimum)||we(e.maximum)&&!(r<=e.maximum)||we(e.multipleOf)&&r%e.multipleOf!==0)}function T$(e,t,r){if(!It.IsObjectLike(r)||we(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||we(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let n=Object.getOwnPropertyNames(e.properties);for(let o of n){let i=e.properties[o];if(e.required&&e.required.includes(o)){if(!zt(i,t,r[o])||(ma(i)||a$(i))&&!(o in r))return!1}else if(It.IsExactOptionalProperty(r,o)&&!zt(i,t,r[o]))return!1}if(e.additionalProperties===!1){let o=Object.getOwnPropertyNames(r);return e.required&&e.required.length===n.length&&o.length===n.length?!0:o.every(i=>n.includes(i))}else return typeof e.additionalProperties=="object"?Object.getOwnPropertyNames(r).every(i=>n.includes(i)||zt(e.additionalProperties,t,r[i])):!0}function M$(e,t,r){return el(r)}function O$(e,t,r){if(!It.IsRecordLike(r)||we(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||we(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let[n,o]=Object.entries(e.patternProperties)[0],i=new RegExp(n),a=Object.entries(r).every(([u,c])=>i.test(u)?zt(o,t,c):!0),s=typeof e.additionalProperties=="object"?Object.entries(r).every(([u,c])=>i.test(u)?!0:zt(e.additionalProperties,t,c)):!0,f=e.additionalProperties===!1?Object.getOwnPropertyNames(r).every(u=>i.test(u)):!0;return a&&s&&f}function R$(e,t,r){return zt(Pe(e,t),t,r)}function C$(e,t,r){let n=new RegExp(e.source,e.flags);return we(e.minLength)&&!(r.length>=e.minLength)||we(e.maxLength)&&!(r.length<=e.maxLength)?!1:n.test(r)}function A$(e,t,r){return!Ee(r)||we(e.minLength)&&!(r.length>=e.minLength)||we(e.maxLength)&&!(r.length<=e.maxLength)||we(e.pattern)&&!new RegExp(e.pattern).test(r)?!1:we(e.format)?wi.Has(e.format)?wi.Get(e.format)(r):!1:!0}function P$(e,t,r){return Ao(r)}function k$(e,t,r){return Ee(r)&&new RegExp(e.pattern).test(r)}function N$(e,t,r){return zt(Pe(e,t),t,r)}function F$(e,t,r){if(!fe(r)||e.items===void 0&&r.length!==0||r.length!==e.maxItems)return!1;if(!e.items)return!0;for(let n=0;nzt(n,t,r))}function L$(e,t,r){return!(!ns(r)||we(e.maxByteLength)&&!(r.length<=e.maxByteLength)||we(e.minByteLength)&&!(r.length>=e.minByteLength))}function D$(e,t,r){return!0}function V$(e,t,r){return It.IsVoidLike(r)}function U$(e,t,r){return Tn.Has(e[k])?Tn.Get(e[k])(e,r):!1}function zt(e,t,r){let n=we(e.$id)?Gt(e,t):t,o=e;switch(o[k]){case"Any":return s$(o,n,r);case"Argument":return f$(o,n,r);case"Array":return c$(o,n,r);case"AsyncIterator":return u$(o,n,r);case"BigInt":return l$(o,n,r);case"Boolean":return p$(o,n,r);case"Constructor":return m$(o,n,r);case"Date":return d$(o,n,r);case"Function":return h$(o,n,r);case"Import":return y$(o,n,r);case"Integer":return x$(o,n,r);case"Intersect":return g$(o,n,r);case"Iterator":return b$(o,n,r);case"Literal":return w$(o,n,r);case"Never":return S$(o,n,r);case"Not":return I$(o,n,r);case"Null":return _$(o,n,r);case"Number":return v$(o,n,r);case"Object":return T$(o,n,r);case"Promise":return M$(o,n,r);case"Record":return O$(o,n,r);case"Ref":return R$(o,n,r);case"RegExp":return C$(o,n,r);case"String":return A$(o,n,r);case"Symbol":return P$(o,n,r);case"TemplateLiteral":return k$(o,n,r);case"This":return N$(o,n,r);case"Tuple":return F$(o,n,r);case"Undefined":return E$(o,n,r);case"Union":return $$(o,n,r);case"Uint8Array":return L$(o,n,r);case"Unknown":return D$(o,n,r);case"Void":return V$(o,n,r);default:if(!Tn.Has(o[k]))throw new Jb(o);return U$(o,n,r)}}function he(...e){return e.length===3?zt(e[0],e[1],e[2]):zt(e[0],[],e[1])}var R;(function(e){e[e.ArrayContains=0]="ArrayContains",e[e.ArrayMaxContains=1]="ArrayMaxContains",e[e.ArrayMaxItems=2]="ArrayMaxItems",e[e.ArrayMinContains=3]="ArrayMinContains",e[e.ArrayMinItems=4]="ArrayMinItems",e[e.ArrayUniqueItems=5]="ArrayUniqueItems",e[e.Array=6]="Array",e[e.AsyncIterator=7]="AsyncIterator",e[e.BigIntExclusiveMaximum=8]="BigIntExclusiveMaximum",e[e.BigIntExclusiveMinimum=9]="BigIntExclusiveMinimum",e[e.BigIntMaximum=10]="BigIntMaximum",e[e.BigIntMinimum=11]="BigIntMinimum",e[e.BigIntMultipleOf=12]="BigIntMultipleOf",e[e.BigInt=13]="BigInt",e[e.Boolean=14]="Boolean",e[e.DateExclusiveMaximumTimestamp=15]="DateExclusiveMaximumTimestamp",e[e.DateExclusiveMinimumTimestamp=16]="DateExclusiveMinimumTimestamp",e[e.DateMaximumTimestamp=17]="DateMaximumTimestamp",e[e.DateMinimumTimestamp=18]="DateMinimumTimestamp",e[e.DateMultipleOfTimestamp=19]="DateMultipleOfTimestamp",e[e.Date=20]="Date",e[e.Function=21]="Function",e[e.IntegerExclusiveMaximum=22]="IntegerExclusiveMaximum",e[e.IntegerExclusiveMinimum=23]="IntegerExclusiveMinimum",e[e.IntegerMaximum=24]="IntegerMaximum",e[e.IntegerMinimum=25]="IntegerMinimum",e[e.IntegerMultipleOf=26]="IntegerMultipleOf",e[e.Integer=27]="Integer",e[e.IntersectUnevaluatedProperties=28]="IntersectUnevaluatedProperties",e[e.Intersect=29]="Intersect",e[e.Iterator=30]="Iterator",e[e.Kind=31]="Kind",e[e.Literal=32]="Literal",e[e.Never=33]="Never",e[e.Not=34]="Not",e[e.Null=35]="Null",e[e.NumberExclusiveMaximum=36]="NumberExclusiveMaximum",e[e.NumberExclusiveMinimum=37]="NumberExclusiveMinimum",e[e.NumberMaximum=38]="NumberMaximum",e[e.NumberMinimum=39]="NumberMinimum",e[e.NumberMultipleOf=40]="NumberMultipleOf",e[e.Number=41]="Number",e[e.ObjectAdditionalProperties=42]="ObjectAdditionalProperties",e[e.ObjectMaxProperties=43]="ObjectMaxProperties",e[e.ObjectMinProperties=44]="ObjectMinProperties",e[e.ObjectRequiredProperty=45]="ObjectRequiredProperty",e[e.Object=46]="Object",e[e.Promise=47]="Promise",e[e.RegExp=48]="RegExp",e[e.StringFormatUnknown=49]="StringFormatUnknown",e[e.StringFormat=50]="StringFormat",e[e.StringMaxLength=51]="StringMaxLength",e[e.StringMinLength=52]="StringMinLength",e[e.StringPattern=53]="StringPattern",e[e.String=54]="String",e[e.Symbol=55]="Symbol",e[e.TupleLength=56]="TupleLength",e[e.Tuple=57]="Tuple",e[e.Uint8ArrayMaxByteLength=58]="Uint8ArrayMaxByteLength",e[e.Uint8ArrayMinByteLength=59]="Uint8ArrayMinByteLength",e[e.Uint8Array=60]="Uint8Array",e[e.Undefined=61]="Undefined",e[e.Union=62]="Union",e[e.Void=63]="Void"})(R||(R={}));var e1=class extends ce{constructor(t){super("Unknown type"),this.schema=t}};function pi(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Se(e){return e!==void 0}var ra=class{constructor(t){this.iterator=t}[Symbol.iterator](){return this.iterator}First(){let t=this.iterator.next();return t.done?void 0:t.value}};function q(e,t,r,n,o=[]){return{type:e,schema:t,path:r,value:n,message:U8()({errorType:e,path:r,schema:t,value:n,errors:o}),errors:o}}function*j$(e,t,r,n){}function*B$(e,t,r,n){}function*G$(e,t,r,n){if(!fe(n))return yield q(R.Array,e,r,n);Se(e.minItems)&&!(n.length>=e.minItems)&&(yield q(R.ArrayMinItems,e,r,n)),Se(e.maxItems)&&!(n.length<=e.maxItems)&&(yield q(R.ArrayMaxItems,e,r,n));for(let a=0;aKt(o,t,`${r}${f}`,s).next().done===!0?a+1:a,0);i===0&&(yield q(R.ArrayContains,e,r,n)),Qe(e.minContains)&&ie.maxContains&&(yield q(R.ArrayMaxContains,e,r,n))}function*z$(e,t,r,n){Qu(n)||(yield q(R.AsyncIterator,e,r,n))}function*K$(e,t,r,n){if(!xn(n))return yield q(R.BigInt,e,r,n);Se(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield q(R.BigIntExclusiveMinimum,e,r,n)),Se(e.maximum)&&!(n<=e.maximum)&&(yield q(R.BigIntMaximum,e,r,n)),Se(e.minimum)&&!(n>=e.minimum)&&(yield q(R.BigIntMinimum,e,r,n)),Se(e.multipleOf)&&n%e.multipleOf!==BigInt(0)&&(yield q(R.BigIntMultipleOf,e,r,n))}function*q$(e,t,r,n){Yn(n)||(yield q(R.Boolean,e,r,n))}function*H$(e,t,r,n){yield*Kt(e.returns,t,r,n.prototype)}function*Y$(e,t,r,n){if(!ur(n))return yield q(R.Date,e,r,n);Se(e.exclusiveMaximumTimestamp)&&!(n.getTime()e.exclusiveMinimumTimestamp)&&(yield q(R.DateExclusiveMinimumTimestamp,e,r,n)),Se(e.maximumTimestamp)&&!(n.getTime()<=e.maximumTimestamp)&&(yield q(R.DateMaximumTimestamp,e,r,n)),Se(e.minimumTimestamp)&&!(n.getTime()>=e.minimumTimestamp)&&(yield q(R.DateMinimumTimestamp,e,r,n)),Se(e.multipleOfTimestamp)&&n.getTime()%e.multipleOfTimestamp!==0&&(yield q(R.DateMultipleOfTimestamp,e,r,n))}function*W$(e,t,r,n){hi(n)||(yield q(R.Function,e,r,n))}function*X$(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref];yield*Kt(i,[...t,...o],r,n)}function*Z$(e,t,r,n){if(!tl(n))return yield q(R.Integer,e,r,n);Se(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield q(R.IntegerExclusiveMinimum,e,r,n)),Se(e.maximum)&&!(n<=e.maximum)&&(yield q(R.IntegerMaximum,e,r,n)),Se(e.minimum)&&!(n>=e.minimum)&&(yield q(R.IntegerMinimum,e,r,n)),Se(e.multipleOf)&&n%e.multipleOf!==0&&(yield q(R.IntegerMultipleOf,e,r,n))}function*Q$(e,t,r,n){let o=!1;for(let i of e.allOf)for(let a of Kt(i,t,r,n))o=!0,yield a;if(o)return yield q(R.Intersect,e,r,n);if(e.unevaluatedProperties===!1){let i=new RegExp(ys(e));for(let a of Object.getOwnPropertyNames(n))i.test(a)||(yield q(R.IntersectUnevaluatedProperties,e,`${r}/${a}`,n))}if(typeof e.unevaluatedProperties=="object"){let i=new RegExp(ys(e));for(let a of Object.getOwnPropertyNames(n))if(!i.test(a)){let s=Kt(e.unevaluatedProperties,t,`${r}/${a}`,n[a]).next();s.done||(yield s.value)}}}function*J$(e,t,r,n){Ju(n)||(yield q(R.Iterator,e,r,n))}function*eL(e,t,r,n){n!==e.const&&(yield q(R.Literal,e,r,n))}function*tL(e,t,r,n){yield q(R.Never,e,r,n)}function*rL(e,t,r,n){Kt(e.not,t,r,n).next().done===!0&&(yield q(R.Not,e,r,n))}function*nL(e,t,r,n){Co(n)||(yield q(R.Null,e,r,n))}function*oL(e,t,r,n){if(!It.IsNumberLike(n))return yield q(R.Number,e,r,n);Se(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield q(R.NumberExclusiveMinimum,e,r,n)),Se(e.maximum)&&!(n<=e.maximum)&&(yield q(R.NumberMaximum,e,r,n)),Se(e.minimum)&&!(n>=e.minimum)&&(yield q(R.NumberMinimum,e,r,n)),Se(e.multipleOf)&&n%e.multipleOf!==0&&(yield q(R.NumberMultipleOf,e,r,n))}function*iL(e,t,r,n){if(!It.IsObjectLike(n))return yield q(R.Object,e,r,n);Se(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield q(R.ObjectMinProperties,e,r,n)),Se(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield q(R.ObjectMaxProperties,e,r,n));let o=Array.isArray(e.required)?e.required:[],i=Object.getOwnPropertyNames(e.properties),a=Object.getOwnPropertyNames(n);for(let s of o)a.includes(s)||(yield q(R.ObjectRequiredProperty,e.properties[s],`${r}/${pi(s)}`,void 0));if(e.additionalProperties===!1)for(let s of a)i.includes(s)||(yield q(R.ObjectAdditionalProperties,e,`${r}/${pi(s)}`,n[s]));if(typeof e.additionalProperties=="object")for(let s of a)i.includes(s)||(yield*Kt(e.additionalProperties,t,`${r}/${pi(s)}`,n[s]));for(let s of i){let f=e.properties[s];e.required&&e.required.includes(s)?(yield*Kt(f,t,`${r}/${pi(s)}`,n[s]),ma(e)&&!(s in n)&&(yield q(R.ObjectRequiredProperty,f,`${r}/${pi(s)}`,void 0))):It.IsExactOptionalProperty(n,s)&&(yield*Kt(f,t,`${r}/${pi(s)}`,n[s]))}}function*aL(e,t,r,n){el(n)||(yield q(R.Promise,e,r,n))}function*sL(e,t,r,n){if(!It.IsRecordLike(n))return yield q(R.Object,e,r,n);Se(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield q(R.ObjectMinProperties,e,r,n)),Se(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield q(R.ObjectMaxProperties,e,r,n));let[o,i]=Object.entries(e.patternProperties)[0],a=new RegExp(o);for(let[s,f]of Object.entries(n))a.test(s)&&(yield*Kt(i,t,`${r}/${pi(s)}`,f));if(typeof e.additionalProperties=="object")for(let[s,f]of Object.entries(n))a.test(s)||(yield*Kt(e.additionalProperties,t,`${r}/${pi(s)}`,f));if(e.additionalProperties===!1){for(let[s,f]of Object.entries(n))if(!a.test(s))return yield q(R.ObjectAdditionalProperties,e,`${r}/${pi(s)}`,f)}}function*fL(e,t,r,n){yield*Kt(Pe(e,t),t,r,n)}function*cL(e,t,r,n){if(!Ee(n))return yield q(R.String,e,r,n);if(Se(e.minLength)&&!(n.length>=e.minLength)&&(yield q(R.StringMinLength,e,r,n)),Se(e.maxLength)&&!(n.length<=e.maxLength)&&(yield q(R.StringMaxLength,e,r,n)),!new RegExp(e.source,e.flags).test(n))return yield q(R.RegExp,e,r,n)}function*uL(e,t,r,n){if(!Ee(n))return yield q(R.String,e,r,n);Se(e.minLength)&&!(n.length>=e.minLength)&&(yield q(R.StringMinLength,e,r,n)),Se(e.maxLength)&&!(n.length<=e.maxLength)&&(yield q(R.StringMaxLength,e,r,n)),Ee(e.pattern)&&(new RegExp(e.pattern).test(n)||(yield q(R.StringPattern,e,r,n))),Ee(e.format)&&(wi.Has(e.format)?wi.Get(e.format)(n)||(yield q(R.StringFormat,e,r,n)):yield q(R.StringFormatUnknown,e,r,n))}function*lL(e,t,r,n){Ao(n)||(yield q(R.Symbol,e,r,n))}function*pL(e,t,r,n){if(!Ee(n))return yield q(R.String,e,r,n);new RegExp(e.pattern).test(n)||(yield q(R.StringPattern,e,r,n))}function*mL(e,t,r,n){yield*Kt(Pe(e,t),t,r,n)}function*dL(e,t,r,n){if(!fe(n))return yield q(R.Tuple,e,r,n);if(e.items===void 0&&n.length!==0)return yield q(R.TupleLength,e,r,n);if(n.length!==e.maxItems)return yield q(R.TupleLength,e,r,n);if(e.items)for(let o=0;onew ra(Kt(i,t,r,n)));yield q(R.Union,e,r,n,o)}function*xL(e,t,r,n){if(!ns(n))return yield q(R.Uint8Array,e,r,n);Se(e.maxByteLength)&&!(n.length<=e.maxByteLength)&&(yield q(R.Uint8ArrayMaxByteLength,e,r,n)),Se(e.minByteLength)&&!(n.length>=e.minByteLength)&&(yield q(R.Uint8ArrayMinByteLength,e,r,n))}function*gL(e,t,r,n){}function*bL(e,t,r,n){It.IsVoidLike(n)||(yield q(R.Void,e,r,n))}function*wL(e,t,r,n){Tn.Get(e[k])(e,n)||(yield q(R.Kind,e,r,n))}function*Kt(e,t,r,n){let o=Se(e.$id)?[...t,e]:t,i=e;switch(i[k]){case"Any":return yield*j$(i,o,r,n);case"Argument":return yield*B$(i,o,r,n);case"Array":return yield*G$(i,o,r,n);case"AsyncIterator":return yield*z$(i,o,r,n);case"BigInt":return yield*K$(i,o,r,n);case"Boolean":return yield*q$(i,o,r,n);case"Constructor":return yield*H$(i,o,r,n);case"Date":return yield*Y$(i,o,r,n);case"Function":return yield*W$(i,o,r,n);case"Import":return yield*X$(i,o,r,n);case"Integer":return yield*Z$(i,o,r,n);case"Intersect":return yield*Q$(i,o,r,n);case"Iterator":return yield*J$(i,o,r,n);case"Literal":return yield*eL(i,o,r,n);case"Never":return yield*tL(i,o,r,n);case"Not":return yield*rL(i,o,r,n);case"Null":return yield*nL(i,o,r,n);case"Number":return yield*oL(i,o,r,n);case"Object":return yield*iL(i,o,r,n);case"Promise":return yield*aL(i,o,r,n);case"Record":return yield*sL(i,o,r,n);case"Ref":return yield*fL(i,o,r,n);case"RegExp":return yield*cL(i,o,r,n);case"String":return yield*uL(i,o,r,n);case"Symbol":return yield*lL(i,o,r,n);case"TemplateLiteral":return yield*pL(i,o,r,n);case"This":return yield*mL(i,o,r,n);case"Tuple":return yield*dL(i,o,r,n);case"Undefined":return yield*hL(i,o,r,n);case"Union":return yield*yL(i,o,r,n);case"Uint8Array":return yield*xL(i,o,r,n);case"Unknown":return yield*gL(i,o,r,n);case"Void":return yield*bL(i,o,r,n);default:if(!Tn.Has(i[k]))throw new e1(e);return yield*wL(i,o,r,n)}}function na(...e){let t=e.length===3?Kt(e[0],e[1],"",e[2]):Kt(e[0],[],"",e[1]);return new ra(t)}var SL=function(e,t,r,n,o){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?o.call(e,r):o?o.value=r:t.set(e,r),r},K8=function(e,t,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(e):n?n.value:t.get(e)},t1,ih,q8,r1=class extends ce{constructor(t){let r=t.First();super(r===void 0?"Invalid Value":r.message),t1.add(this),ih.set(this,void 0),SL(this,ih,t,"f"),this.error=r}Errors(){return new ra(K8(this,t1,"m",q8).call(this))}};ih=new WeakMap,t1=new WeakSet,q8=function*(){this.error&&(yield this.error),yield*K8(this,ih,"f")};function z8(e,t,r){if(!he(e,t,r))throw new r1(na(e,t,r))}function ah(...e){return e.length===3?z8(e[0],e[1],e[2]):z8(e[0],[],e[1])}function IL(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Me(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Me(e[r]);return t}function _L(e){return e.map(t=>Me(t))}function vL(e){return e.slice()}function TL(e){return new Map(Me([...e.entries()]))}function ML(e){return new Set(Me([...e.entries()]))}function OL(e){return new Date(e.toISOString())}function Me(e){if(fe(e))return _L(e);if(ur(e))return OL(e);if(Yr(e))return vL(e);if(p1(e))return TL(e);if(m1(e))return ML(e);if(me(e))return IL(e);if(Fr(e))return e;throw new Error("ValueClone: Unable to clone value")}var qr=class extends ce{constructor(t,r){super(r),this.schema=t}};function Oe(e){return hi(e)?e():Me(e)}function RL(e,t){return se(e,"default")?Oe(e.default):{}}function CL(e,t){return{}}function AL(e,t){if(e.uniqueItems===!0&&!se(e,"default"))throw new qr(e,"Array with the uniqueItems constraint requires a default value");if("contains"in e&&!se(e,"default"))throw new qr(e,"Array with the contains constraint requires a default value");return"default"in e?Oe(e.default):e.minItems!==void 0?Array.from({length:e.minItems}).map(r=>Hr(e.items,t)):[]}function PL(e,t){return se(e,"default")?Oe(e.default):(async function*(){})()}function kL(e,t){return se(e,"default")?Oe(e.default):BigInt(0)}function NL(e,t){return se(e,"default")?Oe(e.default):!1}function FL(e,t){if(se(e,"default"))return Oe(e.default);{let r=Hr(e.returns,t);return typeof r=="object"&&!Array.isArray(r)?class{constructor(){for(let[n,o]of Object.entries(r)){let i=this;i[n]=o}}}:class{}}}function EL(e,t){return se(e,"default")?Oe(e.default):e.minimumTimestamp!==void 0?new Date(e.minimumTimestamp):new Date}function $L(e,t){return se(e,"default")?Oe(e.default):()=>Hr(e.returns,t)}function LL(e,t){let r=globalThis.Object.values(e.$defs),n=e.$defs[e.$ref];return Hr(n,[...t,...r])}function DL(e,t){return se(e,"default")?Oe(e.default):e.minimum!==void 0?e.minimum:0}function VL(e,t){if(se(e,"default"))return Oe(e.default);{let r=e.allOf.reduce((n,o)=>{let i=Hr(o,t);return typeof i=="object"?{...n,...i}:i},{});if(!he(e,t,r))throw new qr(e,"Intersect produced invalid value. Consider using a default value.");return r}}function UL(e,t){return se(e,"default")?Oe(e.default):(function*(){})()}function jL(e,t){return se(e,"default")?Oe(e.default):e.const}function BL(e,t){if(se(e,"default"))return Oe(e.default);throw new qr(e,"Never types cannot be created. Consider using a default value.")}function GL(e,t){if(se(e,"default"))return Oe(e.default);throw new qr(e,"Not types must have a default value")}function zL(e,t){return se(e,"default")?Oe(e.default):null}function KL(e,t){return se(e,"default")?Oe(e.default):e.minimum!==void 0?e.minimum:0}function qL(e,t){if(se(e,"default"))return Oe(e.default);{let r=new Set(e.required),n={};for(let[o,i]of Object.entries(e.properties))r.has(o)&&(n[o]=Hr(i,t));return n}}function HL(e,t){return se(e,"default")?Oe(e.default):Promise.resolve(Hr(e.item,t))}function YL(e,t){return se(e,"default")?Oe(e.default):{}}function WL(e,t){return se(e,"default")?Oe(e.default):Hr(Pe(e,t),t)}function XL(e,t){if(se(e,"default"))return Oe(e.default);throw new qr(e,"RegExp types cannot be created. Consider using a default value.")}function ZL(e,t){if(e.pattern!==void 0){if(se(e,"default"))return Oe(e.default);throw new qr(e,"String types with patterns must specify a default value")}else if(e.format!==void 0){if(se(e,"default"))return Oe(e.default);throw new qr(e,"String types with formats must specify a default value")}else return se(e,"default")?Oe(e.default):e.minLength!==void 0?Array.from({length:e.minLength}).map(()=>" ").join(""):""}function QL(e,t){return se(e,"default")?Oe(e.default):"value"in e?Symbol.for(e.value):Symbol()}function JL(e,t){if(se(e,"default"))return Oe(e.default);if(!il(e))throw new qr(e,"Can only create template literals that produce a finite variants. Consider using a default value.");return ps(e)[0]}function eD(e,t){if(H8++>fD)throw new qr(e,"Cannot create recursive type as it appears possibly infinite. Consider using a default.");return se(e,"default")?Oe(e.default):Hr(Pe(e,t),t)}function tD(e,t){return se(e,"default")?Oe(e.default):e.items===void 0?[]:Array.from({length:e.minItems}).map((r,n)=>Hr(e.items[n],t))}function rD(e,t){if(se(e,"default"))return Oe(e.default)}function nD(e,t){if(se(e,"default"))return Oe(e.default);if(e.anyOf.length===0)throw new Error("ValueCreate.Union: Cannot create Union with zero variants");return Hr(e.anyOf[0],t)}function oD(e,t){return se(e,"default")?Oe(e.default):e.minByteLength!==void 0?new Uint8Array(e.minByteLength):new Uint8Array(0)}function iD(e,t){return se(e,"default")?Oe(e.default):{}}function aD(e,t){if(se(e,"default"))return Oe(e.default)}function sD(e,t){if(se(e,"default"))return Oe(e.default);throw new Error("User defined types must specify a default value")}function Hr(e,t){let r=Gt(e,t),n=e;switch(n[k]){case"Any":return RL(n,r);case"Argument":return CL(n,r);case"Array":return AL(n,r);case"AsyncIterator":return PL(n,r);case"BigInt":return kL(n,r);case"Boolean":return NL(n,r);case"Constructor":return FL(n,r);case"Date":return EL(n,r);case"Function":return $L(n,r);case"Import":return LL(n,r);case"Integer":return DL(n,r);case"Intersect":return VL(n,r);case"Iterator":return UL(n,r);case"Literal":return jL(n,r);case"Never":return BL(n,r);case"Not":return GL(n,r);case"Null":return zL(n,r);case"Number":return KL(n,r);case"Object":return qL(n,r);case"Promise":return HL(n,r);case"Record":return YL(n,r);case"Ref":return WL(n,r);case"RegExp":return XL(n,r);case"String":return ZL(n,r);case"Symbol":return QL(n,r);case"TemplateLiteral":return JL(n,r);case"This":return eD(n,r);case"Tuple":return tD(n,r);case"Undefined":return rD(n,r);case"Union":return nD(n,r);case"Uint8Array":return oD(n,r);case"Unknown":return iD(n,r);case"Void":return aD(n,r);default:if(!Tn.Has(n[k]))throw new qr(n,"Unknown type");return sD(n,r)}}var fD=512,H8=0;function jn(...e){return H8=0,e.length===2?Hr(e[0],e[1]):Hr(e[0],[])}var sh=class extends ce{constructor(t,r){super(r),this.schema=t}};function Y8(e,t,r){if(e[k]==="Object"&&typeof r=="object"&&!Co(r)){let n=e,o=Object.getOwnPropertyNames(r);return Object.entries(n.properties).reduce((a,[s,f])=>{let u=f[k]==="Literal"&&f.const===r[s]?100:0,c=he(f,t,r[s])?10:0,m=o.includes(s)?1:0;return a+(u+c+m)},0)}else if(e[k]==="Union"){let o=e.anyOf.map(i=>Pe(i,t)).map(i=>Y8(i,t,r));return Math.max(...o)}else return he(e,t,r)?1:0}function cD(e,t,r){let n=e.anyOf.map(a=>Pe(a,t)),[o,i]=[n[0],0];for(let a of n){let s=Y8(a,t,r);s>i&&(o=a,i=s)}return o}function uD(e,t,r){if("default"in e)return typeof r=="function"?e.default:Me(e.default);{let n=cD(e,t,r);return Ku(n,t,r)}}function lD(e,t,r){return he(e,t,r)?Me(r):jn(e,t)}function pD(e,t,r){return he(e,t,r)?r:jn(e,t)}function mD(e,t,r){if(he(e,t,r))return Me(r);let n=fe(r)?Me(r):jn(e,t),o=Qe(e.minItems)&&n.lengthnull)]:n,a=(Qe(e.maxItems)&&o.length>e.maxItems?o.slice(0,e.maxItems):o).map(f=>Bn(e.items,t,f));if(e.uniqueItems!==!0)return a;let s=[...new Set(a)];if(!he(e,t,s))throw new sh(e,"Array cast produced invalid data due to uniqueItems constraint");return s}function dD(e,t,r){if(he(e,t,r))return jn(e,t);let n=new Set(e.returns.required||[]),o=function(){};for(let[i,a]of Object.entries(e.returns.properties))!n.has(i)&&r.prototype[i]===void 0||(o.prototype[i]=Bn(a,t,r.prototype[i]));return o}function hD(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return Bn(o,[...t,...n],r)}function W8(e,t){return me(e)&&!me(t)||!me(e)&&me(t)?e:!me(e)||!me(t)?t:globalThis.Object.getOwnPropertyNames(e).reduce((r,n)=>{let o=n in t?W8(e[n],t[n]):e[n];return{...r,[n]:o}},{})}function yD(e,t,r){if(he(e,t,r))return r;let n=jn(e,t),o=W8(n,r);return he(e,t,o)?o:n}function xD(e,t,r){throw new sh(e,"Never types cannot be cast")}function gD(e,t,r){if(he(e,t,r))return r;if(r===null||typeof r!="object")return jn(e,t);let n=new Set(e.required||[]),o={};for(let[i,a]of Object.entries(e.properties))!n.has(i)&&r[i]===void 0||(o[i]=Bn(a,t,r[i]));if(typeof e.additionalProperties=="object"){let i=Object.getOwnPropertyNames(e.properties);for(let a of Object.getOwnPropertyNames(r))i.includes(a)||(o[a]=Bn(e.additionalProperties,t,r[a]))}return o}function bD(e,t,r){if(he(e,t,r))return Me(r);if(r===null||typeof r!="object"||Array.isArray(r)||r instanceof Date)return jn(e,t);let n=Object.getOwnPropertyNames(e.patternProperties)[0],o=e.patternProperties[n],i={};for(let[a,s]of Object.entries(r))i[a]=Bn(o,t,s);return i}function wD(e,t,r){return Bn(Pe(e,t),t,r)}function SD(e,t,r){return Bn(Pe(e,t),t,r)}function ID(e,t,r){return he(e,t,r)?Me(r):fe(r)?e.items===void 0?[]:e.items.map((n,o)=>Bn(n,t,r[o])):jn(e,t)}function _D(e,t,r){return he(e,t,r)?Me(r):uD(e,t,r)}function Bn(e,t,r){let n=Ee(e.$id)?Gt(e,t):t,o=e;switch(e[k]){case"Array":return mD(o,n,r);case"Constructor":return dD(o,n,r);case"Import":return hD(o,n,r);case"Intersect":return yD(o,n,r);case"Never":return xD(o,n,r);case"Object":return gD(o,n,r);case"Record":return bD(o,n,r);case"Ref":return wD(o,n,r);case"This":return SD(o,n,r);case"Tuple":return ID(o,n,r);case"Union":return _D(o,n,r);case"Date":case"Symbol":case"Uint8Array":return lD(e,t,r);default:return pD(o,n,r)}}function Ku(...e){return e.length===3?Bn(e[0],e[1],e[2]):Bn(e[0],[],e[1])}function vD(e){return xi(e)&&e[k]!=="Unsafe"}function TD(e,t,r){return fe(r)?r.map(n=>kr(e.items,t,n)):r}function MD(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return kr(o,[...t,...n],r)}function OD(e,t,r){let n=e.unevaluatedProperties,i=e.allOf.map(s=>kr(s,t,Me(r))).reduce((s,f)=>me(f)?{...s,...f}:f,{});if(!me(r)||!me(i)||!xi(n))return i;let a=Ir(e);for(let s of Object.getOwnPropertyNames(r))a.includes(s)||he(n,t,r[s])&&(i[s]=kr(n,t,r[s]));return i}function RD(e,t,r){if(!me(r)||fe(r))return r;let n=e.additionalProperties;for(let o of Object.getOwnPropertyNames(r)){if(se(e.properties,o)){r[o]=kr(e.properties[o],t,r[o]);continue}if(xi(n)&&he(n,t,r[o])){r[o]=kr(n,t,r[o]);continue}delete r[o]}return r}function CD(e,t,r){if(!me(r))return r;let n=e.additionalProperties,o=Object.getOwnPropertyNames(r),[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let f of o){if(s.test(f)){r[f]=kr(a,t,r[f]);continue}if(xi(n)&&he(n,t,r[f])){r[f]=kr(n,t,r[f]);continue}delete r[f]}return r}function AD(e,t,r){return kr(Pe(e,t),t,r)}function PD(e,t,r){return kr(Pe(e,t),t,r)}function kD(e,t,r){if(!fe(r))return r;if(Ze(e.items))return[];let n=Math.min(r.length,e.items.length);for(let o=0;on?r.slice(0,n):r}function ND(e,t,r){for(let n of e.anyOf)if(vD(n)&&he(n,t,r))return kr(n,t,r);return r}function kr(e,t,r){let n=Ee(e.$id)?Gt(e,t):t,o=e;switch(o[k]){case"Array":return TD(o,n,r);case"Import":return MD(o,n,r);case"Intersect":return OD(o,n,r);case"Object":return RD(o,n,r);case"Record":return CD(o,n,r);case"Ref":return AD(o,n,r);case"This":return PD(o,n,r);case"Tuple":return kD(o,n,r);case"Union":return ND(o,n,r);default:return r}}function fh(...e){return e.length===3?kr(e[0],e[1],e[2]):kr(e[0],[],e[1])}function ch(e){return Ee(e)&&!isNaN(e)&&!isNaN(parseFloat(e))}function FD(e){return xn(e)||Yn(e)||Qe(e)}function qu(e){return e===!0||Qe(e)&&e===1||xn(e)&&e===BigInt("1")||Ee(e)&&(e.toLowerCase()==="true"||e==="1")}function Hu(e){return e===!1||Qe(e)&&(e===0||Object.is(e,-0))||xn(e)&&e===BigInt("0")||Ee(e)&&(e.toLowerCase()==="false"||e==="0"||e==="-0")}function ED(e){return Ee(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function $D(e){return Ee(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function LD(e){return Ee(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function DD(e){return Ee(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function VD(e){return Ee(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(e)}function UD(e,t){let r=Z8(e);return r===t?r:e}function jD(e,t){let r=Q8(e);return r===t?r:e}function BD(e,t){let r=X8(e);return r===t?r:e}function GD(e,t){return Ee(e.const)?UD(t,e.const):Qe(e.const)?jD(t,e.const):Yn(e.const)?BD(t,e.const):t}function X8(e){return qu(e)?!0:Hu(e)?!1:e}function zD(e){let t=r=>r.split(".")[0];return ch(e)?BigInt(t(e)):Qe(e)?BigInt(Math.trunc(e)):Hu(e)?BigInt(0):qu(e)?BigInt(1):e}function Z8(e){return Ao(e)&&e.description!==void 0?e.description.toString():FD(e)?e.toString():e}function Q8(e){return ch(e)?parseFloat(e):qu(e)?1:Hu(e)?0:e}function KD(e){return ch(e)?parseInt(e):Qe(e)?Math.trunc(e):qu(e)?1:Hu(e)?0:e}function qD(e){return Ee(e)&&e.toLowerCase()==="null"?null:e}function HD(e){return Ee(e)&&e==="undefined"?void 0:e}function YD(e){return ur(e)?e:Qe(e)?new Date(e):qu(e)?new Date(1):Hu(e)?new Date(0):ch(e)?new Date(parseInt(e)):$D(e)?new Date(`1970-01-01T${e}.000Z`):ED(e)?new Date(`1970-01-01T${e}`):DD(e)?new Date(`${e}.000Z`):LD(e)?new Date(e):VD(e)?new Date(`${e}T00:00:00.000Z`):e}function WD(e,t,r){return(fe(r)?r:[r]).map(o=>Gn(e.items,t,o))}function XD(e,t,r){return zD(r)}function ZD(e,t,r){return X8(r)}function QD(e,t,r){return YD(r)}function JD(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return Gn(o,[...t,...n],r)}function eV(e,t,r){return KD(r)}function tV(e,t,r){return e.allOf.reduce((n,o)=>Gn(o,t,n),r)}function rV(e,t,r){return GD(e,r)}function nV(e,t,r){return qD(r)}function oV(e,t,r){return Q8(r)}function iV(e,t,r){if(!me(r)||fe(r))return r;for(let n of Object.getOwnPropertyNames(e.properties))se(r,n)&&(r[n]=Gn(e.properties[n],t,r[n]));return r}function aV(e,t,r){if(!(me(r)&&!fe(r)))return r;let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=e.patternProperties[o];for(let[a,s]of Object.entries(r))r[a]=Gn(i,t,s);return r}function sV(e,t,r){return Gn(Pe(e,t),t,r)}function fV(e,t,r){return Z8(r)}function cV(e,t,r){return Ee(r)||Qe(r)?Symbol(r):r}function uV(e,t,r){return Gn(Pe(e,t),t,r)}function lV(e,t,r){return fe(r)&&!Ze(e.items)?r.map((o,i)=>izn(e.items,t,`${r}/${i}`,o))):at(e,r,n)}function hV(e,t,r,n){if(!me(n)||Fr(n))return at(e,r,n);let o=ul(e),i=o.map(c=>c[0]),a={...n};for(let[c,m]of o)c in a&&(a[c]=zn(m,t,`${r}/${c}`,a[c]));if(!Re(e.unevaluatedProperties))return at(e,r,a);let s=Object.getOwnPropertyNames(a),f=e.unevaluatedProperties,u={...a};for(let c of s)i.includes(c)||(u[c]=at(f,`${r}/${c}`,u[c]));return at(e,r,u)}function yV(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=zn(i,[...t,...o],r,n);return at(e,r,a)}function xV(e,t,r,n){return at(e,r,zn(e.not,t,r,n))}function gV(e,t,r,n){if(!me(n))return at(e,r,n);let o=Ir(e),i={...n};for(let u of o)se(i,u)&&(Ze(i[u])&&(!No(e.properties[u])||It.IsExactOptionalProperty(i,u))||(i[u]=zn(e.properties[u],t,`${r}/${u}`,i[u])));if(!rt(e.additionalProperties))return at(e,r,i);let a=Object.getOwnPropertyNames(i),s=e.additionalProperties,f={...i};for(let u of a)o.includes(u)||(f[u]=at(s,`${r}/${u}`,f[u]));return at(e,r,f)}function bV(e,t,r,n){if(!me(n))return at(e,r,n);let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=new RegExp(o),a={...n};for(let c of Object.getOwnPropertyNames(n))i.test(c)&&(a[c]=zn(e.patternProperties[o],t,`${r}/${c}`,a[c]));if(!rt(e.additionalProperties))return at(e,r,a);let s=Object.getOwnPropertyNames(a),f=e.additionalProperties,u={...a};for(let c of s)i.test(c)||(u[c]=at(f,`${r}/${c}`,u[c]));return at(e,r,u)}function wV(e,t,r,n){let o=Pe(e,t);return at(e,r,zn(o,t,r,n))}function SV(e,t,r,n){let o=Pe(e,t);return at(e,r,zn(o,t,r,n))}function IV(e,t,r,n){return fe(n)&&fe(e.items)?at(e,r,e.items.map((o,i)=>zn(o,t,`${r}/${i}`,n[i]))):at(e,r,n)}function _V(e,t,r,n){for(let o of e.anyOf){if(!he(o,t,n))continue;let i=zn(o,t,r,n);return at(e,r,i)}return at(e,r,n)}function zn(e,t,r,n){let o=Gt(e,t),i=e;switch(e[k]){case"Array":return dV(i,o,r,n);case"Import":return yV(i,o,r,n);case"Intersect":return hV(i,o,r,n);case"Not":return xV(i,o,r,n);case"Object":return gV(i,o,r,n);case"Record":return bV(i,o,r,n);case"Ref":return wV(i,o,r,n);case"Symbol":return at(i,r,n);case"This":return SV(i,o,r,n);case"Tuple":return IV(i,o,r,n);case"Union":return _V(i,o,r,n);default:return at(i,r,n)}}function ph(e,t,r){return zn(e,t,"",r)}var mh=class extends ce{constructor(t,r,n){super("The encoded value does not match the expected schema"),this.schema=t,this.value=r,this.error=n}},o1=class extends ce{constructor(t,r,n,o){super(`${o instanceof Error?o.message:"Unknown error"}`),this.schema=t,this.path=r,this.value=n,this.error=o}};function er(e,t,r){try{return Re(e)?e[tt].Encode(r):r}catch(n){throw new o1(e,t,r,n)}}function vV(e,t,r,n){let o=er(e,r,n);return fe(o)?o.map((i,a)=>Kn(e.items,t,`${r}/${a}`,i)):o}function TV(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=er(e,r,n);return Kn(i,[...t,...o],r,a)}function MV(e,t,r,n){let o=er(e,r,n);if(!me(n)||Fr(n))return o;let i=ul(e),a=i.map(m=>m[0]),s={...o};for(let[m,l]of i)m in s&&(s[m]=Kn(l,t,`${r}/${m}`,s[m]));if(!Re(e.unevaluatedProperties))return s;let f=Object.getOwnPropertyNames(s),u=e.unevaluatedProperties,c={...s};for(let m of f)a.includes(m)||(c[m]=er(u,`${r}/${m}`,c[m]));return c}function OV(e,t,r,n){return er(e.not,r,er(e,r,n))}function RV(e,t,r,n){let o=er(e,r,n);if(!me(o))return o;let i=Ir(e),a={...o};for(let c of i)se(a,c)&&(Ze(a[c])&&(!No(e.properties[c])||It.IsExactOptionalProperty(a,c))||(a[c]=Kn(e.properties[c],t,`${r}/${c}`,a[c])));if(!rt(e.additionalProperties))return a;let s=Object.getOwnPropertyNames(a),f=e.additionalProperties,u={...a};for(let c of s)i.includes(c)||(u[c]=er(f,`${r}/${c}`,u[c]));return u}function CV(e,t,r,n){let o=er(e,r,n);if(!me(n))return o;let i=Object.getOwnPropertyNames(e.patternProperties)[0],a=new RegExp(i),s={...o};for(let m of Object.getOwnPropertyNames(n))a.test(m)&&(s[m]=Kn(e.patternProperties[i],t,`${r}/${m}`,s[m]));if(!rt(e.additionalProperties))return s;let f=Object.getOwnPropertyNames(s),u=e.additionalProperties,c={...s};for(let m of f)a.test(m)||(c[m]=er(u,`${r}/${m}`,c[m]));return c}function AV(e,t,r,n){let o=Pe(e,t),i=Kn(o,t,r,n);return er(e,r,i)}function PV(e,t,r,n){let o=Pe(e,t),i=Kn(o,t,r,n);return er(e,r,i)}function kV(e,t,r,n){let o=er(e,r,n);return fe(e.items)?e.items.map((i,a)=>Kn(i,t,`${r}/${a}`,o[a])):[]}function NV(e,t,r,n){for(let o of e.anyOf){if(!he(o,t,n))continue;let i=Kn(o,t,r,n);return er(e,r,i)}for(let o of e.anyOf){let i=Kn(o,t,r,n);if(he(e,t,i))return er(e,r,i)}return er(e,r,n)}function Kn(e,t,r,n){let o=Gt(e,t),i=e;switch(e[k]){case"Array":return vV(i,o,r,n);case"Import":return TV(i,o,r,n);case"Intersect":return MV(i,o,r,n);case"Not":return OV(i,o,r,n);case"Object":return RV(i,o,r,n);case"Record":return CV(i,o,r,n);case"Ref":return AV(i,o,r,n);case"This":return PV(i,o,r,n);case"Tuple":return kV(i,o,r,n);case"Union":return NV(i,o,r,n);default:return er(i,r,n)}}function dh(e,t,r){return Kn(e,t,"",r)}function FV(e,t){return Re(e)||At(e.items,t)}function EV(e,t){return Re(e)||At(e.items,t)}function $V(e,t){return Re(e)||At(e.returns,t)||e.parameters.some(r=>At(r,t))}function LV(e,t){return Re(e)||At(e.returns,t)||e.parameters.some(r=>At(r,t))}function DV(e,t){return Re(e)||Re(e.unevaluatedProperties)||e.allOf.some(r=>At(r,t))}function VV(e,t){let r=globalThis.Object.getOwnPropertyNames(e.$defs).reduce((o,i)=>[...o,e.$defs[i]],[]),n=e.$defs[e.$ref];return Re(e)||At(n,[...r,...t])}function UV(e,t){return Re(e)||At(e.items,t)}function jV(e,t){return Re(e)||At(e.not,t)}function BV(e,t){return Re(e)||Object.values(e.properties).some(r=>At(r,t))||rt(e.additionalProperties)&&At(e.additionalProperties,t)}function GV(e,t){return Re(e)||At(e.item,t)}function zV(e,t){let r=Object.getOwnPropertyNames(e.patternProperties)[0],n=e.patternProperties[r];return Re(e)||At(n,t)||rt(e.additionalProperties)&&Re(e.additionalProperties)}function KV(e,t){return Re(e)?!0:At(Pe(e,t),t)}function qV(e,t){return Re(e)?!0:At(Pe(e,t),t)}function HV(e,t){return Re(e)||!Ze(e.items)&&e.items.some(r=>At(r,t))}function YV(e,t){return Re(e)||e.anyOf.some(r=>At(r,t))}function At(e,t){let r=Gt(e,t),n=e;if(e.$id&&i1.has(e.$id))return!1;switch(e.$id&&i1.add(e.$id),e[k]){case"Array":return FV(n,r);case"AsyncIterator":return EV(n,r);case"Constructor":return $V(n,r);case"Function":return LV(n,r);case"Import":return VV(n,r);case"Intersect":return DV(n,r);case"Iterator":return UV(n,r);case"Not":return jV(n,r);case"Object":return BV(n,r);case"Promise":return GV(n,r);case"Record":return zV(n,r);case"Ref":return KV(n,r);case"This":return qV(n,r);case"Tuple":return HV(n,r);case"Union":return YV(n,r);default:return Re(e)}}var i1=new Set;function Ja(e,t){return i1.clear(),At(e,t)}function J8(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]];if(!he(t,r,n))throw new lh(t,n,na(t,r,n).First());return Ja(t,r)?ph(t,r,n):n}function mi(e,t){let r=se(e,"default")?e.default:void 0,n=hi(r)?r():Me(r);return Ze(t)?n:me(t)&&me(n)?Object.assign(n,t):t}function a1(e){return xi(e)&&"default"in e}function WV(e,t,r){if(fe(r)){for(let o=0;o{let a=gr(i,t,n);return me(a)?{...o,...a}:a},{})}function JV(e,t,r){let n=mi(e,r);if(!me(n))return n;let o=Object.getOwnPropertyNames(e.properties);for(let i of o){let a=gr(e.properties[i],t,n[i]);Ze(a)||(n[i]=gr(e.properties[i],t,n[i]))}if(!a1(e.additionalProperties))return n;for(let i of Object.getOwnPropertyNames(n))o.includes(i)||(n[i]=gr(e.additionalProperties,t,n[i]));return n}function eU(e,t,r){let n=mi(e,r);if(!me(n))return n;let o=e.additionalProperties,[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let f of Object.getOwnPropertyNames(n))s.test(f)&&a1(a)&&(n[f]=gr(a,t,n[f]));if(!a1(o))return n;for(let f of Object.getOwnPropertyNames(n))s.test(f)||(n[f]=gr(o,t,n[f]));return n}function tU(e,t,r){return gr(Pe(e,t),t,mi(e,r))}function rU(e,t,r){return gr(Pe(e,t),t,r)}function nU(e,t,r){let n=mi(e,r);if(!fe(n)||Ze(e.items))return n;let[o,i]=[e.items,Math.max(e.items.length,n.length)];for(let a=0;aaU,Format:()=>Yu,Get:()=>fU,Has:()=>sU,Set:()=>iU,ValuePointerRootDeleteError:()=>xh,ValuePointerRootSetError:()=>yh});var yh=class extends ce{constructor(t,r,n){super("Cannot set root value"),this.value=t,this.path=r,this.update=n}},xh=class extends ce{constructor(t,r){super("Cannot delete root value"),this.value=t,this.path=r}};function e3(e){return e.indexOf("~")===-1?e:e.replace(/~1/g,"/").replace(/~0/g,"~")}function*Yu(e){if(e==="")return;let[t,r]=[0,0];for(let n=0;nes(e[o],t[o]))}function uU(e,t){return ur(t)&&e.getTime()===t.getTime()}function lU(e,t){return!fe(t)||e.length!==t.length?!1:e.every((r,n)=>es(r,t[n]))}function pU(e,t){return!Yr(t)||e.length!==t.length||Object.getPrototypeOf(e).constructor.name!==Object.getPrototypeOf(t).constructor.name?!1:e.every((r,n)=>es(r,t[n]))}function mU(e,t){return e===t}function es(e,t){if(ur(e))return uU(e,t);if(Yr(e))return pU(e,t);if(fe(e))return lU(e,t);if(me(e))return cU(e,t);if(Fr(e))return mU(e,t);throw new Error("ValueEquals: Unable to compare value")}var dU=Ae({type:_e("insert"),path:lr(),value:Mn()}),hU=Ae({type:_e("update"),path:lr(),value:Mn()}),yU=Ae({type:_e("delete"),path:lr()}),r3=Ce([dU,hU,yU]),gh=class extends ce{constructor(t,r){super(r),this.value=t}};function bh(e,t){return{type:"update",path:e,value:t}}function n3(e,t){return{type:"insert",path:e,value:t}}function o3(e){return{type:"delete",path:e}}function t3(e){if(globalThis.Object.getOwnPropertySymbols(e).length>0)throw new gh(e,"Cannot diff objects with symbols")}function*xU(e,t,r){if(t3(t),t3(r),!Nh(r))return yield bh(e,r);let n=globalThis.Object.getOwnPropertyNames(t),o=globalThis.Object.getOwnPropertyNames(r);for(let i of o)se(t,i)||(yield n3(`${e}/${i}`,r[i]));for(let i of n)se(r,i)&&(es(t,r)||(yield*wh(`${e}/${i}`,t[i],r[i])));for(let i of n)se(r,i)||(yield o3(`${e}/${i}`))}function*gU(e,t,r){if(!fe(r))return yield bh(e,r);for(let n=0;n=0;n--)n0&&e[0].path===""&&e[0].type==="update"}function IU(e){return e.length===0}function a3(e,t){if(SU(t))return Me(t[0].value);if(IU(t))return Me(e);let r=Me(e);for(let n of t)switch(n.type){case"insert":{qn.Set(r,n.path,n.value);break}case"update":{qn.Set(r,n.path,n.value);break}case"delete":{qn.Delete(r,n.path);break}}return r}function s3(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]],o=Ja(t,r)?dh(t,r,n):n;if(!he(t,r,o))throw new mh(t,o,na(t,r,o).First());return o}function Sh(e){return me(e)&&!fe(e)}var Ih=class extends ce{constructor(t){super(t)}};function _U(e,t,r,n){if(!Sh(r))qn.Set(e,t,Me(n));else{let o=Object.getOwnPropertyNames(r),i=Object.getOwnPropertyNames(n);for(let a of o)i.includes(a)||delete r[a];for(let a of i)o.includes(a)||(r[a]=null);for(let a of i)s1(e,`${t}/${a}`,r[a],n[a])}}function vU(e,t,r,n){if(!fe(r))qn.Set(e,t,Me(n));else{for(let o=0;o(ah(i,a,s),s)],["Cast",(i,a,s)=>Ku(i,a,s)],["Clean",(i,a,s)=>fh(i,a,s)],["Clone",(i,a,s)=>Me(s)],["Convert",(i,a,s)=>uh(i,a,s)],["Decode",(i,a,s)=>Ja(i,a)?ph(i,a,s):s],["Default",(i,a,s)=>hh(i,a,s)],["Encode",(i,a,s)=>Ja(i,a)?dh(i,a,s):s]]);function r(i){t.delete(i)}e.Delete=r;function n(i,a){t.set(i,a)}e.Set=n;function o(i){return t.get(i)}e.Get=o})(f1||(f1={}));var u3=["Clone","Clean","Default","Convert","Assert","Decode"];function RU(e,t,r,n){return e.reduce((o,i)=>{let a=f1.Get(i);if(Ze(a))throw new _h(`Unable to find Parse operation '${i}'`);return a(t,r,o)},n)}function l3(...e){let[t,r,n,o]=e.length===4?[e[0],e[1],e[2],e[3]]:e.length===3?fe(e[0])?[e[0],e[1],[],e[2]]:[u3,e[0],e[1],e[2]]:e.length===2?[u3,e[0],[],e[1]]:(()=>{throw new _h("Invalid Arguments")})();return RU(t,r,n,o)}var Lf={};oa(Lf,{Assert:()=>ah,Cast:()=>Ku,Check:()=>he,Clean:()=>fh,Clone:()=>Me,Convert:()=>uh,Create:()=>jn,Decode:()=>J8,Default:()=>hh,Diff:()=>i3,Edit:()=>r3,Encode:()=>s3,Equal:()=>es,Errors:()=>na,Hash:()=>$f,Mutate:()=>c3,Parse:()=>l3,Patch:()=>a3,ValueErrorIterator:()=>ra});function vh(e){switch(e.type){case"summary_metrics":return Xb(e);case"performance_table":return Yb(e);case"roc":return Ub(e);case"calibration":return jb(e);case"precision_recall":return Gb(e);case"gains":return zb(e);case"lift":return Kb(e);case"decision_curve":return qb(e);case"interventions_avoided":return Hb(e)}}function Mo(e,t){let r=e.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"id";/^[a-z]/i.test(r)||(r=`id-${r}`);let n=r,o=1;for(;t.has(n);)n=`${r}-${o}`,o++;return t.add(n),n}function c1(e,t){let r=(n,o=!0)=>{e.forEach((i,a)=>{let s=a===n;i.setAttribute("aria-selected",s?"true":"false"),i.tabIndex=s?0:-1,t[a].hidden=!s}),o&&e[n].focus()};e.forEach((n,o)=>{n.addEventListener("click",()=>{r(o,!1)}),n.addEventListener("keydown",i=>{let a=null;i.key==="ArrowRight"?a=(o+1)%e.length:i.key==="ArrowLeft"?a=(o-1+e.length)%e.length:i.key==="Home"?a=0:i.key==="End"&&(a=e.length-1),a!==null&&(i.preventDefault(),r(a,!0))})})}function CU(e){if(!Lf.Check(vl,e))throw new Error("Invalid ReportSpec");Ml(e);let t=document.createElement("div");if(t.className="rtichoke-report",e.title){let r=document.createElement("h1");r.className="rtichoke-report__title",r.textContent=e.title,t.append(r)}for(let r of e.components){let n=document.createElement("section");if(n.className="rtichoke-report__component",n.dataset.componentId=r.id,r.title){let i=document.createElement("h2");i.className="rtichoke-report__component-title",i.textContent=r.title,n.append(i)}let o=document.createElement("div");o.className="rtichoke-report__component-content",o.append(vh(r.spec)),n.append(o),t.append(n)}return t}function AU(e,t){if(!Lf.Check(Tl,e))throw new Error("Invalid ReportSpec");Ml(e);let r=!!e.title,n=new Set,o=document.createElement("article");if(o.className="rtichoke-report",e.title){let p=document.createElement("header");p.className="rtichoke-report__header";let d=document.createElement("h1");d.className="rtichoke-report__title",d.textContent=e.title,p.append(d),o.append(p)}let i=[],a=0;for(let p of e.sections){let d=Mo(p.id,n);a++;let y=[];for(let x of p.items)if(x.type==="group"){let w=Mo(x.id,n);a++,y.push({rawId:x.id,title:x.title,domId:w})}i.push({rawId:p.id,title:p.title,domId:d,groups:y})}if(a>1){let p=document.createElement("nav");p.className="rtichoke-report__nav",p.setAttribute("aria-label","Report sections");let d=document.createElement("ul");d.className="rtichoke-report__nav-list";for(let y of i){let x=document.createElement("li");x.className="rtichoke-report__nav-item";let w=document.createElement("a");if(w.className="rtichoke-report__nav-link",w.href=`#${y.domId}`,w.textContent=y.title,x.append(w),y.groups.length>0){let g=document.createElement("ul");g.className="rtichoke-report__nav-sublist";for(let S of y.groups){let b=document.createElement("li");b.className="rtichoke-report__nav-subitem";let T=document.createElement("a");T.className="rtichoke-report__nav-link",T.href=`#${S.domId}`,T.textContent=S.title,b.append(T),g.append(b)}x.append(g)}d.append(x)}p.append(d),o.append(p)}let s=r?"h2":"h1",f=r?"h3":"h2",u=r?"h3":"h2",c=r?"h4":"h3",m=(p,d)=>{let y=document.createElement("section");if(y.className="rtichoke-report__component",y.dataset.componentId=p.id,p.title){let w=Mo(`heading-${p.id}`,n),g=document.createElement(d);g.className="rtichoke-report__component-title",g.id=w,g.textContent=p.title,y.setAttribute("aria-labelledby",w),y.append(g)}let x=document.createElement("div");return x.className="rtichoke-report__component-content",x.append(vh(p.spec)),y.append(x),y},l=(p,d,y)=>{let x=document.createElement("section");x.className="rtichoke-report__group",x.id=d.domId,x.dataset.groupId=p.id;let w=Mo(`heading-${p.id}`,n),g=document.createElement(f);if(g.className="rtichoke-report__group-title",y&&g.classList.add("rtichoke-report__group-title--tab-panel"),g.id=w,g.textContent=p.title,x.setAttribute("aria-labelledby",y??w),x.append(g),t.groupPresentation==="tabs"){let S=document.createElement("div");S.className="rtichoke-report__tablist",S.setAttribute("role","tablist"),S.setAttribute("aria-labelledby",w);let b=[],T=[];p.components.forEach((I,v)=>{let O=Mo(`tab-${p.id}-${I.id}`,n),C=Mo(`panel-${p.id}-${I.id}`,n),E=document.createElement("button");E.className="rtichoke-report__tab",E.type="button",E.id=O,E.setAttribute("role","tab"),E.setAttribute("aria-controls",C),E.setAttribute("aria-selected",v===0?"true":"false"),E.tabIndex=v===0?0:-1,E.textContent=I.title||I.id;let A=document.createElement("section");A.className="rtichoke-report__component rtichoke-report__tabpanel",A.id=C,A.setAttribute("role","tabpanel"),A.setAttribute("aria-labelledby",O),A.tabIndex=0,A.dataset.componentId=I.id,A.hidden=v!==0;let F=document.createElement("div");F.className="rtichoke-report__component-content",F.append(vh(I.spec)),A.append(F),b.push(E),T.push(A),S.append(E)}),c1(b,T),x.append(S,...T)}else for(let S of p.components)x.append(m(S,c));return x};for(let p=0;pO.type==="group"),b=t.sectionGroupPresentation==="tabs"&&S.length>1,T=0,I=!1,v=0;for(;v1){let F=document.createElement("div");F.className="rtichoke-report__tablist",F.setAttribute("role","tablist"),F.setAttribute("aria-labelledby",w);let H=[],j=[];E.forEach((M,U)=>{let D=Mo(`tab-${d.id}-${M.id}`,n),oe=Mo(`panel-${d.id}-${M.id}`,n),V=document.createElement("button");V.className="rtichoke-report__tab",V.type="button",V.id=D,V.setAttribute("role","tab"),V.setAttribute("aria-controls",oe),V.setAttribute("aria-selected",U===0?"true":"false"),V.tabIndex=U===0?0:-1,V.textContent=M.title||M.id;let K=document.createElement("section");K.className="rtichoke-report__component rtichoke-report__tabpanel",K.id=oe,K.setAttribute("role","tabpanel"),K.setAttribute("aria-labelledby",D),K.tabIndex=0,K.dataset.componentId=M.id,K.hidden=U!==0;let Y=document.createElement("div");Y.className="rtichoke-report__component-content",Y.append(vh(M.spec)),K.append(Y),H.push(V),j.push(K),F.append(V)}),c1(H,j),x.append(F,...j),v=C}else x.append(m(O,u)),v++}else if(O.type==="group"){if(b){if(!I){I=!0;let C=document.createElement("div");C.className="rtichoke-report__tablist rtichoke-report__section-group-tablist",C.setAttribute("role","tablist"),C.setAttribute("aria-labelledby",w);let E=[],A=[];S.forEach((F,H)=>{let j=y.groups[H],M=Mo(`section-group-tab-${d.id}-${F.id}`,n),U=document.createElement("button");U.className="rtichoke-report__tab",U.type="button",U.id=M,U.setAttribute("role","tab"),U.setAttribute("aria-controls",j.domId),U.setAttribute("aria-selected",H===0?"true":"false"),U.tabIndex=H===0?0:-1,U.textContent=F.title;let D=l(F,j,M);D.classList.add("rtichoke-report__tabpanel"),D.setAttribute("role","tabpanel"),D.setAttribute("aria-labelledby",M),D.tabIndex=0,D.hidden=H!==0,E.push(U),A.push(D),C.append(U)}),c1(E,A),x.append(C,...A)}}else x.append(l(O,y.groups[T++]));v++}}o.append(x)}return o}function PU(e,t){if(!e||typeof e!="object")throw new Error("Invalid ReportSpec");let r=t?.groupPresentation??"stacked",n=t?.sectionGroupPresentation??"stacked",o=t?.sectionComponentPresentation??"stacked";if(t!==void 0&&(typeof t!="object"||t===null||t.groupPresentation!==void 0&&t.groupPresentation!=="stacked"&&t.groupPresentation!=="tabs"))throw new Error("Invalid render options: groupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionGroupPresentation!==void 0&&t.sectionGroupPresentation!=="stacked"&&t.sectionGroupPresentation!=="tabs")throw new Error("Invalid render options: sectionGroupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionComponentPresentation!==void 0&&t.sectionComponentPresentation!=="stacked"&&t.sectionComponentPresentation!=="tabs")throw new Error("Invalid render options: sectionComponentPresentation must be 'stacked' or 'tabs'");if(e.schemaVersion==="1.0")return CU(e);if(e.schemaVersion==="1.1")return AU(e,{groupPresentation:r,sectionGroupPresentation:n,sectionComponentPresentation:o});throw new Error("Invalid ReportSpec")}var kU=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"];function NU(e){let t=e.data.map(n=>({...n,false_positive_rate:1-n.specificity})),r=[Ct(t,{x:"false_positive_rate",y:"sensitivity",stroke:"model",strokeWidth:2,tip:!0})];return e.references?.some(n=>n.type==="identity")&&r.unshift(Ct([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2})),vo({width:600,height:600,marginLeft:64,marginBottom:56,style:{background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"},x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:!0,range:kU},marks:r})}export{T0 as AUROCSummaryMetricSchema,l0 as CalibrationSpecSchema,Pw as CalibrationV2DatumSchema,d0 as CalibrationV2SpecSchema,Nw as DecisionCurveV2DatumSchema,Fw as DecisionCurveV2EvaluationSchema,Dw as DecisionCurveV2ReferenceSchema,Ew as DecisionCurveV2SeriesSchema,h0 as DecisionCurveV2SpecSchema,Cw as DiscreteCalibrationV2DatumSchema,Mw as DisplayGroupingSpecSchema,Tw as DisplayRoleSchema,An as EvaluationSpecSchema,y0 as GainsV2SpecSchema,Gw as InterventionsAvoidedTreatAllReferenceSchema,zw as InterventionsAvoidedTreatNoneReferenceSchema,Uw as InterventionsAvoidedV2DatumSchema,jw as InterventionsAvoidedV2EvaluationSchema,Kw as InterventionsAvoidedV2ReferenceSchema,Bw as InterventionsAvoidedV2SeriesSchema,x0 as InterventionsAvoidedV2SpecSchema,g0 as LiftV2SpecSchema,Rw as OperatingPointDimensionSchema,Yw as OperatingPointSchema,$o as OperatingPointSpecSchema,Ww as PerformanceEvaluationContextSchema,qw as PerformanceMetricDefinitionSchema,I0 as PerformanceMetricIdSchema,Hw as PerformanceMetricValueSchema,Xw as PerformanceTableRowSchema,_0 as PerformanceTableSpecSchema,v0 as PopulationSummaryOwnerSpecSchema,b0 as PrecisionRecallV2SpecSchema,M0 as PrevalenceSummaryMetricSchema,xr as RTICHOKE_BROWSER_THEME,L8 as RTICHOKE_COLORS,Ow as ReferenceLineV2SpecSchema,Qw as ReportComponentSchema,C0 as ReportComponentV1_1Schema,Jw as ReportGroupSchema,eS as ReportSectionSchema,vC as ReportSpecSchema,vl as ReportSpecV1_0Schema,Tl as ReportSpecV1_1Schema,p0 as RocSpecSchema,w0 as RocV2SpecSchema,cC as RtichokeChartSpecSchema,S0 as RtichokeChartSpecV2Schema,vs as SeriesSpecSchema,Aw as SmoothCalibrationV2DatumSchema,R0 as StandaloneCanonicalSpecSchema,SC as SummaryMetricSchema,O0 as SummaryMetricsSpecSchema,Lw as TreatAllReferenceSchema,$w as TreatNoneReferenceSchema,A0 as assertPerformanceTableReferentialIntegrity,Ml as assertReportReferentialIntegrity,P0 as assertSummaryMetricsReferentialIntegrity,Lo as assertV2ReferentialIntegrity,OC as calibrationSpecFromRtichokeRows,PC as calibrationV2SpecFromRtichokeRows,D8 as extractOperatingPointValues,IE as renderCalibration,jb as renderCalibrationV2,qb as renderDecisionCurveV2,zb as renderGainsV2,Hb as renderInterventionsAvoidedV2,Kb as renderLiftV2,Yb as renderPerformanceTable,Gb as renderPrecisionRecallV2,PU as renderReport,NU as renderRoc,Ub as renderRocV2,Xb as renderSummaryMetrics,Qa as renderWithOperatingPointSelection,To as resolveV2RenderOptions,MC as rocSpecFromRtichokePython,TC as rocSpecFromRtichokeR,AC as rocV2SpecFromRtichokePython,CC as rocV2SpecFromRtichokeR}; diff --git a/tests/test_report_browser.py b/tests/test_report_browser.py index 9ed6d997..525af9d2 100644 --- a/tests/test_report_browser.py +++ b/tests/test_report_browser.py @@ -3,12 +3,16 @@ from typing import Any, cast import numpy as np +import pytest from rtichoke._performance_table_spec import ( _performance_table_spec_from_performance_data, _performance_table_times_spec_from_performance_data, ) -from rtichoke._report_browser import RtichokeBrowserReport +from rtichoke._report_browser import ( + RtichokeBrowserReport, + _resolve_render_report_symbol, +) from rtichoke._report_spec import _build_report_spec_v11 from rtichoke._viz_spec_v2 import ( _gains_v2_spec_from_performance_data, @@ -155,3 +159,26 @@ def test_browser_report_does_not_delete_or_overwrite_preexisting_assets(tmp_path assert existing_js.read_text(encoding="utf-8") == "// custom preexisting js" assert existing_css.read_text(encoding="utf-8") == "/* custom preexisting css */" + + +def test_resolve_render_report_symbol_export_clauses(): + # Unminified / shorthand export + shorthand_js = "export { foo, renderReport, bar };" + assert _resolve_render_report_symbol(shorthand_js) == "renderReport" + + # Direct function export + fn_export_js = "export function renderReport(spec, options) { return null; }" + assert _resolve_render_report_symbol(fn_export_js) == "renderReport" + + # Minified / aliased export with arbitrary identifier + aliased_js = "export { foo, abc as renderReport, bar };" + assert _resolve_render_report_symbol(aliased_js) == "abc" + + # Compact minified export syntax + compact_aliased_js = "export{x1,y2 as renderReport,z3};" + assert _resolve_render_report_symbol(compact_aliased_js) == "y2" + + # Missing renderReport export raises a clear error + missing_js = "export { foo, bar };" + with pytest.raises(ValueError, match="Could not resolve 'renderReport' export"): + _resolve_render_report_symbol(missing_js) diff --git a/tests/test_rtichoke_viz_vendor.py b/tests/test_rtichoke_viz_vendor.py index e1b95224..d99a1b94 100644 --- a/tests/test_rtichoke_viz_vendor.py +++ b/tests/test_rtichoke_viz_vendor.py @@ -3,19 +3,19 @@ from pathlib import Path _VENDOR = Path(__file__).parents[1] / "src" / "rtichoke" / "_vendor" / "rtichoke_viz" -_RELEASE_DIR = "rtichoke-viz-0.20.1" -_SHA256 = "17aebfb05a479c3ea28855f6ca3f43cadde7b8b134a2080e309c630c63617629" -_SOURCE_COMMIT = "56e097ab394f3499ef5cfe791e686248df8b39f2" +_RELEASE_DIR = "rtichoke-viz-0.20.2" +_SHA256 = "2e4851159ceea0e3b2420c7e0aa22a566b94ec7057c27b13b7db7da88de34d11" +_SOURCE_COMMIT = "40748bdeff7d535f516744886b64056f3aaa518d" -def test_vendored_rtichoke_viz_v0201_provenance_archive_and_schemas(): +def test_vendored_rtichoke_viz_v0202_provenance_archive_and_schemas(): provenance = (_VENDOR / "VENDORED_FROM").read_text() - assert "release=v0.20.1" in provenance + assert "release=v0.20.2" in provenance assert f"source_commit={_SOURCE_COMMIT}" in provenance - assert "archive=rtichoke-viz-0.20.1.tar.gz" in provenance + assert "archive=rtichoke-viz-0.20.2.tar.gz" in provenance assert f"sha256={_SHA256}" in provenance - archive = _VENDOR / "rtichoke-viz-0.20.1.tar.gz" + archive = _VENDOR / "rtichoke-viz-0.20.2.tar.gz" assert hashlib.sha256(archive.read_bytes()).hexdigest() == _SHA256 with tarfile.open(archive, "r:gz") as release: assert set(release.getnames()) == { @@ -30,7 +30,7 @@ def test_vendored_rtichoke_viz_v0201_provenance_archive_and_schemas(): manifest = release.extractfile(f"{_RELEASE_DIR}/MANIFEST") assert manifest is not None assert manifest.read().decode() == ( - f"version=0.20.1\ncommit={_SOURCE_COMMIT}\n" + f"version=0.20.2\ncommit={_SOURCE_COMMIT}\n" ) for filename in ( "rtichoke-viz.css", @@ -43,6 +43,7 @@ def test_vendored_rtichoke_viz_v0201_provenance_archive_and_schemas(): assert packaged is not None assert (_VENDOR / filename).read_bytes() == packaged.read() + assert not (_VENDOR / "rtichoke-viz-0.20.1.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.20.0.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.19.0.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.14.0.tar.gz").exists() @@ -60,7 +61,7 @@ def test_vendored_rtichoke_viz_v0201_provenance_archive_and_schemas(): assert '"summary_metrics"' in report_schema -def test_v0201_bundle_keeps_existing_exports_and_time_dependent_surfaces(): +def test_v0202_bundle_keeps_existing_exports_and_time_dependent_surfaces(): bundle = (_VENDOR / "rtichoke-viz.js").read_text(encoding="utf-8") for export_name in ( "renderRoc",