diff --git a/README.md b/editor/README.md similarity index 100% rename from README.md rename to editor/README.md diff --git a/index.html b/editor/index.html similarity index 100% rename from index.html rename to editor/index.html diff --git a/editor/package.json b/editor/package.json new file mode 100644 index 0000000..c81befe --- /dev/null +++ b/editor/package.json @@ -0,0 +1,36 @@ +{ + "name": "editor", + "private": true, + "version": "0.1.0", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "typecheck": "vue-tsc --noEmit" + }, + "dependencies": { + "@vueuse/core": "9.13.0", + "@element-plus/icons-vue": "^2.3.1", + "@element-plus/theme": "workspace:*", + "element-plus": "^2.7.0", + "color": "^4.2.0", + "pinia": "^2.1.7", + "unocss": "^0.58.0", + "vue": "^3.4.0" + }, + "devDependencies": { + "@antfu/eslint-config": "^2.4.6", + "@iconify-json/carbon": "^1.1.31", + "@types/node": "^18.14.0", + "@vitejs/plugin-vue": "^4.0.0", + "typescript": "^5.2.2", + "unplugin-auto-import": "^0.17.2", + "unplugin-vue-components": "^0.24.0", + "vite": "^4.1.2", + "vite-plugin-pages": "^0.32.0", + "vite-plugin-vue-devtools": "1.0.0-rc.8", + "vite-plugin-vue-layouts": "^0.9.1", + "vue-tsc": "^1.1.3" + }, + "license": "MIT" +} diff --git a/public/CNAME b/editor/public/CNAME similarity index 100% rename from public/CNAME rename to editor/public/CNAME diff --git a/public/element-plus-logo-small.svg b/editor/public/element-plus-logo-small.svg similarity index 100% rename from public/element-plus-logo-small.svg rename to editor/public/element-plus-logo-small.svg diff --git a/public/favicon.svg b/editor/public/favicon.svg similarity index 100% rename from public/favicon.svg rename to editor/public/favicon.svg diff --git a/editor/src/App.vue b/editor/src/App.vue new file mode 100644 index 0000000..40ba05d --- /dev/null +++ b/editor/src/App.vue @@ -0,0 +1,68 @@ + + + + diff --git a/src/assets/logo.png b/editor/src/assets/logo.png similarity index 100% rename from src/assets/logo.png rename to editor/src/assets/logo.png diff --git a/src/auto-imports.d.ts b/editor/src/auto-imports.d.ts similarity index 100% rename from src/auto-imports.d.ts rename to editor/src/auto-imports.d.ts diff --git a/src/components.d.ts b/editor/src/components.d.ts similarity index 58% rename from src/components.d.ts rename to editor/src/components.d.ts index 4682a96..65b4a90 100644 --- a/src/components.d.ts +++ b/editor/src/components.d.ts @@ -12,15 +12,29 @@ declare module '@vue/runtime-core' { BaseHeader: typeof import('./components/layouts/BaseHeader.vue')['default'] BaseSide: typeof import('./components/layouts/BaseSide.vue')['default'] ElButton: typeof import('element-plus/es')['ElButton'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElInput: typeof import('element-plus/es')['ElInput'] ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElSelect: typeof import('element-plus/es')['ElSelect'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTag: typeof import('element-plus/es')['ElTag'] + ElTimePicker: typeof import('element-plus/es')['ElTimePicker'] HelloWorld: typeof import('./components/HelloWorld.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/editor/src/components/HelloWorld.vue b/editor/src/components/HelloWorld.vue new file mode 100644 index 0000000..516daf3 --- /dev/null +++ b/editor/src/components/HelloWorld.vue @@ -0,0 +1,194 @@ + + \ No newline at end of file diff --git a/src/composables/dark.ts b/editor/src/composables/dark.ts similarity index 100% rename from src/composables/dark.ts rename to editor/src/composables/dark.ts diff --git a/src/composables/index.ts b/editor/src/composables/index.ts similarity index 100% rename from src/composables/index.ts rename to editor/src/composables/index.ts diff --git a/src/env.d.ts b/editor/src/env.d.ts similarity index 100% rename from src/env.d.ts rename to editor/src/env.d.ts diff --git a/src/main.ts b/editor/src/main.ts similarity index 100% rename from src/main.ts rename to editor/src/main.ts diff --git a/src/shims.d.ts b/editor/src/shims.d.ts similarity index 100% rename from src/shims.d.ts rename to editor/src/shims.d.ts diff --git a/src/styles/index.css b/editor/src/styles/index.css similarity index 100% rename from src/styles/index.css rename to editor/src/styles/index.css diff --git a/editor/tsconfig.json b/editor/tsconfig.json new file mode 100644 index 0000000..602cb5a --- /dev/null +++ b/editor/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "target": "esnext", + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "paths": { + "~/*": ["src/*"] + }, + "skipLibCheck": true + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"] +} diff --git a/uno.config.ts b/editor/uno.config.ts similarity index 100% rename from uno.config.ts rename to editor/uno.config.ts diff --git a/vite.config.ts b/editor/vite.config.ts similarity index 100% rename from vite.config.ts rename to editor/vite.config.ts diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..3b614a0 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,3 @@ +import antfu from '@antfu/eslint-config' + +export default antfu() diff --git a/package.json b/package.json index d66ef70..8914447 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,22 @@ { - "name": "element-plus-theme-editor", "private": true, - "version": "0.1.0", + "author": "xxholly32@163.com", "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview", - "typecheck": "vue-tsc --noEmit" + "dev": "pnpm run --filter editor dev" }, - "dependencies": { - "@vueuse/core": "9.13.0", - "@element-plus/icons-vue": "^2.3.1", - "element-plus": "^2.7.0", - "color": "^4.2.0", - "pinia": "^2.1.7", - "unocss": "^0.58.0", - "vue": "^3.4.0" + "repository": { + "type": "git", + "url": "git+https://github.com/xxholly32/element-plus-theme-editor.git" }, + "keywords": [], + "license": "MIT", + "bugs": { + "url": "https://github.com/xxholly32/element-plus-theme-editor/issues" + }, + "homepage": "https://github.com/xxholly32/element-plus-theme-editor#readme", "devDependencies": { "@antfu/eslint-config": "^2.4.6", - "@iconify-json/carbon": "^1.1.31", - "@types/node": "^18.14.0", - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^5.2.2", - "unplugin-auto-import": "^0.17.2", - "unplugin-vue-components": "^0.24.0", - "vite": "^4.1.2", - "vite-plugin-pages": "^0.32.0", - "vite-plugin-vue-devtools": "1.0.0-rc.8", - "vite-plugin-vue-layouts": "^0.9.1", - "vue-tsc": "^1.1.3" - }, - "license": "MIT" -} + "@types/node": "20.8.10", + "typescript": "^5.2.2" + } +} \ No newline at end of file diff --git a/packages/theme/README.md b/packages/theme/README.md new file mode 100644 index 0000000..9446e15 --- /dev/null +++ b/packages/theme/README.md @@ -0,0 +1,5 @@ +# 通用变量 + +| 变量 | 使用场景 | +| -------------------- | ------------------------------------------------ | +| primary-text-color-1 | 主题色文本,根据主题色对比度显示白色或中性色文本 | diff --git a/packages/theme/index.ts b/packages/theme/index.ts new file mode 100644 index 0000000..6f39cd4 --- /dev/null +++ b/packages/theme/index.ts @@ -0,0 +1 @@ +export * from './src' diff --git a/packages/theme/lib/constants/element-plus.d.ts b/packages/theme/lib/constants/element-plus.d.ts new file mode 100644 index 0000000..6c1807b --- /dev/null +++ b/packages/theme/lib/constants/element-plus.d.ts @@ -0,0 +1,101 @@ +export declare const ELEMENT_PLUS_CONSTANTS: { + data: { + colorList: { + color: string; + darkColor: string; + id: string; + title: string; + type: string; + }[]; + generate: { + dark: { + down: { + cTarget: number; + hRotate: number; + tTarget: number; + tEasing: number[]; + cEasing: number[]; + hEasing: number[]; + }; + up: { + cTarget: number; + hRotate: number; + tTarget: number; + tEasing: number[]; + cEasing: number[]; + hEasing: number[]; + }; + neutral: { + cTarget: number; + hRotate: number; + tTarget: number; + down: { + tTarget: number; + tEasing: number[]; + }; + up: { + tTarget: number; + tEasing: number[]; + }; + }; + }; + hue: { + palettes: { + multiply: number; + segment: number[]; + }; + neutral: { + multiply: number; + segment: number[]; + }; + }; + light: { + down: { + cTarget: number; + hRotate: number; + tTarget: number; + tEasing: number[]; + cEasing: number[]; + hEasing: number[]; + }; + up: { + cTarget: number; + hRotate: number; + tTarget: number; + tEasing: number[]; + cEasing: number[]; + hEasing: number[]; + }; + neutral: { + cTarget: number; + hRotate: number; + tTarget: number; + down: { + tTarget: number; + tEasing: number[]; + }; + up: { + tTarget: number; + tEasing: number[]; + }; + }; + }; + step: { + down: number; + up: number; + }; + }; + stepFliter: any[]; + system: { + edit: { + isolateEdit: boolean; + }; + pattern: { + displayFliterStep: boolean; + isFliterStep: boolean; + isolateDark: boolean; + }; + }; + }; + name: string; +}; diff --git a/packages/theme/lib/constants/index.d.ts b/packages/theme/lib/constants/index.d.ts new file mode 100644 index 0000000..8c1ad1f --- /dev/null +++ b/packages/theme/lib/constants/index.d.ts @@ -0,0 +1 @@ +export * from './element-plus'; diff --git a/packages/theme/lib/dom.d.ts b/packages/theme/lib/dom.d.ts new file mode 100644 index 0000000..39fc574 --- /dev/null +++ b/packages/theme/lib/dom.d.ts @@ -0,0 +1 @@ +export declare function changeThemeByCssvars(cssVars: Record): void; diff --git a/packages/theme/lib/index.d.ts b/packages/theme/lib/index.d.ts new file mode 100644 index 0000000..f74bb25 --- /dev/null +++ b/packages/theme/lib/index.d.ts @@ -0,0 +1,5 @@ +export * from './utils'; +export * from './dom'; +export * from './constants'; +export * from './palettes'; +export * from './types'; diff --git a/packages/theme/lib/palettes.d.ts b/packages/theme/lib/palettes.d.ts new file mode 100644 index 0000000..510da9a --- /dev/null +++ b/packages/theme/lib/palettes.d.ts @@ -0,0 +1,18 @@ +import type { generateType } from './types'; +export declare function getNeutral(generate?: generateType | null): { + light: string[]; + dark: string[]; +}; +export declare function getNeutralAlpha(generate?: generateType | null, format?: 'rgb' | 'hex' | 'hct' | 'hsv'): { + light: string[]; + dark: string[]; +}; +export declare function getPalette({ light, dark, generate, format, }: { + light: string; + dark: string; + generate?: generateType; + format?: 'rgb' | 'hex' | 'hct' | 'hsv'; +}): { + light: string[]; + dark: string[]; +}; diff --git a/packages/theme/lib/theme.mjs b/packages/theme/lib/theme.mjs new file mode 100644 index 0000000..f4ea48a --- /dev/null +++ b/packages/theme/lib/theme.mjs @@ -0,0 +1,4942 @@ +/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function mr(r) { + return r < 0 ? -1 : r === 0 ? 0 : 1; +} +function wt(r, t, a) { + return (1 - a) * r + a * t; +} +function W1(r, t, a) { + return a < r ? r : a > t ? t : a; +} +function qt(r, t, a) { + return a < r ? r : a > t ? t : a; +} +function H1(r) { + return r = r % 360, r < 0 && (r = r + 360), r; +} +function xe(r, t) { + const a = r[0] * t[0][0] + r[1] * t[0][1] + r[2] * t[0][2], o = r[0] * t[1][0] + r[1] * t[1][1] + r[2] * t[1][2], s = r[0] * t[2][0] + r[1] * t[2][1] + r[2] * t[2][2]; + return [a, o, s]; +} +/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const J1 = [ + [0.41233895, 0.35762064, 0.18051042], + [0.2126, 0.7152, 0.0722], + [0.01932141, 0.11916382, 0.95034478] +], Z1 = [ + [ + 3.2413774792388685, + -1.5376652402851851, + -0.49885366846268053 + ], + [ + -0.9691452513005321, + 1.8758853451067872, + 0.04156585616912061 + ], + [ + 0.05562093689691305, + -0.20395524564742123, + 1.0571799111220335 + ] +], Q1 = [95.047, 100, 108.883]; +function Oe(r, t, a) { + return (255 << 24 | (r & 255) << 16 | (t & 255) << 8 | a & 255) >>> 0; +} +function vn(r) { + const t = Hr(r[0]), a = Hr(r[1]), o = Hr(r[2]); + return Oe(t, a, o); +} +function wn(r) { + return r >> 16 & 255; +} +function Mn(r) { + return r >> 8 & 255; +} +function Pn(r) { + return r & 255; +} +function X1(r, t, a) { + const o = Z1, s = o[0][0] * r + o[0][1] * t + o[0][2] * a, l = o[1][0] * r + o[1][1] * t + o[1][2] * a, u = o[2][0] * r + o[2][1] * t + o[2][2] * a, g = Hr(s), d = Hr(l), k = Hr(u); + return Oe(g, d, k); +} +function K1(r) { + const t = ft(wn(r)), a = ft(Mn(r)), o = ft(Pn(r)); + return xe([t, a, o], J1); +} +function rc(r) { + const t = qr(r), a = Hr(t); + return Oe(a, a, a); +} +function dn(r) { + const t = K1(r)[1]; + return 116 * _n(t / 100) - 16; +} +function qr(r) { + return 100 * ec((r + 16) / 116); +} +function Ce(r) { + return _n(r / 100) * 116 - 16; +} +function ft(r) { + const t = r / 255; + return t <= 0.040449936 ? t / 12.92 * 100 : Math.pow((t + 0.055) / 1.055, 2.4) * 100; +} +function Hr(r) { + const t = r / 100; + let a = 0; + return t <= 31308e-7 ? a = t * 12.92 : a = 1.055 * Math.pow(t, 1 / 2.4) - 0.055, W1(0, 255, Math.round(a * 255)); +} +function tc() { + return Q1; +} +function _n(r) { + const t = 0.008856451679035631, a = 24389 / 27; + return r > t ? Math.pow(r, 1 / 3) : (a * r + 16) / 116; +} +function ec(r) { + const t = 0.008856451679035631, a = 24389 / 27, o = r * r * r; + return o > t ? o : (116 * r - 16) / a; +} +/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class Ar { + /** + * Create ViewingConditions from a simple, physically relevant, set of + * parameters. + * + * @param whitePoint White point, measured in the XYZ color space. + * default = D65, or sunny day afternoon + * @param adaptingLuminance The luminance of the adapting field. Informally, + * how bright it is in the room where the color is viewed. Can be + * calculated from lux by multiplying lux by 0.0586. default = 11.72, + * or 200 lux. + * @param backgroundLstar The lightness of the area surrounding the color. + * measured by L* in L*a*b*. default = 50.0 + * @param surround A general description of the lighting surrounding the + * color. 0 is pitch dark, like watching a movie in a theater. 1.0 is a + * dimly light room, like watching TV at home at night. 2.0 means there + * is no difference between the lighting on the color and around it. + * default = 2.0 + * @param discountingIlluminant Whether the eye accounts for the tint of the + * ambient lighting, such as knowing an apple is still red in green light. + * default = false, the eye does not perform this process on + * self-luminous objects like displays. + */ + static make(t = tc(), a = 200 / Math.PI * qr(50) / 100, o = 50, s = 2, l = !1) { + const u = t, g = u[0] * 0.401288 + u[1] * 0.650173 + u[2] * -0.051461, d = u[0] * -0.250268 + u[1] * 1.204414 + u[2] * 0.045854, k = u[0] * -2079e-6 + u[1] * 0.048952 + u[2] * 0.953127, _ = 0.8 + s / 10, C = _ >= 0.9 ? wt(0.59, 0.69, (_ - 0.9) * 10) : wt(0.525, 0.59, (_ - 0.8) * 10); + let O = l ? 1 : _ * (1 - 1 / 3.6 * Math.exp((-a - 42) / 92)); + O = O > 1 ? 1 : O < 0 ? 0 : O; + const L = _, B = [ + O * (100 / g) + 1 - O, + O * (100 / d) + 1 - O, + O * (100 / k) + 1 - O + ], w = 1 / (5 * a + 1), R = w * w * w * w, or = 1 - R, tr = R * a + 0.1 * or * or * Math.cbrt(5 * a), G = qr(o) / t[1], ar = 1.48 + Math.sqrt(G), Y = 0.725 / Math.pow(G, 0.2), I = Y, Z = [ + Math.pow(tr * B[0] * g / 100, 0.42), + Math.pow(tr * B[1] * d / 100, 0.42), + Math.pow(tr * B[2] * k / 100, 0.42) + ], z = [ + 400 * Z[0] / (Z[0] + 27.13), + 400 * Z[1] / (Z[1] + 27.13), + 400 * Z[2] / (Z[2] + 27.13) + ], ir = (2 * z[0] + z[1] + 0.05 * z[2]) * Y; + return new Ar(G, ir, Y, I, C, L, B, tr, Math.pow(tr, 0.25), ar); + } + /** + * Parameters are intermediate values of the CAM16 conversion process. Their + * names are shorthand for technical color science terminology, this class + * would not benefit from documenting them individually. A brief overview + * is available in the CAM16 specification, and a complete overview requires + * a color science textbook, such as Fairchild's Color Appearance Models. + */ + constructor(t, a, o, s, l, u, g, d, k, _) { + this.n = t, this.aw = a, this.nbb = o, this.ncb = s, this.c = l, this.nc = u, this.rgbD = g, this.fl = d, this.fLRoot = k, this.z = _; + } +} +Ar.DEFAULT = Ar.make(); +/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class Mr { + /** + * All of the CAM16 dimensions can be calculated from 3 of the dimensions, in + * the following combinations: + * - {j or q} and {c, m, or s} and hue + * - jstar, astar, bstar + * Prefer using a static method that constructs from 3 of those dimensions. + * This constructor is intended for those methods to use to return all + * possible dimensions. + * + * @param hue + * @param chroma informally, colorfulness / color intensity. like saturation + * in HSL, except perceptually accurate. + * @param j lightness + * @param q brightness; ratio of lightness to white point's lightness + * @param m colorfulness + * @param s saturation; ratio of chroma to white point's chroma + * @param jstar CAM16-UCS J coordinate + * @param astar CAM16-UCS a coordinate + * @param bstar CAM16-UCS b coordinate + */ + constructor(t, a, o, s, l, u, g, d, k) { + this.hue = t, this.chroma = a, this.j = o, this.q = s, this.m = l, this.s = u, this.jstar = g, this.astar = d, this.bstar = k; + } + /** + * CAM16 instances also have coordinates in the CAM16-UCS space, called J*, + * a*, b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16 + * specification, and is used to measure distances between colors. + */ + distance(t) { + const a = this.jstar - t.jstar, o = this.astar - t.astar, s = this.bstar - t.bstar, l = Math.sqrt(a * a + o * o + s * s); + return 1.41 * Math.pow(l, 0.63); + } + /** + * @param argb ARGB representation of a color. + * @return CAM16 color, assuming the color was viewed in default viewing + * conditions. + */ + static fromInt(t) { + return Mr.fromIntInViewingConditions(t, Ar.DEFAULT); + } + /** + * @param argb ARGB representation of a color. + * @param viewingConditions Information about the environment where the color + * was observed. + * @return CAM16 color. + */ + static fromIntInViewingConditions(t, a) { + const o = (t & 16711680) >> 16, s = (t & 65280) >> 8, l = t & 255, u = ft(o), g = ft(s), d = ft(l), k = 0.41233895 * u + 0.35762064 * g + 0.18051042 * d, _ = 0.2126 * u + 0.7152 * g + 0.0722 * d, C = 0.01932141 * u + 0.11916382 * g + 0.95034478 * d, O = 0.401288 * k + 0.650173 * _ - 0.051461 * C, L = -0.250268 * k + 1.204414 * _ + 0.045854 * C, B = -2079e-6 * k + 0.048952 * _ + 0.953127 * C, w = a.rgbD[0] * O, R = a.rgbD[1] * L, or = a.rgbD[2] * B, tr = Math.pow(a.fl * Math.abs(w) / 100, 0.42), G = Math.pow(a.fl * Math.abs(R) / 100, 0.42), ar = Math.pow(a.fl * Math.abs(or) / 100, 0.42), Y = mr(w) * 400 * tr / (tr + 27.13), I = mr(R) * 400 * G / (G + 27.13), Z = mr(or) * 400 * ar / (ar + 27.13), z = (11 * Y + -12 * I + Z) / 11, ir = (Y + I - 2 * Z) / 9, nr = (20 * Y + 20 * I + 21 * Z) / 20, Fr = (40 * Y + 20 * I + Z) / 20, $r = Math.atan2(ir, z) * 180 / Math.PI, kr = $r < 0 ? $r + 360 : $r >= 360 ? $r - 360 : $r, Jr = kr * Math.PI / 180, Zr = Fr * a.nbb, xr = 100 * Math.pow(Zr / a.aw, a.c * a.z), Ur = 4 / a.c * Math.sqrt(xr / 100) * (a.aw + 4) * a.fLRoot, gt = kr < 20.14 ? kr + 360 : kr, vt = 0.25 * (Math.cos(gt * Math.PI / 180 + 2) + 3.8), bt = 5e4 / 13 * vt * a.nc * a.ncb * Math.sqrt(z * z + ir * ir) / (nr + 0.305), Qr = Math.pow(bt, 0.9) * Math.pow(1.64 - Math.pow(0.29, a.n), 0.73), Xr = Qr * Math.sqrt(xr / 100), Ft = Xr * a.fLRoot, jt = 50 * Math.sqrt(Qr * a.c / (a.aw + 4)), Wt = (1 + 100 * 7e-3) * xr / (1 + 7e-3 * xr), xt = 1 / 0.0228 * Math.log(1 + 0.0228 * Ft), Ct = xt * Math.cos(Jr), Ht = xt * Math.sin(Jr); + return new Mr(kr, Xr, xr, Ur, Ft, jt, Wt, Ct, Ht); + } + /** + * @param j CAM16 lightness + * @param c CAM16 chroma + * @param h CAM16 hue + */ + static fromJch(t, a, o) { + return Mr.fromJchInViewingConditions(t, a, o, Ar.DEFAULT); + } + /** + * @param j CAM16 lightness + * @param c CAM16 chroma + * @param h CAM16 hue + * @param viewingConditions Information about the environment where the color + * was observed. + */ + static fromJchInViewingConditions(t, a, o, s) { + const l = 4 / s.c * Math.sqrt(t / 100) * (s.aw + 4) * s.fLRoot, u = a * s.fLRoot, g = a / Math.sqrt(t / 100), d = 50 * Math.sqrt(g * s.c / (s.aw + 4)), k = o * Math.PI / 180, _ = (1 + 100 * 7e-3) * t / (1 + 7e-3 * t), C = 1 / 0.0228 * Math.log(1 + 0.0228 * u), O = C * Math.cos(k), L = C * Math.sin(k); + return new Mr(o, a, t, l, u, d, _, O, L); + } + /** + * @param jstar CAM16-UCS lightness. + * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian + * coordinate on the Y axis. + * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian + * coordinate on the X axis. + */ + static fromUcs(t, a, o) { + return Mr.fromUcsInViewingConditions(t, a, o, Ar.DEFAULT); + } + /** + * @param jstar CAM16-UCS lightness. + * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian + * coordinate on the Y axis. + * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian + * coordinate on the X axis. + * @param viewingConditions Information about the environment where the color + * was observed. + */ + static fromUcsInViewingConditions(t, a, o, s) { + const l = a, u = o, g = Math.sqrt(l * l + u * u), k = (Math.exp(g * 0.0228) - 1) / 0.0228 / s.fLRoot; + let _ = Math.atan2(u, l) * (180 / Math.PI); + _ < 0 && (_ += 360); + const C = t / (1 - (t - 100) * 7e-3); + return Mr.fromJchInViewingConditions(C, k, _, s); + } + /** + * @return ARGB representation of color, assuming the color was viewed in + * default viewing conditions, which are near-identical to the default + * viewing conditions for sRGB. + */ + toInt() { + return this.viewed(Ar.DEFAULT); + } + /** + * @param viewingConditions Information about the environment where the color + * will be viewed. + * @return ARGB representation of color + */ + viewed(t) { + const a = this.chroma === 0 || this.j === 0 ? 0 : this.chroma / Math.sqrt(this.j / 100), o = Math.pow(a / Math.pow(1.64 - Math.pow(0.29, t.n), 0.73), 1 / 0.9), s = this.hue * Math.PI / 180, l = 0.25 * (Math.cos(s + 2) + 3.8), u = t.aw * Math.pow(this.j / 100, 1 / t.c / t.z), g = l * (5e4 / 13) * t.nc * t.ncb, d = u / t.nbb, k = Math.sin(s), _ = Math.cos(s), C = 23 * (d + 0.305) * o / (23 * g + 11 * o * _ + 108 * o * k), O = C * _, L = C * k, B = (460 * d + 451 * O + 288 * L) / 1403, w = (460 * d - 891 * O - 261 * L) / 1403, R = (460 * d - 220 * O - 6300 * L) / 1403, or = Math.max(0, 27.13 * Math.abs(B) / (400 - Math.abs(B))), tr = mr(B) * (100 / t.fl) * Math.pow(or, 1 / 0.42), G = Math.max(0, 27.13 * Math.abs(w) / (400 - Math.abs(w))), ar = mr(w) * (100 / t.fl) * Math.pow(G, 1 / 0.42), Y = Math.max(0, 27.13 * Math.abs(R) / (400 - Math.abs(R))), I = mr(R) * (100 / t.fl) * Math.pow(Y, 1 / 0.42), Z = tr / t.rgbD[0], z = ar / t.rgbD[1], ir = I / t.rgbD[2], nr = 1.86206786 * Z - 1.01125463 * z + 0.14918677 * ir, Fr = 0.38752654 * Z + 0.62144744 * z - 897398e-8 * ir, Ir = -0.0158415 * Z - 0.03412294 * z + 1.04996444 * ir; + return X1(nr, Fr, Ir); + } + /// Given color expressed in XYZ and viewed in [viewingConditions], convert to + /// CAM16. + static fromXyzInViewingConditions(t, a, o, s) { + const l = 0.401288 * t + 0.650173 * a - 0.051461 * o, u = -0.250268 * t + 1.204414 * a + 0.045854 * o, g = -2079e-6 * t + 0.048952 * a + 0.953127 * o, d = s.rgbD[0] * l, k = s.rgbD[1] * u, _ = s.rgbD[2] * g, C = Math.pow(s.fl * Math.abs(d) / 100, 0.42), O = Math.pow(s.fl * Math.abs(k) / 100, 0.42), L = Math.pow(s.fl * Math.abs(_) / 100, 0.42), B = mr(d) * 400 * C / (C + 27.13), w = mr(k) * 400 * O / (O + 27.13), R = mr(_) * 400 * L / (L + 27.13), or = (11 * B + -12 * w + R) / 11, tr = (B + w - 2 * R) / 9, G = (20 * B + 20 * w + 21 * R) / 20, ar = (40 * B + 20 * w + R) / 20, I = Math.atan2(tr, or) * 180 / Math.PI, Z = I < 0 ? I + 360 : I >= 360 ? I - 360 : I, z = Z * Math.PI / 180, ir = ar * s.nbb, nr = 100 * Math.pow(ir / s.aw, s.c * s.z), Fr = 4 / s.c * Math.sqrt(nr / 100) * (s.aw + 4) * s.fLRoot, Ir = Z < 20.14 ? Z + 360 : Z, $r = 1 / 4 * (Math.cos(Ir * Math.PI / 180 + 2) + 3.8), Jr = 5e4 / 13 * $r * s.nc * s.ncb * Math.sqrt(or * or + tr * tr) / (G + 0.305), Zr = Math.pow(Jr, 0.9) * Math.pow(1.64 - Math.pow(0.29, s.n), 0.73), xr = Zr * Math.sqrt(nr / 100), Ur = xr * s.fLRoot, gt = 50 * Math.sqrt(Zr * s.c / (s.aw + 4)), vt = (1 + 100 * 7e-3) * nr / (1 + 7e-3 * nr), dt = Math.log(1 + 0.0228 * Ur) / 0.0228, bt = dt * Math.cos(z), Qr = dt * Math.sin(z); + return new Mr(Z, xr, nr, Fr, Ur, gt, vt, bt, Qr); + } + /// XYZ representation of CAM16 seen in [viewingConditions]. + xyzInViewingConditions(t) { + const a = this.chroma === 0 || this.j === 0 ? 0 : this.chroma / Math.sqrt(this.j / 100), o = Math.pow(a / Math.pow(1.64 - Math.pow(0.29, t.n), 0.73), 1 / 0.9), s = this.hue * Math.PI / 180, l = 0.25 * (Math.cos(s + 2) + 3.8), u = t.aw * Math.pow(this.j / 100, 1 / t.c / t.z), g = l * (5e4 / 13) * t.nc * t.ncb, d = u / t.nbb, k = Math.sin(s), _ = Math.cos(s), C = 23 * (d + 0.305) * o / (23 * g + 11 * o * _ + 108 * o * k), O = C * _, L = C * k, B = (460 * d + 451 * O + 288 * L) / 1403, w = (460 * d - 891 * O - 261 * L) / 1403, R = (460 * d - 220 * O - 6300 * L) / 1403, or = Math.max(0, 27.13 * Math.abs(B) / (400 - Math.abs(B))), tr = mr(B) * (100 / t.fl) * Math.pow(or, 1 / 0.42), G = Math.max(0, 27.13 * Math.abs(w) / (400 - Math.abs(w))), ar = mr(w) * (100 / t.fl) * Math.pow(G, 1 / 0.42), Y = Math.max(0, 27.13 * Math.abs(R) / (400 - Math.abs(R))), I = mr(R) * (100 / t.fl) * Math.pow(Y, 1 / 0.42), Z = tr / t.rgbD[0], z = ar / t.rgbD[1], ir = I / t.rgbD[2], nr = 1.86206786 * Z - 1.01125463 * z + 0.14918677 * ir, Fr = 0.38752654 * Z + 0.62144744 * z - 897398e-8 * ir, Ir = -0.0158415 * Z - 0.03412294 * z + 1.04996444 * ir; + return [nr, Fr, Ir]; + } +} +/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class E { + /** + * Sanitizes a small enough angle in radians. + * + * @param angle An angle in radians; must not deviate too much + * from 0. + * @return A coterminal angle between 0 and 2pi. + */ + static sanitizeRadians(t) { + return (t + Math.PI * 8) % (Math.PI * 2); + } + /** + * Delinearizes an RGB component, returning a floating-point + * number. + * + * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents + * linear R/G/B channel + * @return 0.0 <= output <= 255.0, color channel converted to + * regular RGB space + */ + static trueDelinearized(t) { + const a = t / 100; + let o = 0; + return a <= 31308e-7 ? o = a * 12.92 : o = 1.055 * Math.pow(a, 1 / 2.4) - 0.055, o * 255; + } + static chromaticAdaptation(t) { + const a = Math.pow(Math.abs(t), 0.42); + return mr(t) * 400 * a / (a + 27.13); + } + /** + * Returns the hue of a linear RGB color in CAM16. + * + * @param linrgb The linear RGB coordinates of a color. + * @return The hue of the color in CAM16, in radians. + */ + static hueOf(t) { + const a = xe(t, E.SCALED_DISCOUNT_FROM_LINRGB), o = E.chromaticAdaptation(a[0]), s = E.chromaticAdaptation(a[1]), l = E.chromaticAdaptation(a[2]), u = (11 * o + -12 * s + l) / 11, g = (o + s - 2 * l) / 9; + return Math.atan2(g, u); + } + static areInCyclicOrder(t, a, o) { + const s = E.sanitizeRadians(a - t), l = E.sanitizeRadians(o - t); + return s < l; + } + /** + * Solves the lerp equation. + * + * @param source The starting number. + * @param mid The number in the middle. + * @param target The ending number. + * @return A number t such that lerp(source, target, t) = mid. + */ + static intercept(t, a, o) { + return (a - t) / (o - t); + } + static lerpPoint(t, a, o) { + return [ + t[0] + (o[0] - t[0]) * a, + t[1] + (o[1] - t[1]) * a, + t[2] + (o[2] - t[2]) * a + ]; + } + /** + * Intersects a segment with a plane. + * + * @param source The coordinates of point A. + * @param coordinate The R-, G-, or B-coordinate of the plane. + * @param target The coordinates of point B. + * @param axis The axis the plane is perpendicular with. (0: R, 1: + * G, 2: B) + * @return The intersection point of the segment AB with the plane + * R=coordinate, G=coordinate, or B=coordinate + */ + static setCoordinate(t, a, o, s) { + const l = E.intercept(t[s], a, o[s]); + return E.lerpPoint(t, l, o); + } + static isBounded(t) { + return 0 <= t && t <= 100; + } + /** + * Returns the nth possible vertex of the polygonal intersection. + * + * @param y The Y value of the plane. + * @param n The zero-based index of the point. 0 <= n <= 11. + * @return The nth possible vertex of the polygonal intersection + * of the y plane and the RGB cube, in linear RGB coordinates, if + * it exists. If this possible vertex lies outside of the cube, + * [-1.0, -1.0, -1.0] is returned. + */ + static nthVertex(t, a) { + const o = E.Y_FROM_LINRGB[0], s = E.Y_FROM_LINRGB[1], l = E.Y_FROM_LINRGB[2], u = a % 4 <= 1 ? 0 : 100, g = a % 2 === 0 ? 0 : 100; + if (a < 4) { + const d = u, k = g, _ = (t - d * s - k * l) / o; + return E.isBounded(_) ? [_, d, k] : [-1, -1, -1]; + } else if (a < 8) { + const d = u, k = g, _ = (t - k * o - d * l) / s; + return E.isBounded(_) ? [k, _, d] : [-1, -1, -1]; + } else { + const d = u, k = g, _ = (t - d * o - k * s) / l; + return E.isBounded(_) ? [d, k, _] : [-1, -1, -1]; + } + } + /** + * Finds the segment containing the desired color. + * + * @param y The Y value of the color. + * @param targetHue The hue of the color. + * @return A list of two sets of linear RGB coordinates, each + * corresponding to an endpoint of the segment containing the + * desired color. + */ + static bisectToSegment(t, a) { + let o = [-1, -1, -1], s = o, l = 0, u = 0, g = !1, d = !0; + for (let k = 0; k < 12; k++) { + const _ = E.nthVertex(t, k); + if (_[0] < 0) + continue; + const C = E.hueOf(_); + if (!g) { + o = _, s = _, l = C, u = C, g = !0; + continue; + } + (d || E.areInCyclicOrder(l, C, u)) && (d = !1, E.areInCyclicOrder(l, a, C) ? (s = _, u = C) : (o = _, l = C)); + } + return [o, s]; + } + static midpoint(t, a) { + return [ + (t[0] + a[0]) / 2, + (t[1] + a[1]) / 2, + (t[2] + a[2]) / 2 + ]; + } + static criticalPlaneBelow(t) { + return Math.floor(t - 0.5); + } + static criticalPlaneAbove(t) { + return Math.ceil(t - 0.5); + } + /** + * Finds a color with the given Y and hue on the boundary of the + * cube. + * + * @param y The Y value of the color. + * @param targetHue The hue of the color. + * @return The desired color, in linear RGB coordinates. + */ + static bisectToLimit(t, a) { + const o = E.bisectToSegment(t, a); + let s = o[0], l = E.hueOf(s), u = o[1]; + for (let g = 0; g < 3; g++) + if (s[g] !== u[g]) { + let d = -1, k = 255; + s[g] < u[g] ? (d = E.criticalPlaneBelow(E.trueDelinearized(s[g])), k = E.criticalPlaneAbove(E.trueDelinearized(u[g]))) : (d = E.criticalPlaneAbove(E.trueDelinearized(s[g])), k = E.criticalPlaneBelow(E.trueDelinearized(u[g]))); + for (let _ = 0; _ < 8 && !(Math.abs(k - d) <= 1); _++) { + const C = Math.floor((d + k) / 2), O = E.CRITICAL_PLANES[C], L = E.setCoordinate(s, O, u, g), B = E.hueOf(L); + E.areInCyclicOrder(l, a, B) ? (u = L, k = C) : (s = L, l = B, d = C); + } + } + return E.midpoint(s, u); + } + static inverseChromaticAdaptation(t) { + const a = Math.abs(t), o = Math.max(0, 27.13 * a / (400 - a)); + return mr(t) * Math.pow(o, 1 / 0.42); + } + /** + * Finds a color with the given hue, chroma, and Y. + * + * @param hueRadians The desired hue in radians. + * @param chroma The desired chroma. + * @param y The desired Y. + * @return The desired color as a hexadecimal integer, if found; 0 + * otherwise. + */ + static findResultByJ(t, a, o) { + let s = Math.sqrt(o) * 11; + const l = Ar.DEFAULT, u = 1 / Math.pow(1.64 - Math.pow(0.29, l.n), 0.73), d = 0.25 * (Math.cos(t + 2) + 3.8) * (5e4 / 13) * l.nc * l.ncb, k = Math.sin(t), _ = Math.cos(t); + for (let C = 0; C < 5; C++) { + const O = s / 100, L = a === 0 || s === 0 ? 0 : a / Math.sqrt(O), B = Math.pow(L * u, 1 / 0.9), R = l.aw * Math.pow(O, 1 / l.c / l.z) / l.nbb, or = 23 * (R + 0.305) * B / (23 * d + 11 * B * _ + 108 * B * k), tr = or * _, G = or * k, ar = (460 * R + 451 * tr + 288 * G) / 1403, Y = (460 * R - 891 * tr - 261 * G) / 1403, I = (460 * R - 220 * tr - 6300 * G) / 1403, Z = E.inverseChromaticAdaptation(ar), z = E.inverseChromaticAdaptation(Y), ir = E.inverseChromaticAdaptation(I), nr = xe([Z, z, ir], E.LINRGB_FROM_SCALED_DISCOUNT); + if (nr[0] < 0 || nr[1] < 0 || nr[2] < 0) + return 0; + const Fr = E.Y_FROM_LINRGB[0], Ir = E.Y_FROM_LINRGB[1], $r = E.Y_FROM_LINRGB[2], kr = Fr * nr[0] + Ir * nr[1] + $r * nr[2]; + if (kr <= 0) + return 0; + if (C === 4 || Math.abs(kr - o) < 2e-3) + return nr[0] > 100.01 || nr[1] > 100.01 || nr[2] > 100.01 ? 0 : vn(nr); + s = s - (kr - o) * s / (2 * kr); + } + return 0; + } + /** + * Finds an sRGB color with the given hue, chroma, and L*, if + * possible. + * + * @param hueDegrees The desired hue, in degrees. + * @param chroma The desired chroma. + * @param lstar The desired L*. + * @return A hexadecimal representing the sRGB color. The color + * has sufficiently close hue, chroma, and L* to the desired + * values, if possible; otherwise, the hue and L* will be + * sufficiently close, and chroma will be maximized. + */ + static solveToInt(t, a, o) { + if (a < 1e-4 || o < 1e-4 || o > 99.9999) + return rc(o); + t = H1(t); + const s = t / 180 * Math.PI, l = qr(o), u = E.findResultByJ(s, a, l); + if (u !== 0) + return u; + const g = E.bisectToLimit(l, s); + return vn(g); + } + /** + * Finds an sRGB color with the given hue, chroma, and L*, if + * possible. + * + * @param hueDegrees The desired hue, in degrees. + * @param chroma The desired chroma. + * @param lstar The desired L*. + * @return An CAM16 object representing the sRGB color. The color + * has sufficiently close hue, chroma, and L* to the desired + * values, if possible; otherwise, the hue and L* will be + * sufficiently close, and chroma will be maximized. + */ + static solveToCam(t, a, o) { + return Mr.fromInt(E.solveToInt(t, a, o)); + } +} +E.SCALED_DISCOUNT_FROM_LINRGB = [ + [ + 0.001200833568784504, + 0.002389694492170889, + 2795742885861124e-19 + ], + [ + 5891086651375999e-19, + 0.0029785502573438758, + 3270666104008398e-19 + ], + [ + 10146692491640572e-20, + 5364214359186694e-19, + 0.0032979401770712076 + ] +]; +E.LINRGB_FROM_SCALED_DISCOUNT = [ + [ + 1373.2198709594231, + -1100.4251190754821, + -7.278681089101213 + ], + [ + -271.815969077903, + 559.6580465940733, + -32.46047482791194 + ], + [ + 1.9622899599665666, + -57.173814538844006, + 308.7233197812385 + ] +]; +E.Y_FROM_LINRGB = [0.2126, 0.7152, 0.0722]; +E.CRITICAL_PLANES = [ + 0.015176349177441876, + 0.045529047532325624, + 0.07588174588720938, + 0.10623444424209313, + 0.13658714259697685, + 0.16693984095186062, + 0.19729253930674434, + 0.2276452376616281, + 0.2579979360165119, + 0.28835063437139563, + 0.3188300904430532, + 0.350925934958123, + 0.3848314933096426, + 0.42057480301049466, + 0.458183274052838, + 0.4976837250274023, + 0.5391024159806381, + 0.5824650784040898, + 0.6277969426914107, + 0.6751227633498623, + 0.7244668422128921, + 0.775853049866786, + 0.829304845476233, + 0.8848452951698498, + 0.942497089126609, + 1.0022825574869039, + 1.0642236851973577, + 1.1283421258858297, + 1.1946592148522128, + 1.2631959812511864, + 1.3339731595349034, + 1.407011200216447, + 1.4823302800086415, + 1.5599503113873272, + 1.6398909516233677, + 1.7221716113234105, + 1.8068114625156377, + 1.8938294463134073, + 1.9832442801866852, + 2.075074464868551, + 2.1693382909216234, + 2.2660538449872063, + 2.36523901573795, + 2.4669114995532007, + 2.5710888059345764, + 2.6777882626779785, + 2.7870270208169257, + 2.898822059350997, + 3.0131901897720907, + 3.1301480604002863, + 3.2497121605402226, + 3.3718988244681087, + 3.4967242352587946, + 3.624204428461639, + 3.754355295633311, + 3.887192587735158, + 4.022731918402185, + 4.160988767090289, + 4.301978482107941, + 4.445716283538092, + 4.592217266055746, + 4.741496401646282, + 4.893568542229298, + 5.048448422192488, + 5.20615066083972, + 5.3666897647573375, + 5.5300801301023865, + 5.696336044816294, + 5.865471690767354, + 6.037501145825082, + 6.212438385869475, + 6.390297286737924, + 6.571091626112461, + 6.7548350853498045, + 6.941541251256611, + 7.131223617812143, + 7.323895587840543, + 7.5195704746346665, + 7.7182615035334345, + 7.919981813454504, + 8.124744458384042, + 8.332562408825165, + 8.543448553206703, + 8.757415699253682, + 8.974476575321063, + 9.194643831691977, + 9.417930041841839, + 9.644347703669503, + 9.873909240696694, + 10.106627003236781, + 10.342513269534024, + 10.58158024687427, + 10.8238400726681, + 11.069304815507364, + 11.317986476196008, + 11.569896988756009, + 11.825048221409341, + 12.083451977536606, + 12.345119996613247, + 12.610063955123938, + 12.878295467455942, + 13.149826086772048, + 13.42466730586372, + 13.702830557985108, + 13.984327217668513, + 14.269168601521828, + 14.55736596900856, + 14.848930523210871, + 15.143873411576273, + 15.44220572664832, + 15.743938506781891, + 16.04908273684337, + 16.35764934889634, + 16.66964922287304, + 16.985093187232053, + 17.30399201960269, + 17.62635644741625, + 17.95219714852476, + 18.281524751807332, + 18.614349837764564, + 18.95068293910138, + 19.290534541298456, + 19.633915083172692, + 19.98083495742689, + 20.331304511189067, + 20.685334046541502, + 21.042933821039977, + 21.404114048223256, + 21.76888489811322, + 22.137256497705877, + 22.50923893145328, + 22.884842241736916, + 23.264076429332462, + 23.6469514538663, + 24.033477234264016, + 24.42366364919083, + 24.817520537484558, + 25.21505769858089, + 25.61628489293138, + 26.021211842414342, + 26.429848230738664, + 26.842203703840827, + 27.258287870275353, + 27.678110301598522, + 28.10168053274597, + 28.529008062403893, + 28.96010235337422, + 29.39497283293396, + 29.83362889318845, + 30.276079891419332, + 30.722335150426627, + 31.172403958865512, + 31.62629557157785, + 32.08401920991837, + 32.54558406207592, + 33.010999283389665, + 33.4802739966603, + 33.953417292456834, + 34.430438229418264, + 34.911345834551085, + 35.39614910352207, + 35.88485700094671, + 36.37747846067349, + 36.87402238606382, + 37.37449765026789, + 37.87891309649659, + 38.38727753828926, + 38.89959975977785, + 39.41588851594697, + 39.93615253289054, + 40.460400508064545, + 40.98864111053629, + 41.520882981230194, + 42.05713473317016, + 42.597404951718396, + 43.141702194811224, + 43.6900349931913, + 44.24241185063697, + 44.798841244188324, + 45.35933162437017, + 45.92389141541209, + 46.49252901546552, + 47.065252796817916, + 47.64207110610409, + 48.22299226451468, + 48.808024568002054, + 49.3971762874833, + 49.9904556690408, + 50.587870934119984, + 51.189430279724725, + 51.79514187861014, + 52.40501387947288, + 53.0190544071392, + 53.637271562750364, + 54.259673423945976, + 54.88626804504493, + 55.517063457223934, + 56.15206766869424, + 56.79128866487574, + 57.43473440856916, + 58.08241284012621, + 58.734331877617365, + 59.39049941699807, + 60.05092333227251, + 60.715611475655585, + 61.38457167773311, + 62.057811747619894, + 62.7353394731159, + 63.417162620860914, + 64.10328893648692, + 64.79372614476921, + 65.48848194977529, + 66.18756403501224, + 66.89098006357258, + 67.59873767827808, + 68.31084450182222, + 69.02730813691093, + 69.74813616640164, + 70.47333615344107, + 71.20291564160104, + 71.93688215501312, + 72.67524319850172, + 73.41800625771542, + 74.16517879925733, + 74.9167682708136, + 75.67278210128072, + 76.43322770089146, + 77.1981124613393, + 77.96744375590167, + 78.74122893956174, + 79.51947534912904, + 80.30219030335869, + 81.08938110306934, + 81.88105503125999, + 82.67721935322541, + 83.4778813166706, + 84.28304815182372, + 85.09272707154808, + 85.90692527145302, + 86.72564993000343, + 87.54890820862819, + 88.3767072518277, + 89.2090541872801, + 90.04595612594655, + 90.88742016217518, + 91.73345337380438, + 92.58406282226491, + 93.43925555268066, + 94.29903859396902, + 95.16341895893969, + 96.03240364439274, + 96.9059996312159, + 97.78421388448044, + 98.6670533535366, + 99.55452497210776 +]; +/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class Er { + static from(t, a, o) { + return new Er(E.solveToInt(t, a, o)); + } + /** + * @param argb ARGB representation of a color. + * @return HCT representation of a color in default viewing conditions + */ + static fromInt(t) { + return new Er(t); + } + toInt() { + return this.argb; + } + /** + * A number, in degrees, representing ex. red, orange, yellow, etc. + * Ranges from 0 <= hue < 360. + */ + get hue() { + return this.internalHue; + } + /** + * @param newHue 0 <= newHue < 360; invalid values are corrected. + * Chroma may decrease because chroma has a different maximum for any given + * hue and tone. + */ + set hue(t) { + this.setInternalState(E.solveToInt(t, this.internalChroma, this.internalTone)); + } + get chroma() { + return this.internalChroma; + } + /** + * @param newChroma 0 <= newChroma < ? + * Chroma may decrease because chroma has a different maximum for any given + * hue and tone. + */ + set chroma(t) { + this.setInternalState(E.solveToInt(this.internalHue, t, this.internalTone)); + } + /** Lightness. Ranges from 0 to 100. */ + get tone() { + return this.internalTone; + } + /** + * @param newTone 0 <= newTone <= 100; invalid valids are corrected. + * Chroma may decrease because chroma has a different maximum for any given + * hue and tone. + */ + set tone(t) { + this.setInternalState(E.solveToInt(this.internalHue, this.internalChroma, t)); + } + constructor(t) { + this.argb = t; + const a = Mr.fromInt(t); + this.internalHue = a.hue, this.internalChroma = a.chroma, this.internalTone = dn(t), this.argb = t; + } + setInternalState(t) { + const a = Mr.fromInt(t); + this.internalHue = a.hue, this.internalChroma = a.chroma, this.internalTone = dn(t), this.argb = t; + } + /** + * Translates a color into different [ViewingConditions]. + * + * Colors change appearance. They look different with lights on versus off, + * the same color, as in hex code, on white looks different when on black. + * This is called color relativity, most famously explicated by Josef Albers + * in Interaction of Color. + * + * In color science, color appearance models can account for this and + * calculate the appearance of a color in different settings. HCT is based on + * CAM16, a color appearance model, and uses it to make these calculations. + * + * See [ViewingConditions.make] for parameters affecting color appearance. + */ + inViewingConditions(t) { + const o = Mr.fromInt(this.toInt()).xyzInViewingConditions(t), s = Mr.fromXyzInViewingConditions(o[0], o[1], o[2], Ar.make()); + return Er.from(s.hue, s.chroma, Ce(o[1])); + } +} +/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class gr { + /** + * Returns a contrast ratio, which ranges from 1 to 21. + * + * @param toneA Tone between 0 and 100. Values outside will be clamped. + * @param toneB Tone between 0 and 100. Values outside will be clamped. + */ + static ratioOfTones(t, a) { + return t = qt(0, 100, t), a = qt(0, 100, a), gr.ratioOfYs(qr(t), qr(a)); + } + static ratioOfYs(t, a) { + const o = t > a ? t : a, s = o === a ? t : a; + return (o + 5) / (s + 5); + } + /** + * Returns a tone >= tone parameter that ensures ratio parameter. + * Return value is between 0 and 100. + * Returns -1 if ratio cannot be achieved with tone parameter. + * + * @param tone Tone return value must contrast with. + * Range is 0 to 100. Invalid values will result in -1 being returned. + * @param ratio Contrast ratio of return value and tone. + * Range is 1 to 21, invalid values have undefined behavior. + */ + static lighter(t, a) { + if (t < 0 || t > 100) + return -1; + const o = qr(t), s = a * (o + 5) - 5, l = gr.ratioOfYs(s, o), u = Math.abs(l - a); + if (l < a && u > 0.04) + return -1; + const g = Ce(s) + 0.4; + return g < 0 || g > 100 ? -1 : g; + } + /** + * Returns a tone <= tone parameter that ensures ratio parameter. + * Return value is between 0 and 100. + * Returns -1 if ratio cannot be achieved with tone parameter. + * + * @param tone Tone return value must contrast with. + * Range is 0 to 100. Invalid values will result in -1 being returned. + * @param ratio Contrast ratio of return value and tone. + * Range is 1 to 21, invalid values have undefined behavior. + */ + static darker(t, a) { + if (t < 0 || t > 100) + return -1; + const o = qr(t), s = (o + 5) / a - 5, l = gr.ratioOfYs(o, s), u = Math.abs(l - a); + if (l < a && u > 0.04) + return -1; + const g = Ce(s) - 0.4; + return g < 0 || g > 100 ? -1 : g; + } + /** + * Returns a tone >= tone parameter that ensures ratio parameter. + * Return value is between 0 and 100. + * Returns 100 if ratio cannot be achieved with tone parameter. + * + * This method is unsafe because the returned value is guaranteed to be in + * bounds for tone, i.e. between 0 and 100. However, that value may not reach + * the ratio with tone. For example, there is no color lighter than T100. + * + * @param tone Tone return value must contrast with. + * Range is 0 to 100. Invalid values will result in 100 being returned. + * @param ratio Desired contrast ratio of return value and tone parameter. + * Range is 1 to 21, invalid values have undefined behavior. + */ + static lighterUnsafe(t, a) { + const o = gr.lighter(t, a); + return o < 0 ? 100 : o; + } + /** + * Returns a tone >= tone parameter that ensures ratio parameter. + * Return value is between 0 and 100. + * Returns 100 if ratio cannot be achieved with tone parameter. + * + * This method is unsafe because the returned value is guaranteed to be in + * bounds for tone, i.e. between 0 and 100. However, that value may not reach + * the [ratio with [tone]. For example, there is no color darker than T0. + * + * @param tone Tone return value must contrast with. + * Range is 0 to 100. Invalid values will result in 0 being returned. + * @param ratio Desired contrast ratio of return value and tone parameter. + * Range is 1 to 21, invalid values have undefined behavior. + */ + static darkerUnsafe(t, a) { + const o = gr.darker(t, a); + return o < 0 ? 0 : o; + } +} +/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class Re { + /** + * Returns true if a color is disliked. + * + * @param hct A color to be judged. + * @return Whether the color is disliked. + * + * Disliked is defined as a dark yellow-green that is not neutral. + */ + static isDisliked(t) { + const a = Math.round(t.hue) >= 90 && Math.round(t.hue) <= 111, o = Math.round(t.chroma) > 16, s = Math.round(t.tone) < 65; + return a && o && s; + } + /** + * If a color is disliked, lighten it to make it likable. + * + * @param hct A color to be judged. + * @return A new color if the original color is disliked, or the original + * color if it is acceptable. + */ + static fixIfDisliked(t) { + return Re.isDisliked(t) ? Er.from(t.hue, t.chroma, 70) : t; + } +} +/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class F { + /** + * Create a DynamicColor defined by a TonalPalette and HCT tone. + * + * @param args Functions with DynamicScheme as input. Must provide a palette + * and tone. May provide a background DynamicColor and ToneDeltaConstraint. + */ + static fromPalette(t) { + return new F(t.name ?? "", t.palette, t.tone, t.isBackground ?? !1, t.background, t.secondBackground, t.contrastCurve, t.toneDeltaPair); + } + /** + * The base constructor for DynamicColor. + * + * _Strongly_ prefer using one of the convenience constructors. This class is + * arguably too flexible to ensure it can support any scenario. Functional + * arguments allow overriding without risks that come with subclasses. + * + * For example, the default behavior of adjust tone at max contrast + * to be at a 7.0 ratio with its background is principled and + * matches accessibility guidance. That does not mean it's the desired + * approach for _every_ design system, and every color pairing, + * always, in every case. + * + * @param name The name of the dynamic color. Defaults to empty. + * @param palette Function that provides a TonalPalette given + * DynamicScheme. A TonalPalette is defined by a hue and chroma, so this + * replaces the need to specify hue/chroma. By providing a tonal palette, when + * contrast adjustments are made, intended chroma can be preserved. + * @param tone Function that provides a tone, given a DynamicScheme. + * @param isBackground Whether this dynamic color is a background, with + * some other color as the foreground. Defaults to false. + * @param background The background of the dynamic color (as a function of a + * `DynamicScheme`), if it exists. + * @param secondBackground A second background of the dynamic color (as a + * function of a `DynamicScheme`), if it + * exists. + * @param contrastCurve A `ContrastCurve` object specifying how its contrast + * against its background should behave in various contrast levels options. + * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta + * constraint between two colors. One of them must be the color being + * constructed. + */ + constructor(t, a, o, s, l, u, g, d) { + if (this.name = t, this.palette = a, this.tone = o, this.isBackground = s, this.background = l, this.secondBackground = u, this.contrastCurve = g, this.toneDeltaPair = d, this.hctCache = /* @__PURE__ */ new Map(), !l && u) + throw new Error(`Color ${t} has secondBackgrounddefined, but background is not defined.`); + if (!l && g) + throw new Error(`Color ${t} has contrastCurvedefined, but background is not defined.`); + if (l && !g) + throw new Error(`Color ${t} has backgrounddefined, but contrastCurve is not defined.`); + } + /** + * Return a ARGB integer (i.e. a hex code). + * + * @param scheme Defines the conditions of the user interface, for example, + * whether or not it is dark mode or light mode, and what the desired + * contrast level is. + */ + getArgb(t) { + return this.getHct(t).toInt(); + } + /** + * Return a color, expressed in the HCT color space, that this + * DynamicColor is under the conditions in scheme. + * + * @param scheme Defines the conditions of the user interface, for example, + * whether or not it is dark mode or light mode, and what the desired + * contrast level is. + */ + getHct(t) { + const a = this.hctCache.get(t); + if (a != null) + return a; + const o = this.getTone(t), s = this.palette(t).getHct(o); + return this.hctCache.size > 4 && this.hctCache.clear(), this.hctCache.set(t, s), s; + } + /** + * Return a tone, T in the HCT color space, that this DynamicColor is under + * the conditions in scheme. + * + * @param scheme Defines the conditions of the user interface, for example, + * whether or not it is dark mode or light mode, and what the desired + * contrast level is. + */ + getTone(t) { + const a = t.contrastLevel < 0; + if (this.toneDeltaPair) { + const o = this.toneDeltaPair(t), s = o.roleA, l = o.roleB, u = o.delta, g = o.polarity, d = o.stayTogether, _ = this.background(t).getTone(t), C = g === "nearer" || g === "lighter" && !t.isDark || g === "darker" && t.isDark, O = C ? s : l, L = C ? l : s, B = this.name === O.name, w = t.isDark ? 1 : -1, R = O.contrastCurve.getContrast(t.contrastLevel), or = L.contrastCurve.getContrast(t.contrastLevel), tr = O.tone(t); + let G = gr.ratioOfTones(_, tr) >= R ? tr : F.foregroundTone(_, R); + const ar = L.tone(t); + let Y = gr.ratioOfTones(_, ar) >= or ? ar : F.foregroundTone(_, or); + return a && (G = F.foregroundTone(_, R), Y = F.foregroundTone(_, or)), (Y - G) * w >= u || (Y = qt(0, 100, G + u * w), (Y - G) * w >= u || (G = qt(0, 100, Y - u * w))), 50 <= G && G < 60 ? w > 0 ? (G = 60, Y = Math.max(Y, G + u * w)) : (G = 49, Y = Math.min(Y, G + u * w)) : 50 <= Y && Y < 60 && (d ? w > 0 ? (G = 60, Y = Math.max(Y, G + u * w)) : (G = 49, Y = Math.min(Y, G + u * w)) : w > 0 ? Y = 60 : Y = 49), B ? G : Y; + } else { + let o = this.tone(t); + if (this.background == null) + return o; + const s = this.background(t).getTone(t), l = this.contrastCurve.getContrast(t.contrastLevel); + if (gr.ratioOfTones(s, o) >= l || (o = F.foregroundTone(s, l)), a && (o = F.foregroundTone(s, l)), this.isBackground && 50 <= o && o < 60 && (gr.ratioOfTones(49, s) >= l ? o = 49 : o = 60), this.secondBackground) { + const [u, g] = [this.background, this.secondBackground], [d, k] = [u(t).getTone(t), g(t).getTone(t)], [_, C] = [Math.max(d, k), Math.min(d, k)]; + if (gr.ratioOfTones(_, o) >= l && gr.ratioOfTones(C, o) >= l) + return o; + const O = gr.lighter(_, l), L = gr.darker(C, l), B = []; + return O !== -1 && B.push(O), L !== -1 && B.push(L), F.tonePrefersLightForeground(d) || F.tonePrefersLightForeground(k) ? O < 0 ? 100 : O : B.length === 1 ? B[0] : L < 0 ? 0 : L; + } + return o; + } + } + /** + * Given a background tone, find a foreground tone, while ensuring they reach + * a contrast ratio that is as close to [ratio] as possible. + * + * @param bgTone Tone in HCT. Range is 0 to 100, undefined behavior when it + * falls outside that range. + * @param ratio The contrast ratio desired between bgTone and the return + * value. + */ + static foregroundTone(t, a) { + const o = gr.lighterUnsafe(t, a), s = gr.darkerUnsafe(t, a), l = gr.ratioOfTones(o, t), u = gr.ratioOfTones(s, t); + if (F.tonePrefersLightForeground(t)) { + const d = Math.abs(l - u) < 0.1 && l < a && u < a; + return l >= a || l >= u || d ? o : s; + } else + return u >= a || u >= l ? s : o; + } + /** + * Returns whether [tone] prefers a light foreground. + * + * People prefer white foregrounds on ~T60-70. Observed over time, and also + * by Andrew Somers during research for APCA. + * + * T60 used as to create the smallest discontinuity possible when skipping + * down to T49 in order to ensure light foregrounds. + * Since `tertiaryContainer` in dark monochrome scheme requires a tone of + * 60, it should not be adjusted. Therefore, 60 is excluded here. + */ + static tonePrefersLightForeground(t) { + return Math.round(t) < 60; + } + /** + * Returns whether [tone] can reach a contrast ratio of 4.5 with a lighter + * color. + */ + static toneAllowsLightForeground(t) { + return Math.round(t) <= 49; + } + /** + * Adjust a tone such that white has 4.5 contrast, if the tone is + * reasonably close to supporting it. + */ + static enableLightForeground(t) { + return F.tonePrefersLightForeground(t) && !F.toneAllowsLightForeground(t) ? 49 : t; + } +} +/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var Pt; +(function(r) { + r[r.MONOCHROME = 0] = "MONOCHROME", r[r.NEUTRAL = 1] = "NEUTRAL", r[r.TONAL_SPOT = 2] = "TONAL_SPOT", r[r.VIBRANT = 3] = "VIBRANT", r[r.EXPRESSIVE = 4] = "EXPRESSIVE", r[r.FIDELITY = 5] = "FIDELITY", r[r.CONTENT = 6] = "CONTENT", r[r.RAINBOW = 7] = "RAINBOW", r[r.FRUIT_SALAD = 8] = "FRUIT_SALAD"; +})(Pt || (Pt = {})); +/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class W { + /** + * Creates a `ContrastCurve` object. + * + * @param low Contrast requirement for contrast level -1.0 + * @param normal Contrast requirement for contrast level 0.0 + * @param medium Contrast requirement for contrast level 0.5 + * @param high Contrast requirement for contrast level 1.0 + */ + constructor(t, a, o, s) { + this.low = t, this.normal = a, this.medium = o, this.high = s; + } + /** + * Returns the contrast ratio at a given contrast level. + * + * @param contrastLevel The contrast level. 0.0 is the default (normal); + * -1.0 is the lowest; 1.0 is the highest. + * @return The contrast ratio, a number between 1.0 and 21.0. + */ + getContrast(t) { + return t <= -1 ? this.low : t < 0 ? wt(this.low, this.normal, (t - -1) / 1) : t < 0.5 ? wt(this.normal, this.medium, (t - 0) / 0.5) : t < 1 ? wt(this.medium, this.high, (t - 0.5) / 0.5) : this.high; + } +} +/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class yr { + /** + * Documents a constraint in tone distance between two DynamicColors. + * + * The polarity is an adjective that describes "A", compared to "B". + * + * For instance, ToneDeltaPair(A, B, 15, 'darker', stayTogether) states that + * A's tone should be at least 15 darker than B's. + * + * 'nearer' and 'farther' describes closeness to the surface roles. For + * instance, ToneDeltaPair(A, B, 10, 'nearer', stayTogether) states that A + * should be 10 lighter than B in light mode, and 10 darker than B in dark + * mode. + * + * @param roleA The first role in a pair. + * @param roleB The second role in a pair. + * @param delta Required difference between tones. Absolute value, negative + * values have undefined behavior. + * @param polarity The relative relation between tones of roleA and roleB, + * as described above. + * @param stayTogether Whether these two roles should stay on the same side of + * the "awkward zone" (T50-59). This is necessary for certain cases where + * one role has two backgrounds. + */ + constructor(t, a, o, s, l) { + this.roleA = t, this.roleB = a, this.delta = o, this.polarity = s, this.stayTogether = l; + } +} +/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function ht(r) { + return r.variant === Pt.FIDELITY || r.variant === Pt.CONTENT; +} +function cr(r) { + return r.variant === Pt.MONOCHROME; +} +function ac(r, t, a, o) { + let s = a, l = Er.from(r, t, a); + if (l.chroma < t) { + let u = l.chroma; + for (; l.chroma < t; ) { + s += o ? -1 : 1; + const g = Er.from(r, t, s); + if (u > g.chroma || Math.abs(g.chroma - t) < 0.4) + break; + const d = Math.abs(g.chroma - t), k = Math.abs(l.chroma - t); + d < k && (l = g), u = Math.max(u, g.chroma); + } + } + return s; +} +function nc(r) { + return Ar.make( + /*whitePoint=*/ + void 0, + /*adaptingLuminance=*/ + void 0, + /*backgroundLstar=*/ + r.isDark ? 30 : 80, + /*surround=*/ + void 0, + /*discountingIlluminant=*/ + void 0 + ); +} +function Be(r, t) { + const a = r.inViewingConditions(nc(t)); + return F.tonePrefersLightForeground(r.tone) && !F.toneAllowsLightForeground(a.tone) ? F.enableLightForeground(r.tone) : F.enableLightForeground(a.tone); +} +class m { + static highestSurface(t) { + return t.isDark ? m.surfaceBright : m.surfaceDim; + } +} +m.contentAccentToneDelta = 15; +m.primaryPaletteKeyColor = F.fromPalette({ + name: "primary_palette_key_color", + palette: (r) => r.primaryPalette, + tone: (r) => r.primaryPalette.keyColor.tone +}); +m.secondaryPaletteKeyColor = F.fromPalette({ + name: "secondary_palette_key_color", + palette: (r) => r.secondaryPalette, + tone: (r) => r.secondaryPalette.keyColor.tone +}); +m.tertiaryPaletteKeyColor = F.fromPalette({ + name: "tertiary_palette_key_color", + palette: (r) => r.tertiaryPalette, + tone: (r) => r.tertiaryPalette.keyColor.tone +}); +m.neutralPaletteKeyColor = F.fromPalette({ + name: "neutral_palette_key_color", + palette: (r) => r.neutralPalette, + tone: (r) => r.neutralPalette.keyColor.tone +}); +m.neutralVariantPaletteKeyColor = F.fromPalette({ + name: "neutral_variant_palette_key_color", + palette: (r) => r.neutralVariantPalette, + tone: (r) => r.neutralVariantPalette.keyColor.tone +}); +m.background = F.fromPalette({ + name: "background", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 6 : 98, + isBackground: !0 +}); +m.onBackground = F.fromPalette({ + name: "on_background", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 90 : 10, + background: (r) => m.background, + contrastCurve: new W(3, 3, 4.5, 7) +}); +m.surface = F.fromPalette({ + name: "surface", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 6 : 98, + isBackground: !0 +}); +m.surfaceDim = F.fromPalette({ + name: "surface_dim", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 6 : 87, + isBackground: !0 +}); +m.surfaceBright = F.fromPalette({ + name: "surface_bright", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 24 : 98, + isBackground: !0 +}); +m.surfaceContainerLowest = F.fromPalette({ + name: "surface_container_lowest", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 4 : 100, + isBackground: !0 +}); +m.surfaceContainerLow = F.fromPalette({ + name: "surface_container_low", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 10 : 96, + isBackground: !0 +}); +m.surfaceContainer = F.fromPalette({ + name: "surface_container", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 12 : 94, + isBackground: !0 +}); +m.surfaceContainerHigh = F.fromPalette({ + name: "surface_container_high", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 17 : 92, + isBackground: !0 +}); +m.surfaceContainerHighest = F.fromPalette({ + name: "surface_container_highest", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 22 : 90, + isBackground: !0 +}); +m.onSurface = F.fromPalette({ + name: "on_surface", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 90 : 10, + background: (r) => m.highestSurface(r), + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.surfaceVariant = F.fromPalette({ + name: "surface_variant", + palette: (r) => r.neutralVariantPalette, + tone: (r) => r.isDark ? 30 : 90, + isBackground: !0 +}); +m.onSurfaceVariant = F.fromPalette({ + name: "on_surface_variant", + palette: (r) => r.neutralVariantPalette, + tone: (r) => r.isDark ? 80 : 30, + background: (r) => m.highestSurface(r), + contrastCurve: new W(3, 4.5, 7, 11) +}); +m.inverseSurface = F.fromPalette({ + name: "inverse_surface", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 90 : 20 +}); +m.inverseOnSurface = F.fromPalette({ + name: "inverse_on_surface", + palette: (r) => r.neutralPalette, + tone: (r) => r.isDark ? 20 : 95, + background: (r) => m.inverseSurface, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.outline = F.fromPalette({ + name: "outline", + palette: (r) => r.neutralVariantPalette, + tone: (r) => r.isDark ? 60 : 50, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1.5, 3, 4.5, 7) +}); +m.outlineVariant = F.fromPalette({ + name: "outline_variant", + palette: (r) => r.neutralVariantPalette, + tone: (r) => r.isDark ? 30 : 80, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7) +}); +m.shadow = F.fromPalette({ + name: "shadow", + palette: (r) => r.neutralPalette, + tone: (r) => 0 +}); +m.scrim = F.fromPalette({ + name: "scrim", + palette: (r) => r.neutralPalette, + tone: (r) => 0 +}); +m.surfaceTint = F.fromPalette({ + name: "surface_tint", + palette: (r) => r.primaryPalette, + tone: (r) => r.isDark ? 80 : 40, + isBackground: !0 +}); +m.primary = F.fromPalette({ + name: "primary", + palette: (r) => r.primaryPalette, + tone: (r) => cr(r) ? r.isDark ? 100 : 0 : r.isDark ? 80 : 40, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(3, 4.5, 7, 11), + toneDeltaPair: (r) => new yr(m.primaryContainer, m.primary, 15, "nearer", !1) +}); +m.onPrimary = F.fromPalette({ + name: "on_primary", + palette: (r) => r.primaryPalette, + tone: (r) => cr(r) ? r.isDark ? 10 : 90 : r.isDark ? 20 : 100, + background: (r) => m.primary, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.primaryContainer = F.fromPalette({ + name: "primary_container", + palette: (r) => r.primaryPalette, + tone: (r) => ht(r) ? Be(r.sourceColorHct, r) : cr(r) ? r.isDark ? 85 : 25 : r.isDark ? 30 : 90, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.primaryContainer, m.primary, 15, "nearer", !1) +}); +m.onPrimaryContainer = F.fromPalette({ + name: "on_primary_container", + palette: (r) => r.primaryPalette, + tone: (r) => ht(r) ? F.foregroundTone(m.primaryContainer.tone(r), 4.5) : cr(r) ? r.isDark ? 0 : 100 : r.isDark ? 90 : 10, + background: (r) => m.primaryContainer, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.inversePrimary = F.fromPalette({ + name: "inverse_primary", + palette: (r) => r.primaryPalette, + tone: (r) => r.isDark ? 40 : 80, + background: (r) => m.inverseSurface, + contrastCurve: new W(3, 4.5, 7, 11) +}); +m.secondary = F.fromPalette({ + name: "secondary", + palette: (r) => r.secondaryPalette, + tone: (r) => r.isDark ? 80 : 40, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(3, 4.5, 7, 11), + toneDeltaPair: (r) => new yr(m.secondaryContainer, m.secondary, 15, "nearer", !1) +}); +m.onSecondary = F.fromPalette({ + name: "on_secondary", + palette: (r) => r.secondaryPalette, + tone: (r) => cr(r) ? r.isDark ? 10 : 100 : r.isDark ? 20 : 100, + background: (r) => m.secondary, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.secondaryContainer = F.fromPalette({ + name: "secondary_container", + palette: (r) => r.secondaryPalette, + tone: (r) => { + const t = r.isDark ? 30 : 90; + if (cr(r)) + return r.isDark ? 30 : 85; + if (!ht(r)) + return t; + let a = ac(r.secondaryPalette.hue, r.secondaryPalette.chroma, t, !r.isDark); + return a = Be(r.secondaryPalette.getHct(a), r), a; + }, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.secondaryContainer, m.secondary, 15, "nearer", !1) +}); +m.onSecondaryContainer = F.fromPalette({ + name: "on_secondary_container", + palette: (r) => r.secondaryPalette, + tone: (r) => ht(r) ? F.foregroundTone(m.secondaryContainer.tone(r), 4.5) : r.isDark ? 90 : 10, + background: (r) => m.secondaryContainer, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.tertiary = F.fromPalette({ + name: "tertiary", + palette: (r) => r.tertiaryPalette, + tone: (r) => cr(r) ? r.isDark ? 90 : 25 : r.isDark ? 80 : 40, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(3, 4.5, 7, 11), + toneDeltaPair: (r) => new yr(m.tertiaryContainer, m.tertiary, 15, "nearer", !1) +}); +m.onTertiary = F.fromPalette({ + name: "on_tertiary", + palette: (r) => r.tertiaryPalette, + tone: (r) => cr(r) ? r.isDark ? 10 : 90 : r.isDark ? 20 : 100, + background: (r) => m.tertiary, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.tertiaryContainer = F.fromPalette({ + name: "tertiary_container", + palette: (r) => r.tertiaryPalette, + tone: (r) => { + if (cr(r)) + return r.isDark ? 60 : 49; + if (!ht(r)) + return r.isDark ? 30 : 90; + const t = Be(r.tertiaryPalette.getHct(r.sourceColorHct.tone), r), a = r.tertiaryPalette.getHct(t); + return Re.fixIfDisliked(a).tone; + }, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.tertiaryContainer, m.tertiary, 15, "nearer", !1) +}); +m.onTertiaryContainer = F.fromPalette({ + name: "on_tertiary_container", + palette: (r) => r.tertiaryPalette, + tone: (r) => cr(r) ? r.isDark ? 0 : 100 : ht(r) ? F.foregroundTone(m.tertiaryContainer.tone(r), 4.5) : r.isDark ? 90 : 10, + background: (r) => m.tertiaryContainer, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.error = F.fromPalette({ + name: "error", + palette: (r) => r.errorPalette, + tone: (r) => r.isDark ? 80 : 40, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(3, 4.5, 7, 11), + toneDeltaPair: (r) => new yr(m.errorContainer, m.error, 15, "nearer", !1) +}); +m.onError = F.fromPalette({ + name: "on_error", + palette: (r) => r.errorPalette, + tone: (r) => r.isDark ? 20 : 100, + background: (r) => m.error, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.errorContainer = F.fromPalette({ + name: "error_container", + palette: (r) => r.errorPalette, + tone: (r) => r.isDark ? 30 : 90, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.errorContainer, m.error, 15, "nearer", !1) +}); +m.onErrorContainer = F.fromPalette({ + name: "on_error_container", + palette: (r) => r.errorPalette, + tone: (r) => r.isDark ? 90 : 10, + background: (r) => m.errorContainer, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.primaryFixed = F.fromPalette({ + name: "primary_fixed", + palette: (r) => r.primaryPalette, + tone: (r) => cr(r) ? 40 : 90, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.primaryFixed, m.primaryFixedDim, 10, "lighter", !0) +}); +m.primaryFixedDim = F.fromPalette({ + name: "primary_fixed_dim", + palette: (r) => r.primaryPalette, + tone: (r) => cr(r) ? 30 : 80, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.primaryFixed, m.primaryFixedDim, 10, "lighter", !0) +}); +m.onPrimaryFixed = F.fromPalette({ + name: "on_primary_fixed", + palette: (r) => r.primaryPalette, + tone: (r) => cr(r) ? 100 : 10, + background: (r) => m.primaryFixedDim, + secondBackground: (r) => m.primaryFixed, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.onPrimaryFixedVariant = F.fromPalette({ + name: "on_primary_fixed_variant", + palette: (r) => r.primaryPalette, + tone: (r) => cr(r) ? 90 : 30, + background: (r) => m.primaryFixedDim, + secondBackground: (r) => m.primaryFixed, + contrastCurve: new W(3, 4.5, 7, 11) +}); +m.secondaryFixed = F.fromPalette({ + name: "secondary_fixed", + palette: (r) => r.secondaryPalette, + tone: (r) => cr(r) ? 80 : 90, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.secondaryFixed, m.secondaryFixedDim, 10, "lighter", !0) +}); +m.secondaryFixedDim = F.fromPalette({ + name: "secondary_fixed_dim", + palette: (r) => r.secondaryPalette, + tone: (r) => cr(r) ? 70 : 80, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.secondaryFixed, m.secondaryFixedDim, 10, "lighter", !0) +}); +m.onSecondaryFixed = F.fromPalette({ + name: "on_secondary_fixed", + palette: (r) => r.secondaryPalette, + tone: (r) => 10, + background: (r) => m.secondaryFixedDim, + secondBackground: (r) => m.secondaryFixed, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.onSecondaryFixedVariant = F.fromPalette({ + name: "on_secondary_fixed_variant", + palette: (r) => r.secondaryPalette, + tone: (r) => cr(r) ? 25 : 30, + background: (r) => m.secondaryFixedDim, + secondBackground: (r) => m.secondaryFixed, + contrastCurve: new W(3, 4.5, 7, 11) +}); +m.tertiaryFixed = F.fromPalette({ + name: "tertiary_fixed", + palette: (r) => r.tertiaryPalette, + tone: (r) => cr(r) ? 40 : 90, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.tertiaryFixed, m.tertiaryFixedDim, 10, "lighter", !0) +}); +m.tertiaryFixedDim = F.fromPalette({ + name: "tertiary_fixed_dim", + palette: (r) => r.tertiaryPalette, + tone: (r) => cr(r) ? 30 : 80, + isBackground: !0, + background: (r) => m.highestSurface(r), + contrastCurve: new W(1, 1, 3, 7), + toneDeltaPair: (r) => new yr(m.tertiaryFixed, m.tertiaryFixedDim, 10, "lighter", !0) +}); +m.onTertiaryFixed = F.fromPalette({ + name: "on_tertiary_fixed", + palette: (r) => r.tertiaryPalette, + tone: (r) => cr(r) ? 100 : 10, + background: (r) => m.tertiaryFixedDim, + secondBackground: (r) => m.tertiaryFixed, + contrastCurve: new W(4.5, 7, 11, 21) +}); +m.onTertiaryFixedVariant = F.fromPalette({ + name: "on_tertiary_fixed_variant", + palette: (r) => r.tertiaryPalette, + tone: (r) => cr(r) ? 90 : 30, + background: (r) => m.tertiaryFixedDim, + secondBackground: (r) => m.tertiaryFixed, + contrastCurve: new W(3, 4.5, 7, 11) +}); +/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function oc(r) { + const t = wn(r), a = Mn(r), o = Pn(r), s = [t.toString(16), a.toString(16), o.toString(16)]; + for (const [l, u] of s.entries()) + u.length === 1 && (s[l] = "0" + u); + return "#" + s.join(""); +} +function $n(r) { + r = r.replace("#", ""); + const t = r.length === 3, a = r.length === 6, o = r.length === 8; + if (!t && !a && !o) + throw new Error("unexpected hex " + r); + let s = 0, l = 0, u = 0; + return t ? (s = Rr(r.slice(0, 1).repeat(2)), l = Rr(r.slice(1, 2).repeat(2)), u = Rr(r.slice(2, 3).repeat(2))) : a ? (s = Rr(r.slice(0, 2)), l = Rr(r.slice(2, 4)), u = Rr(r.slice(4, 6))) : o && (s = Rr(r.slice(2, 4)), l = Rr(r.slice(4, 6)), u = Rr(r.slice(6, 8))), (255 << 24 | (s & 255) << 16 | (l & 255) << 8 | u & 255) >>> 0; +} +function Rr(r) { + return parseInt(r, 16); +} +var sc = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; +function Le(r) { + return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, "default") ? r.default : r; +} +var Fn = { exports: {} }; +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ +(function(r, t) { + (function(a, o) { + r.exports = o(); + })(sc, function() { + for (var a = function(e, n, c) { + return n === void 0 && (n = 0), c === void 0 && (c = 1), e < n ? n : e > c ? c : e; + }, o = a, s = function(e) { + e._clipped = !1, e._unclipped = e.slice(0); + for (var n = 0; n <= 3; n++) + n < 3 ? ((e[n] < 0 || e[n] > 255) && (e._clipped = !0), e[n] = o(e[n], 0, 255)) : n === 3 && (e[n] = o(e[n], 0, 1)); + return e; + }, l = {}, u = 0, g = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Undefined", "Null"]; u < g.length; u += 1) { + var d = g[u]; + l["[object " + d + "]"] = d.toLowerCase(); + } + var k = function(e) { + return l[Object.prototype.toString.call(e)] || "object"; + }, _ = k, C = function(e, n) { + return n === void 0 && (n = null), e.length >= 3 ? Array.prototype.slice.call(e) : _(e[0]) == "object" && n ? n.split("").filter(function(c) { + return e[0][c] !== void 0; + }).map(function(c) { + return e[0][c]; + }) : e[0]; + }, O = k, L = function(e) { + if (e.length < 2) + return null; + var n = e.length - 1; + return O(e[n]) == "string" ? e[n].toLowerCase() : null; + }, B = Math.PI, w = { + clip_rgb: s, + limit: a, + type: k, + unpack: C, + last: L, + PI: B, + TWOPI: B * 2, + PITHIRD: B / 3, + DEG2RAD: B / 180, + RAD2DEG: 180 / B + }, R = { + format: {}, + autodetect: [] + }, or = w.last, tr = w.clip_rgb, G = w.type, ar = R, Y = function() { + for (var n = [], c = arguments.length; c--; ) + n[c] = arguments[c]; + var i = this; + if (G(n[0]) === "object" && n[0].constructor && n[0].constructor === this.constructor) + return n[0]; + var h = or(n), v = !1; + if (!h) { + v = !0, ar.sorted || (ar.autodetect = ar.autodetect.sort(function(M, x) { + return x.p - M.p; + }), ar.sorted = !0); + for (var f = 0, b = ar.autodetect; f < b.length; f += 1) { + var p = b[f]; + if (h = p.test.apply(p, n), h) + break; + } + } + if (ar.format[h]) { + var y = ar.format[h].apply(null, v ? n : n.slice(0, -1)); + i._rgb = tr(y); + } else + throw new Error("unknown format: " + n); + i._rgb.length === 3 && i._rgb.push(1); + }; + Y.prototype.toString = function() { + return G(this.hex) == "function" ? this.hex() : "[" + this._rgb.join(",") + "]"; + }; + var I = Y, Z = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(Z.Color, [null].concat(e)))(); + }; + Z.Color = I, Z.version = "2.4.2"; + var z = Z, ir = w.unpack, nr = Math.max, Fr = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = ir(e, "rgb"), i = c[0], h = c[1], v = c[2]; + i = i / 255, h = h / 255, v = v / 255; + var f = 1 - nr(i, nr(h, v)), b = f < 1 ? 1 / (1 - f) : 0, p = (1 - i - f) * b, y = (1 - h - f) * b, M = (1 - v - f) * b; + return [p, y, M, f]; + }, Ir = Fr, $r = w.unpack, kr = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + e = $r(e, "cmyk"); + var c = e[0], i = e[1], h = e[2], v = e[3], f = e.length > 4 ? e[4] : 1; + return v === 1 ? [0, 0, 0, f] : [ + c >= 1 ? 0 : 255 * (1 - c) * (1 - v), + // r + i >= 1 ? 0 : 255 * (1 - i) * (1 - v), + // g + h >= 1 ? 0 : 255 * (1 - h) * (1 - v), + // b + f + ]; + }, Jr = kr, Zr = z, xr = I, Ur = R, gt = w.unpack, vt = w.type, dt = Ir; + xr.prototype.cmyk = function() { + return dt(this._rgb); + }, Zr.cmyk = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(xr, [null].concat(e, ["cmyk"])))(); + }, Ur.format.cmyk = Jr, Ur.autodetect.push({ + p: 2, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = gt(e, "cmyk"), vt(e) === "array" && e.length === 4) + return "cmyk"; + } + }); + var bt = w.unpack, Qr = w.last, Xr = function(e) { + return Math.round(e * 100) / 100; + }, Ft = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = bt(e, "hsla"), i = Qr(e) || "lsa"; + return c[0] = Xr(c[0] || 0), c[1] = Xr(c[1] * 100) + "%", c[2] = Xr(c[2] * 100) + "%", i === "hsla" || c.length > 3 && c[3] < 1 ? (c[3] = c.length > 3 ? c[3] : 1, i = "hsla") : c.length = 3, i + "(" + c.join(",") + ")"; + }, jt = Ft, Wt = w.unpack, xt = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + e = Wt(e, "rgba"); + var c = e[0], i = e[1], h = e[2]; + c /= 255, i /= 255, h /= 255; + var v = Math.min(c, i, h), f = Math.max(c, i, h), b = (f + v) / 2, p, y; + return f === v ? (p = 0, y = Number.NaN) : p = b < 0.5 ? (f - v) / (f + v) : (f - v) / (2 - f - v), c == f ? y = (i - h) / (f - v) : i == f ? y = 2 + (h - c) / (f - v) : h == f && (y = 4 + (c - i) / (f - v)), y *= 60, y < 0 && (y += 360), e.length > 3 && e[3] !== void 0 ? [y, p, b, e[3]] : [y, p, b]; + }, Ct = xt, Ht = w.unpack, zn = w.last, Sn = jt, qn = Ct, Jt = Math.round, Gn = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = Ht(e, "rgba"), i = zn(e) || "rgb"; + return i.substr(0, 3) == "hsl" ? Sn(qn(c), i) : (c[0] = Jt(c[0]), c[1] = Jt(c[1]), c[2] = Jt(c[2]), (i === "rgba" || c.length > 3 && c[3] < 1) && (c[3] = c.length > 3 ? c[3] : 1, i = "rgba"), i + "(" + c.slice(0, i === "rgb" ? 3 : 4).join(",") + ")"); + }, Un = Gn, Yn = w.unpack, Zt = Math.round, Vn = function() { + for (var e, n = [], c = arguments.length; c--; ) + n[c] = arguments[c]; + n = Yn(n, "hsl"); + var i = n[0], h = n[1], v = n[2], f, b, p; + if (h === 0) + f = b = p = v * 255; + else { + var y = [0, 0, 0], M = [0, 0, 0], x = v < 0.5 ? v * (1 + h) : v + h - v * h, P = 2 * v - x, T = i / 360; + y[0] = T + 1 / 3, y[1] = T, y[2] = T - 1 / 3; + for (var D = 0; D < 3; D++) + y[D] < 0 && (y[D] += 1), y[D] > 1 && (y[D] -= 1), 6 * y[D] < 1 ? M[D] = P + (x - P) * 6 * y[D] : 2 * y[D] < 1 ? M[D] = x : 3 * y[D] < 2 ? M[D] = P + (x - P) * (2 / 3 - y[D]) * 6 : M[D] = P; + e = [Zt(M[0] * 255), Zt(M[1] * 255), Zt(M[2] * 255)], f = e[0], b = e[1], p = e[2]; + } + return n.length > 3 ? [f, b, p, n[3]] : [f, b, p, 1]; + }, Se = Vn, qe = Se, Ge = R, Ue = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/, Ye = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/, Ve = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/, je = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/, We = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/, He = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/, Je = Math.round, Ze = function(e) { + e = e.toLowerCase().trim(); + var n; + if (Ge.format.named) + try { + return Ge.format.named(e); + } catch { + } + if (n = e.match(Ue)) { + for (var c = n.slice(1, 4), i = 0; i < 3; i++) + c[i] = +c[i]; + return c[3] = 1, c; + } + if (n = e.match(Ye)) { + for (var h = n.slice(1, 5), v = 0; v < 4; v++) + h[v] = +h[v]; + return h; + } + if (n = e.match(Ve)) { + for (var f = n.slice(1, 4), b = 0; b < 3; b++) + f[b] = Je(f[b] * 2.55); + return f[3] = 1, f; + } + if (n = e.match(je)) { + for (var p = n.slice(1, 5), y = 0; y < 3; y++) + p[y] = Je(p[y] * 2.55); + return p[3] = +p[3], p; + } + if (n = e.match(We)) { + var M = n.slice(1, 4); + M[1] *= 0.01, M[2] *= 0.01; + var x = qe(M); + return x[3] = 1, x; + } + if (n = e.match(He)) { + var P = n.slice(1, 4); + P[1] *= 0.01, P[2] *= 0.01; + var T = qe(P); + return T[3] = +n[4], T; + } + }; + Ze.test = function(e) { + return Ue.test(e) || Ye.test(e) || Ve.test(e) || je.test(e) || We.test(e) || He.test(e); + }; + var jn = Ze, Wn = z, Qe = I, Xe = R, Hn = w.type, Jn = Un, Ke = jn; + Qe.prototype.css = function(e) { + return Jn(this._rgb, e); + }, Wn.css = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(Qe, [null].concat(e, ["css"])))(); + }, Xe.format.css = Ke, Xe.autodetect.push({ + p: 5, + test: function(e) { + for (var n = [], c = arguments.length - 1; c-- > 0; ) + n[c] = arguments[c + 1]; + if (!n.length && Hn(e) === "string" && Ke.test(e)) + return "css"; + } + }); + var ra = I, Zn = z, Qn = R, Xn = w.unpack; + Qn.format.gl = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = Xn(e, "rgba"); + return c[0] *= 255, c[1] *= 255, c[2] *= 255, c; + }, Zn.gl = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(ra, [null].concat(e, ["gl"])))(); + }, ra.prototype.gl = function() { + var e = this._rgb; + return [e[0] / 255, e[1] / 255, e[2] / 255, e[3]]; + }; + var Kn = w.unpack, r0 = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = Kn(e, "rgb"), i = c[0], h = c[1], v = c[2], f = Math.min(i, h, v), b = Math.max(i, h, v), p = b - f, y = p * 100 / 255, M = f / (255 - p) * 100, x; + return p === 0 ? x = Number.NaN : (i === b && (x = (h - v) / p), h === b && (x = 2 + (v - i) / p), v === b && (x = 4 + (i - h) / p), x *= 60, x < 0 && (x += 360)), [x, y, M]; + }, t0 = r0, e0 = w.unpack, a0 = Math.floor, n0 = function() { + for (var e, n, c, i, h, v, f = [], b = arguments.length; b--; ) + f[b] = arguments[b]; + f = e0(f, "hcg"); + var p = f[0], y = f[1], M = f[2], x, P, T; + M = M * 255; + var D = y * 255; + if (y === 0) + x = P = T = M; + else { + p === 360 && (p = 0), p > 360 && (p -= 360), p < 0 && (p += 360), p /= 60; + var S = a0(p), V = p - S, H = M * (1 - y), Q = H + D * (1 - V), dr = H + D * V, hr = H + D; + switch (S) { + case 0: + e = [hr, dr, H], x = e[0], P = e[1], T = e[2]; + break; + case 1: + n = [Q, hr, H], x = n[0], P = n[1], T = n[2]; + break; + case 2: + c = [H, hr, dr], x = c[0], P = c[1], T = c[2]; + break; + case 3: + i = [H, Q, hr], x = i[0], P = i[1], T = i[2]; + break; + case 4: + h = [dr, H, hr], x = h[0], P = h[1], T = h[2]; + break; + case 5: + v = [hr, H, Q], x = v[0], P = v[1], T = v[2]; + break; + } + } + return [x, P, T, f.length > 3 ? f[3] : 1]; + }, o0 = n0, s0 = w.unpack, c0 = w.type, l0 = z, ta = I, ea = R, i0 = t0; + ta.prototype.hcg = function() { + return i0(this._rgb); + }, l0.hcg = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(ta, [null].concat(e, ["hcg"])))(); + }, ea.format.hcg = o0, ea.autodetect.push({ + p: 1, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = s0(e, "hcg"), c0(e) === "array" && e.length === 3) + return "hcg"; + } + }); + var u0 = w.unpack, f0 = w.last, Dt = Math.round, h0 = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = u0(e, "rgba"), i = c[0], h = c[1], v = c[2], f = c[3], b = f0(e) || "auto"; + f === void 0 && (f = 1), b === "auto" && (b = f < 1 ? "rgba" : "rgb"), i = Dt(i), h = Dt(h), v = Dt(v); + var p = i << 16 | h << 8 | v, y = "000000" + p.toString(16); + y = y.substr(y.length - 6); + var M = "0" + Dt(f * 255).toString(16); + switch (M = M.substr(M.length - 2), b.toLowerCase()) { + case "rgba": + return "#" + y + M; + case "argb": + return "#" + M + y; + default: + return "#" + y; + } + }, aa = h0, g0 = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, v0 = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/, d0 = function(e) { + if (e.match(g0)) { + (e.length === 4 || e.length === 7) && (e = e.substr(1)), e.length === 3 && (e = e.split(""), e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]); + var n = parseInt(e, 16), c = n >> 16, i = n >> 8 & 255, h = n & 255; + return [c, i, h, 1]; + } + if (e.match(v0)) { + (e.length === 5 || e.length === 9) && (e = e.substr(1)), e.length === 4 && (e = e.split(""), e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2] + e[3] + e[3]); + var v = parseInt(e, 16), f = v >> 24 & 255, b = v >> 16 & 255, p = v >> 8 & 255, y = Math.round((v & 255) / 255 * 100) / 100; + return [f, b, p, y]; + } + throw new Error("unknown hex color: " + e); + }, na = d0, b0 = z, oa = I, p0 = w.type, sa = R, m0 = aa; + oa.prototype.hex = function(e) { + return m0(this._rgb, e); + }, b0.hex = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(oa, [null].concat(e, ["hex"])))(); + }, sa.format.hex = na, sa.autodetect.push({ + p: 4, + test: function(e) { + for (var n = [], c = arguments.length - 1; c-- > 0; ) + n[c] = arguments[c + 1]; + if (!n.length && p0(e) === "string" && [3, 4, 5, 6, 7, 8, 9].indexOf(e.length) >= 0) + return "hex"; + } + }); + var y0 = w.unpack, ca = w.TWOPI, k0 = Math.min, w0 = Math.sqrt, M0 = Math.acos, P0 = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = y0(e, "rgb"), i = c[0], h = c[1], v = c[2]; + i /= 255, h /= 255, v /= 255; + var f, b = k0(i, h, v), p = (i + h + v) / 3, y = p > 0 ? 1 - b / p : 0; + return y === 0 ? f = NaN : (f = (i - h + (i - v)) / 2, f /= w0((i - h) * (i - h) + (i - v) * (h - v)), f = M0(f), v > h && (f = ca - f), f /= ca), [f * 360, y, p]; + }, _0 = P0, $0 = w.unpack, Qt = w.limit, Kr = w.TWOPI, Xt = w.PITHIRD, rt = Math.cos, F0 = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + e = $0(e, "hsi"); + var c = e[0], i = e[1], h = e[2], v, f, b; + return isNaN(c) && (c = 0), isNaN(i) && (i = 0), c > 360 && (c -= 360), c < 0 && (c += 360), c /= 360, c < 1 / 3 ? (b = (1 - i) / 3, v = (1 + i * rt(Kr * c) / rt(Xt - Kr * c)) / 3, f = 1 - (b + v)) : c < 2 / 3 ? (c -= 1 / 3, v = (1 - i) / 3, f = (1 + i * rt(Kr * c) / rt(Xt - Kr * c)) / 3, b = 1 - (v + f)) : (c -= 2 / 3, f = (1 - i) / 3, b = (1 + i * rt(Kr * c) / rt(Xt - Kr * c)) / 3, v = 1 - (f + b)), v = Qt(h * v * 3), f = Qt(h * f * 3), b = Qt(h * b * 3), [v * 255, f * 255, b * 255, e.length > 3 ? e[3] : 1]; + }, x0 = F0, C0 = w.unpack, D0 = w.type, T0 = z, la = I, ia = R, A0 = _0; + la.prototype.hsi = function() { + return A0(this._rgb); + }, T0.hsi = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(la, [null].concat(e, ["hsi"])))(); + }, ia.format.hsi = x0, ia.autodetect.push({ + p: 2, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = C0(e, "hsi"), D0(e) === "array" && e.length === 3) + return "hsi"; + } + }); + var I0 = w.unpack, E0 = w.type, N0 = z, ua = I, fa = R, O0 = Ct; + ua.prototype.hsl = function() { + return O0(this._rgb); + }, N0.hsl = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(ua, [null].concat(e, ["hsl"])))(); + }, fa.format.hsl = Se, fa.autodetect.push({ + p: 2, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = I0(e, "hsl"), E0(e) === "array" && e.length === 3) + return "hsl"; + } + }); + var R0 = w.unpack, B0 = Math.min, L0 = Math.max, z0 = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + e = R0(e, "rgb"); + var c = e[0], i = e[1], h = e[2], v = B0(c, i, h), f = L0(c, i, h), b = f - v, p, y, M; + return M = f / 255, f === 0 ? (p = Number.NaN, y = 0) : (y = b / f, c === f && (p = (i - h) / b), i === f && (p = 2 + (h - c) / b), h === f && (p = 4 + (c - i) / b), p *= 60, p < 0 && (p += 360)), [p, y, M]; + }, S0 = z0, q0 = w.unpack, G0 = Math.floor, U0 = function() { + for (var e, n, c, i, h, v, f = [], b = arguments.length; b--; ) + f[b] = arguments[b]; + f = q0(f, "hsv"); + var p = f[0], y = f[1], M = f[2], x, P, T; + if (M *= 255, y === 0) + x = P = T = M; + else { + p === 360 && (p = 0), p > 360 && (p -= 360), p < 0 && (p += 360), p /= 60; + var D = G0(p), S = p - D, V = M * (1 - y), H = M * (1 - y * S), Q = M * (1 - y * (1 - S)); + switch (D) { + case 0: + e = [M, Q, V], x = e[0], P = e[1], T = e[2]; + break; + case 1: + n = [H, M, V], x = n[0], P = n[1], T = n[2]; + break; + case 2: + c = [V, M, Q], x = c[0], P = c[1], T = c[2]; + break; + case 3: + i = [V, H, M], x = i[0], P = i[1], T = i[2]; + break; + case 4: + h = [Q, V, M], x = h[0], P = h[1], T = h[2]; + break; + case 5: + v = [M, V, H], x = v[0], P = v[1], T = v[2]; + break; + } + } + return [x, P, T, f.length > 3 ? f[3] : 1]; + }, Y0 = U0, V0 = w.unpack, j0 = w.type, W0 = z, ha = I, ga = R, H0 = S0; + ha.prototype.hsv = function() { + return H0(this._rgb); + }, W0.hsv = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(ha, [null].concat(e, ["hsv"])))(); + }, ga.format.hsv = Y0, ga.autodetect.push({ + p: 2, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = V0(e, "hsv"), j0(e) === "array" && e.length === 3) + return "hsv"; + } + }); + var Tt = { + // Corresponds roughly to RGB brighter/darker + Kn: 18, + // D65 standard referent + Xn: 0.95047, + Yn: 1, + Zn: 1.08883, + t0: 0.137931034, + // 4 / 29 + t1: 0.206896552, + // 6 / 29 + t2: 0.12841855, + // 3 * t1 * t1 + t3: 8856452e-9 + // t1 * t1 * t1 + }, tt = Tt, J0 = w.unpack, va = Math.pow, Z0 = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = J0(e, "rgb"), i = c[0], h = c[1], v = c[2], f = Q0(i, h, v), b = f[0], p = f[1], y = f[2], M = 116 * p - 16; + return [M < 0 ? 0 : M, 500 * (b - p), 200 * (p - y)]; + }, Kt = function(e) { + return (e /= 255) <= 0.04045 ? e / 12.92 : va((e + 0.055) / 1.055, 2.4); + }, re = function(e) { + return e > tt.t3 ? va(e, 1 / 3) : e / tt.t2 + tt.t0; + }, Q0 = function(e, n, c) { + e = Kt(e), n = Kt(n), c = Kt(c); + var i = re((0.4124564 * e + 0.3575761 * n + 0.1804375 * c) / tt.Xn), h = re((0.2126729 * e + 0.7151522 * n + 0.072175 * c) / tt.Yn), v = re((0.0193339 * e + 0.119192 * n + 0.9503041 * c) / tt.Zn); + return [i, h, v]; + }, da = Z0, et = Tt, X0 = w.unpack, K0 = Math.pow, ro = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + e = X0(e, "lab"); + var c = e[0], i = e[1], h = e[2], v, f, b, p, y, M; + return f = (c + 16) / 116, v = isNaN(i) ? f : f + i / 500, b = isNaN(h) ? f : f - h / 200, f = et.Yn * ee(f), v = et.Xn * ee(v), b = et.Zn * ee(b), p = te(3.2404542 * v - 1.5371385 * f - 0.4985314 * b), y = te(-0.969266 * v + 1.8760108 * f + 0.041556 * b), M = te(0.0556434 * v - 0.2040259 * f + 1.0572252 * b), [p, y, M, e.length > 3 ? e[3] : 1]; + }, te = function(e) { + return 255 * (e <= 304e-5 ? 12.92 * e : 1.055 * K0(e, 1 / 2.4) - 0.055); + }, ee = function(e) { + return e > et.t1 ? e * e * e : et.t2 * (e - et.t0); + }, ba = ro, to = w.unpack, eo = w.type, ao = z, pa = I, ma = R, no = da; + pa.prototype.lab = function() { + return no(this._rgb); + }, ao.lab = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(pa, [null].concat(e, ["lab"])))(); + }, ma.format.lab = ba, ma.autodetect.push({ + p: 2, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = to(e, "lab"), eo(e) === "array" && e.length === 3) + return "lab"; + } + }); + var oo = w.unpack, so = w.RAD2DEG, co = Math.sqrt, lo = Math.atan2, io = Math.round, uo = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = oo(e, "lab"), i = c[0], h = c[1], v = c[2], f = co(h * h + v * v), b = (lo(v, h) * so + 360) % 360; + return io(f * 1e4) === 0 && (b = Number.NaN), [i, f, b]; + }, ya = uo, fo = w.unpack, ho = da, go = ya, vo = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = fo(e, "rgb"), i = c[0], h = c[1], v = c[2], f = ho(i, h, v), b = f[0], p = f[1], y = f[2]; + return go(b, p, y); + }, bo = vo, po = w.unpack, mo = w.DEG2RAD, yo = Math.sin, ko = Math.cos, wo = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = po(e, "lch"), i = c[0], h = c[1], v = c[2]; + return isNaN(v) && (v = 0), v = v * mo, [i, ko(v) * h, yo(v) * h]; + }, ka = wo, Mo = w.unpack, Po = ka, _o = ba, $o = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + e = Mo(e, "lch"); + var c = e[0], i = e[1], h = e[2], v = Po(c, i, h), f = v[0], b = v[1], p = v[2], y = _o(f, b, p), M = y[0], x = y[1], P = y[2]; + return [M, x, P, e.length > 3 ? e[3] : 1]; + }, wa = $o, Fo = w.unpack, xo = wa, Co = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = Fo(e, "hcl").reverse(); + return xo.apply(void 0, c); + }, Do = Co, To = w.unpack, Ao = w.type, Ma = z, At = I, ae = R, Pa = bo; + At.prototype.lch = function() { + return Pa(this._rgb); + }, At.prototype.hcl = function() { + return Pa(this._rgb).reverse(); + }, Ma.lch = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(At, [null].concat(e, ["lch"])))(); + }, Ma.hcl = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(At, [null].concat(e, ["hcl"])))(); + }, ae.format.lch = wa, ae.format.hcl = Do, ["lch", "hcl"].forEach(function(e) { + return ae.autodetect.push({ + p: 2, + test: function() { + for (var n = [], c = arguments.length; c--; ) + n[c] = arguments[c]; + if (n = To(n, e), Ao(n) === "array" && n.length === 3) + return e; + } + }); + }); + var Io = { + aliceblue: "#f0f8ff", + antiquewhite: "#faebd7", + aqua: "#00ffff", + aquamarine: "#7fffd4", + azure: "#f0ffff", + beige: "#f5f5dc", + bisque: "#ffe4c4", + black: "#000000", + blanchedalmond: "#ffebcd", + blue: "#0000ff", + blueviolet: "#8a2be2", + brown: "#a52a2a", + burlywood: "#deb887", + cadetblue: "#5f9ea0", + chartreuse: "#7fff00", + chocolate: "#d2691e", + coral: "#ff7f50", + cornflower: "#6495ed", + cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", + crimson: "#dc143c", + cyan: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", + darkgreen: "#006400", + darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkseagreen: "#8fbc8f", + darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", + darkslategrey: "#2f4f4f", + darkturquoise: "#00ced1", + darkviolet: "#9400d3", + deeppink: "#ff1493", + deepskyblue: "#00bfff", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1e90ff", + firebrick: "#b22222", + floralwhite: "#fffaf0", + forestgreen: "#228b22", + fuchsia: "#ff00ff", + gainsboro: "#dcdcdc", + ghostwhite: "#f8f8ff", + gold: "#ffd700", + goldenrod: "#daa520", + gray: "#808080", + green: "#008000", + greenyellow: "#adff2f", + grey: "#808080", + honeydew: "#f0fff0", + hotpink: "#ff69b4", + indianred: "#cd5c5c", + indigo: "#4b0082", + ivory: "#fffff0", + khaki: "#f0e68c", + laserlemon: "#ffff54", + lavender: "#e6e6fa", + lavenderblush: "#fff0f5", + lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", + lightblue: "#add8e6", + lightcoral: "#f08080", + lightcyan: "#e0ffff", + lightgoldenrod: "#fafad2", + lightgoldenrodyellow: "#fafad2", + lightgray: "#d3d3d3", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", + lightseagreen: "#20b2aa", + lightskyblue: "#87cefa", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", + lime: "#00ff00", + limegreen: "#32cd32", + linen: "#faf0e6", + magenta: "#ff00ff", + maroon: "#800000", + maroon2: "#7f0000", + maroon3: "#b03060", + mediumaquamarine: "#66cdaa", + mediumblue: "#0000cd", + mediumorchid: "#ba55d3", + mediumpurple: "#9370db", + mediumseagreen: "#3cb371", + mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", + mediumturquoise: "#48d1cc", + mediumvioletred: "#c71585", + midnightblue: "#191970", + mintcream: "#f5fffa", + mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", + navajowhite: "#ffdead", + navy: "#000080", + oldlace: "#fdf5e6", + olive: "#808000", + olivedrab: "#6b8e23", + orange: "#ffa500", + orangered: "#ff4500", + orchid: "#da70d6", + palegoldenrod: "#eee8aa", + palegreen: "#98fb98", + paleturquoise: "#afeeee", + palevioletred: "#db7093", + papayawhip: "#ffefd5", + peachpuff: "#ffdab9", + peru: "#cd853f", + pink: "#ffc0cb", + plum: "#dda0dd", + powderblue: "#b0e0e6", + purple: "#800080", + purple2: "#7f007f", + purple3: "#a020f0", + rebeccapurple: "#663399", + red: "#ff0000", + rosybrown: "#bc8f8f", + royalblue: "#4169e1", + saddlebrown: "#8b4513", + salmon: "#fa8072", + sandybrown: "#f4a460", + seagreen: "#2e8b57", + seashell: "#fff5ee", + sienna: "#a0522d", + silver: "#c0c0c0", + skyblue: "#87ceeb", + slateblue: "#6a5acd", + slategray: "#708090", + slategrey: "#708090", + snow: "#fffafa", + springgreen: "#00ff7f", + steelblue: "#4682b4", + tan: "#d2b48c", + teal: "#008080", + thistle: "#d8bfd8", + tomato: "#ff6347", + turquoise: "#40e0d0", + violet: "#ee82ee", + wheat: "#f5deb3", + white: "#ffffff", + whitesmoke: "#f5f5f5", + yellow: "#ffff00", + yellowgreen: "#9acd32" + }, _a = Io, Eo = I, $a = R, No = w.type, pt = _a, Oo = na, Ro = aa; + Eo.prototype.name = function() { + for (var e = Ro(this._rgb, "rgb"), n = 0, c = Object.keys(pt); n < c.length; n += 1) { + var i = c[n]; + if (pt[i] === e) + return i.toLowerCase(); + } + return e; + }, $a.format.named = function(e) { + if (e = e.toLowerCase(), pt[e]) + return Oo(pt[e]); + throw new Error("unknown color name: " + e); + }, $a.autodetect.push({ + p: 5, + test: function(e) { + for (var n = [], c = arguments.length - 1; c-- > 0; ) + n[c] = arguments[c + 1]; + if (!n.length && No(e) === "string" && pt[e.toLowerCase()]) + return "named"; + } + }); + var Bo = w.unpack, Lo = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = Bo(e, "rgb"), i = c[0], h = c[1], v = c[2]; + return (i << 16) + (h << 8) + v; + }, zo = Lo, So = w.type, qo = function(e) { + if (So(e) == "number" && e >= 0 && e <= 16777215) { + var n = e >> 16, c = e >> 8 & 255, i = e & 255; + return [n, c, i, 1]; + } + throw new Error("unknown num color: " + e); + }, Go = qo, Uo = z, Fa = I, xa = R, Yo = w.type, Vo = zo; + Fa.prototype.num = function() { + return Vo(this._rgb); + }, Uo.num = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(Fa, [null].concat(e, ["num"])))(); + }, xa.format.num = Go, xa.autodetect.push({ + p: 5, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e.length === 1 && Yo(e[0]) === "number" && e[0] >= 0 && e[0] <= 16777215) + return "num"; + } + }); + var jo = z, ne = I, Ca = R, Da = w.unpack, Ta = w.type, Aa = Math.round; + ne.prototype.rgb = function(e) { + return e === void 0 && (e = !0), e === !1 ? this._rgb.slice(0, 3) : this._rgb.slice(0, 3).map(Aa); + }, ne.prototype.rgba = function(e) { + return e === void 0 && (e = !0), this._rgb.slice(0, 4).map(function(n, c) { + return c < 3 ? e === !1 ? n : Aa(n) : n; + }); + }, jo.rgb = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(ne, [null].concat(e, ["rgb"])))(); + }, Ca.format.rgb = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = Da(e, "rgba"); + return c[3] === void 0 && (c[3] = 1), c; + }, Ca.autodetect.push({ + p: 3, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = Da(e, "rgba"), Ta(e) === "array" && (e.length === 3 || e.length === 4 && Ta(e[3]) == "number" && e[3] >= 0 && e[3] <= 1)) + return "rgb"; + } + }); + var It = Math.log, Wo = function(e) { + var n = e / 100, c, i, h; + return n < 66 ? (c = 255, i = n < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (i = n - 2) + 104.49216199393888 * It(i), h = n < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (h = n - 10) + 115.67994401066147 * It(h)) : (c = 351.97690566805693 + 0.114206453784165 * (c = n - 55) - 40.25366309332127 * It(c), i = 325.4494125711974 + 0.07943456536662342 * (i = n - 50) - 28.0852963507957 * It(i), h = 255), [c, i, h, 1]; + }, Ia = Wo, Ho = Ia, Jo = w.unpack, Zo = Math.round, Qo = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + for (var c = Jo(e, "rgb"), i = c[0], h = c[2], v = 1e3, f = 4e4, b = 0.4, p; f - v > b; ) { + p = (f + v) * 0.5; + var y = Ho(p); + y[2] / y[0] >= h / i ? f = p : v = p; + } + return Zo(p); + }, Xo = Qo, oe = z, Et = I, se = R, Ko = Xo; + Et.prototype.temp = Et.prototype.kelvin = Et.prototype.temperature = function() { + return Ko(this._rgb); + }, oe.temp = oe.kelvin = oe.temperature = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(Et, [null].concat(e, ["temp"])))(); + }, se.format.temp = se.format.kelvin = se.format.temperature = Ia; + var rs = w.unpack, ce = Math.cbrt, ts = Math.pow, es = Math.sign, as = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = rs(e, "rgb"), i = c[0], h = c[1], v = c[2], f = [le(i / 255), le(h / 255), le(v / 255)], b = f[0], p = f[1], y = f[2], M = ce(0.4122214708 * b + 0.5363325363 * p + 0.0514459929 * y), x = ce(0.2119034982 * b + 0.6806995451 * p + 0.1073969566 * y), P = ce(0.0883024619 * b + 0.2817188376 * p + 0.6299787005 * y); + return [ + 0.2104542553 * M + 0.793617785 * x - 0.0040720468 * P, + 1.9779984951 * M - 2.428592205 * x + 0.4505937099 * P, + 0.0259040371 * M + 0.7827717662 * x - 0.808675766 * P + ]; + }, Ea = as; + function le(e) { + var n = Math.abs(e); + return n < 0.04045 ? e / 12.92 : (es(e) || 1) * ts((n + 0.055) / 1.055, 2.4); + } + var ns = w.unpack, Nt = Math.pow, os = Math.sign, ss = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + e = ns(e, "lab"); + var c = e[0], i = e[1], h = e[2], v = Nt(c + 0.3963377774 * i + 0.2158037573 * h, 3), f = Nt(c - 0.1055613458 * i - 0.0638541728 * h, 3), b = Nt(c - 0.0894841775 * i - 1.291485548 * h, 3); + return [ + 255 * ie(4.0767416621 * v - 3.3077115913 * f + 0.2309699292 * b), + 255 * ie(-1.2684380046 * v + 2.6097574011 * f - 0.3413193965 * b), + 255 * ie(-0.0041960863 * v - 0.7034186147 * f + 1.707614701 * b), + e.length > 3 ? e[3] : 1 + ]; + }, Na = ss; + function ie(e) { + var n = Math.abs(e); + return n > 31308e-7 ? (os(e) || 1) * (1.055 * Nt(n, 1 / 2.4) - 0.055) : e * 12.92; + } + var cs = w.unpack, ls = w.type, is = z, Oa = I, Ra = R, us = Ea; + Oa.prototype.oklab = function() { + return us(this._rgb); + }, is.oklab = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(Oa, [null].concat(e, ["oklab"])))(); + }, Ra.format.oklab = Na, Ra.autodetect.push({ + p: 3, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = cs(e, "oklab"), ls(e) === "array" && e.length === 3) + return "oklab"; + } + }); + var fs = w.unpack, hs = Ea, gs = ya, vs = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + var c = fs(e, "rgb"), i = c[0], h = c[1], v = c[2], f = hs(i, h, v), b = f[0], p = f[1], y = f[2]; + return gs(b, p, y); + }, ds = vs, bs = w.unpack, ps = ka, ms = Na, ys = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + e = bs(e, "lch"); + var c = e[0], i = e[1], h = e[2], v = ps(c, i, h), f = v[0], b = v[1], p = v[2], y = ms(f, b, p), M = y[0], x = y[1], P = y[2]; + return [M, x, P, e.length > 3 ? e[3] : 1]; + }, ks = ys, ws = w.unpack, Ms = w.type, Ps = z, Ba = I, La = R, _s = ds; + Ba.prototype.oklch = function() { + return _s(this._rgb); + }, Ps.oklch = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + return new (Function.prototype.bind.apply(Ba, [null].concat(e, ["oklch"])))(); + }, La.format.oklch = ks, La.autodetect.push({ + p: 3, + test: function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + if (e = ws(e, "oklch"), Ms(e) === "array" && e.length === 3) + return "oklch"; + } + }); + var za = I, $s = w.type; + za.prototype.alpha = function(e, n) { + return n === void 0 && (n = !1), e !== void 0 && $s(e) === "number" ? n ? (this._rgb[3] = e, this) : new za([this._rgb[0], this._rgb[1], this._rgb[2], e], "rgb") : this._rgb[3]; + }; + var Fs = I; + Fs.prototype.clipped = function() { + return this._rgb._clipped || !1; + }; + var Yr = I, xs = Tt; + Yr.prototype.darken = function(e) { + e === void 0 && (e = 1); + var n = this, c = n.lab(); + return c[0] -= xs.Kn * e, new Yr(c, "lab").alpha(n.alpha(), !0); + }, Yr.prototype.brighten = function(e) { + return e === void 0 && (e = 1), this.darken(-e); + }, Yr.prototype.darker = Yr.prototype.darken, Yr.prototype.brighter = Yr.prototype.brighten; + var Cs = I; + Cs.prototype.get = function(e) { + var n = e.split("."), c = n[0], i = n[1], h = this[c](); + if (i) { + var v = c.indexOf(i) - (c.substr(0, 2) === "ok" ? 2 : 0); + if (v > -1) + return h[v]; + throw new Error("unknown channel " + i + " in mode " + c); + } else + return h; + }; + var at = I, Ds = w.type, Ts = Math.pow, As = 1e-7, Is = 20; + at.prototype.luminance = function(e) { + if (e !== void 0 && Ds(e) === "number") { + if (e === 0) + return new at([0, 0, 0, this._rgb[3]], "rgb"); + if (e === 1) + return new at([255, 255, 255, this._rgb[3]], "rgb"); + var n = this.luminance(), c = "rgb", i = Is, h = function(f, b) { + var p = f.interpolate(b, 0.5, c), y = p.luminance(); + return Math.abs(e - y) < As || !i-- ? p : y > e ? h(f, p) : h(p, b); + }, v = (n > e ? h(new at([0, 0, 0]), this) : h(this, new at([255, 255, 255]))).rgb(); + return new at(v.concat([this._rgb[3]])); + } + return Es.apply(void 0, this._rgb.slice(0, 3)); + }; + var Es = function(e, n, c) { + return e = ue(e), n = ue(n), c = ue(c), 0.2126 * e + 0.7152 * n + 0.0722 * c; + }, ue = function(e) { + return e /= 255, e <= 0.03928 ? e / 12.92 : Ts((e + 0.055) / 1.055, 2.4); + }, wr = {}, Sa = I, qa = w.type, Ot = wr, Ga = function(e, n, c) { + c === void 0 && (c = 0.5); + for (var i = [], h = arguments.length - 3; h-- > 0; ) + i[h] = arguments[h + 3]; + var v = i[0] || "lrgb"; + if (!Ot[v] && !i.length && (v = Object.keys(Ot)[0]), !Ot[v]) + throw new Error("interpolation mode " + v + " is not defined"); + return qa(e) !== "object" && (e = new Sa(e)), qa(n) !== "object" && (n = new Sa(n)), Ot[v](e, n, c).alpha(e.alpha() + c * (n.alpha() - e.alpha())); + }, Ua = I, Ns = Ga; + Ua.prototype.mix = Ua.prototype.interpolate = function(e, n) { + n === void 0 && (n = 0.5); + for (var c = [], i = arguments.length - 2; i-- > 0; ) + c[i] = arguments[i + 2]; + return Ns.apply(void 0, [this, e, n].concat(c)); + }; + var Ya = I; + Ya.prototype.premultiply = function(e) { + e === void 0 && (e = !1); + var n = this._rgb, c = n[3]; + return e ? (this._rgb = [n[0] * c, n[1] * c, n[2] * c, c], this) : new Ya([n[0] * c, n[1] * c, n[2] * c, c], "rgb"); + }; + var fe = I, Os = Tt; + fe.prototype.saturate = function(e) { + e === void 0 && (e = 1); + var n = this, c = n.lch(); + return c[1] += Os.Kn * e, c[1] < 0 && (c[1] = 0), new fe(c, "lch").alpha(n.alpha(), !0); + }, fe.prototype.desaturate = function(e) { + return e === void 0 && (e = 1), this.saturate(-e); + }; + var Va = I, ja = w.type; + Va.prototype.set = function(e, n, c) { + c === void 0 && (c = !1); + var i = e.split("."), h = i[0], v = i[1], f = this[h](); + if (v) { + var b = h.indexOf(v) - (h.substr(0, 2) === "ok" ? 2 : 0); + if (b > -1) { + if (ja(n) == "string") + switch (n.charAt(0)) { + case "+": + f[b] += +n; + break; + case "-": + f[b] += +n; + break; + case "*": + f[b] *= +n.substr(1); + break; + case "/": + f[b] /= +n.substr(1); + break; + default: + f[b] = +n; + } + else if (ja(n) === "number") + f[b] = n; + else + throw new Error("unsupported value for Color.set"); + var p = new Va(f, h); + return c ? (this._rgb = p._rgb, this) : p; + } + throw new Error("unknown channel " + v + " in mode " + h); + } else + return f; + }; + var Rs = I, Bs = function(e, n, c) { + var i = e._rgb, h = n._rgb; + return new Rs( + i[0] + c * (h[0] - i[0]), + i[1] + c * (h[1] - i[1]), + i[2] + c * (h[2] - i[2]), + "rgb" + ); + }; + wr.rgb = Bs; + var Ls = I, he = Math.sqrt, nt = Math.pow, zs = function(e, n, c) { + var i = e._rgb, h = i[0], v = i[1], f = i[2], b = n._rgb, p = b[0], y = b[1], M = b[2]; + return new Ls( + he(nt(h, 2) * (1 - c) + nt(p, 2) * c), + he(nt(v, 2) * (1 - c) + nt(y, 2) * c), + he(nt(f, 2) * (1 - c) + nt(M, 2) * c), + "rgb" + ); + }; + wr.lrgb = zs; + var Ss = I, qs = function(e, n, c) { + var i = e.lab(), h = n.lab(); + return new Ss( + i[0] + c * (h[0] - i[0]), + i[1] + c * (h[1] - i[1]), + i[2] + c * (h[2] - i[2]), + "lab" + ); + }; + wr.lab = qs; + var Wa = I, ot = function(e, n, c, i) { + var h, v, f, b; + i === "hsl" ? (f = e.hsl(), b = n.hsl()) : i === "hsv" ? (f = e.hsv(), b = n.hsv()) : i === "hcg" ? (f = e.hcg(), b = n.hcg()) : i === "hsi" ? (f = e.hsi(), b = n.hsi()) : i === "lch" || i === "hcl" ? (i = "hcl", f = e.hcl(), b = n.hcl()) : i === "oklch" && (f = e.oklch().reverse(), b = n.oklch().reverse()); + var p, y, M, x, P, T; + (i.substr(0, 1) === "h" || i === "oklch") && (h = f, p = h[0], M = h[1], P = h[2], v = b, y = v[0], x = v[1], T = v[2]); + var D, S, V, H; + return !isNaN(p) && !isNaN(y) ? (y > p && y - p > 180 ? H = y - (p + 360) : y < p && p - y > 180 ? H = y + 360 - p : H = y - p, S = p + c * H) : isNaN(p) ? isNaN(y) ? S = Number.NaN : (S = y, (P == 1 || P == 0) && i != "hsv" && (D = x)) : (S = p, (T == 1 || T == 0) && i != "hsv" && (D = M)), D === void 0 && (D = M + c * (x - M)), V = P + c * (T - P), i === "oklch" ? new Wa([V, D, S], i) : new Wa([S, D, V], i); + }, Gs = ot, Ha = function(e, n, c) { + return Gs(e, n, c, "lch"); + }; + wr.lch = Ha, wr.hcl = Ha; + var Us = I, Ys = function(e, n, c) { + var i = e.num(), h = n.num(); + return new Us(i + c * (h - i), "num"); + }; + wr.num = Ys; + var Vs = ot, js = function(e, n, c) { + return Vs(e, n, c, "hcg"); + }; + wr.hcg = js; + var Ws = ot, Hs = function(e, n, c) { + return Ws(e, n, c, "hsi"); + }; + wr.hsi = Hs; + var Js = ot, Zs = function(e, n, c) { + return Js(e, n, c, "hsl"); + }; + wr.hsl = Zs; + var Qs = ot, Xs = function(e, n, c) { + return Qs(e, n, c, "hsv"); + }; + wr.hsv = Xs; + var Ks = I, r1 = function(e, n, c) { + var i = e.oklab(), h = n.oklab(); + return new Ks( + i[0] + c * (h[0] - i[0]), + i[1] + c * (h[1] - i[1]), + i[2] + c * (h[2] - i[2]), + "oklab" + ); + }; + wr.oklab = r1; + var t1 = ot, e1 = function(e, n, c) { + return t1(e, n, c, "oklch"); + }; + wr.oklch = e1; + var ge = I, a1 = w.clip_rgb, ve = Math.pow, de = Math.sqrt, be = Math.PI, Ja = Math.cos, Za = Math.sin, n1 = Math.atan2, o1 = function(e, n, c) { + n === void 0 && (n = "lrgb"), c === void 0 && (c = null); + var i = e.length; + c || (c = Array.from(new Array(i)).map(function() { + return 1; + })); + var h = i / c.reduce(function(S, V) { + return S + V; + }); + if (c.forEach(function(S, V) { + c[V] *= h; + }), e = e.map(function(S) { + return new ge(S); + }), n === "lrgb") + return s1(e, c); + for (var v = e.shift(), f = v.get(n), b = [], p = 0, y = 0, M = 0; M < f.length; M++) + if (f[M] = (f[M] || 0) * c[0], b.push(isNaN(f[M]) ? 0 : c[0]), n.charAt(M) === "h" && !isNaN(f[M])) { + var x = f[M] / 180 * be; + p += Ja(x) * c[0], y += Za(x) * c[0]; + } + var P = v.alpha() * c[0]; + e.forEach(function(S, V) { + var H = S.get(n); + P += S.alpha() * c[V + 1]; + for (var Q = 0; Q < f.length; Q++) + if (!isNaN(H[Q])) + if (b[Q] += c[V + 1], n.charAt(Q) === "h") { + var dr = H[Q] / 180 * be; + p += Ja(dr) * c[V + 1], y += Za(dr) * c[V + 1]; + } else + f[Q] += H[Q] * c[V + 1]; + }); + for (var T = 0; T < f.length; T++) + if (n.charAt(T) === "h") { + for (var D = n1(y / b[T], p / b[T]) / be * 180; D < 0; ) + D += 360; + for (; D >= 360; ) + D -= 360; + f[T] = D; + } else + f[T] = f[T] / b[T]; + return P /= i, new ge(f, n).alpha(P > 0.99999 ? 1 : P, !0); + }, s1 = function(e, n) { + for (var c = e.length, i = [0, 0, 0, 0], h = 0; h < e.length; h++) { + var v = e[h], f = n[h] / c, b = v._rgb; + i[0] += ve(b[0], 2) * f, i[1] += ve(b[1], 2) * f, i[2] += ve(b[2], 2) * f, i[3] += b[3] * f; + } + return i[0] = de(i[0]), i[1] = de(i[1]), i[2] = de(i[2]), i[3] > 0.9999999 && (i[3] = 1), new ge(a1(i)); + }, Cr = z, st = w.type, c1 = Math.pow, pe = function(e) { + var n = "rgb", c = Cr("#ccc"), i = 0, h = [0, 1], v = [], f = [0, 0], b = !1, p = [], y = !1, M = 0, x = 1, P = !1, T = {}, D = !0, S = 1, V = function($) { + if ($ = $ || ["#fff", "#000"], $ && st($) === "string" && Cr.brewer && Cr.brewer[$.toLowerCase()] && ($ = Cr.brewer[$.toLowerCase()]), st($) === "array") { + $.length === 1 && ($ = [$[0], $[0]]), $ = $.slice(0); + for (var N = 0; N < $.length; N++) + $[N] = Cr($[N]); + v.length = 0; + for (var U = 0; U < $.length; U++) + v.push(U / ($.length - 1)); + } + return pr(), p = $; + }, H = function($) { + if (b != null) { + for (var N = b.length - 1, U = 0; U < N && $ >= b[U]; ) + U++; + return U - 1; + } + return 0; + }, Q = function($) { + return $; + }, dr = function($) { + return $; + }, hr = function($, N) { + var U, q; + if (N == null && (N = !1), isNaN($) || $ === null) + return c; + if (N) + q = $; + else if (b && b.length > 2) { + var br = H($); + q = br / (b.length - 2); + } else + x !== M ? q = ($ - M) / (x - M) : q = 1; + q = dr(q), N || (q = Q(q)), S !== 1 && (q = c1(q, S)), q = f[0] + q * (1 - f[0] - f[1]), q = Math.min(1, Math.max(0, q)); + var er = Math.floor(q * 1e4); + if (D && T[er]) + U = T[er]; + else { + if (st(p) === "array") + for (var J = 0; J < v.length; J++) { + var X = v[J]; + if (q <= X) { + U = p[J]; + break; + } + if (q >= X && J === v.length - 1) { + U = p[J]; + break; + } + if (q > X && q < v[J + 1]) { + q = (q - X) / (v[J + 1] - X), U = Cr.interpolate(p[J], p[J + 1], q, n); + break; + } + } + else + st(p) === "function" && (U = p(q)); + D && (T[er] = U); + } + return U; + }, pr = function() { + return T = {}; + }; + V(e); + var j = function($) { + var N = Cr(hr($)); + return y && N[y] ? N[y]() : N; + }; + return j.classes = function($) { + if ($ != null) { + if (st($) === "array") + b = $, h = [$[0], $[$.length - 1]]; + else { + var N = Cr.analyze(h); + $ === 0 ? b = [N.min, N.max] : b = Cr.limits(N, "e", $); + } + return j; + } + return b; + }, j.domain = function($) { + if (!arguments.length) + return h; + M = $[0], x = $[$.length - 1], v = []; + var N = p.length; + if ($.length === N && M !== x) + for (var U = 0, q = Array.from($); U < q.length; U += 1) { + var br = q[U]; + v.push((br - M) / (x - M)); + } + else { + for (var er = 0; er < N; er++) + v.push(er / (N - 1)); + if ($.length > 2) { + var J = $.map(function(K, rr) { + return rr / ($.length - 1); + }), X = $.map(function(K) { + return (K - M) / (x - M); + }); + X.every(function(K, rr) { + return J[rr] === K; + }) || (dr = function(K) { + if (K <= 0 || K >= 1) + return K; + for (var rr = 0; K >= X[rr + 1]; ) + rr++; + var Tr = (K - X[rr]) / (X[rr + 1] - X[rr]), zr = J[rr] + Tr * (J[rr + 1] - J[rr]); + return zr; + }); + } + } + return h = [M, x], j; + }, j.mode = function($) { + return arguments.length ? (n = $, pr(), j) : n; + }, j.range = function($, N) { + return V($), j; + }, j.out = function($) { + return y = $, j; + }, j.spread = function($) { + return arguments.length ? (i = $, j) : i; + }, j.correctLightness = function($) { + return $ == null && ($ = !0), P = $, pr(), P ? Q = function(N) { + for (var U = hr(0, !0).lab()[0], q = hr(1, !0).lab()[0], br = U > q, er = hr(N, !0).lab()[0], J = U + (q - U) * N, X = er - J, K = 0, rr = 1, Tr = 20; Math.abs(X) > 0.01 && Tr-- > 0; ) + (function() { + return br && (X *= -1), X < 0 ? (K = N, N += (rr - N) * 0.5) : (rr = N, N += (K - N) * 0.5), er = hr(N, !0).lab()[0], X = er - J; + })(); + return N; + } : Q = function(N) { + return N; + }, j; + }, j.padding = function($) { + return $ != null ? (st($) === "number" && ($ = [$, $]), f = $, j) : f; + }, j.colors = function($, N) { + arguments.length < 2 && (N = "hex"); + var U = []; + if (arguments.length === 0) + U = p.slice(0); + else if ($ === 1) + U = [j(0.5)]; + else if ($ > 1) { + var q = h[0], br = h[1] - q; + U = l1(0, $, !1).map(function(rr) { + return j(q + rr / ($ - 1) * br); + }); + } else { + e = []; + var er = []; + if (b && b.length > 2) + for (var J = 1, X = b.length, K = 1 <= X; K ? J < X : J > X; K ? J++ : J--) + er.push((b[J - 1] + b[J]) * 0.5); + else + er = h; + U = er.map(function(rr) { + return j(rr); + }); + } + return Cr[N] && (U = U.map(function(rr) { + return rr[N](); + })), U; + }, j.cache = function($) { + return $ != null ? (D = $, j) : D; + }, j.gamma = function($) { + return $ != null ? (S = $, j) : S; + }, j.nodata = function($) { + return $ != null ? (c = Cr($), j) : c; + }, j; + }; + function l1(e, n, c) { + for (var i = [], h = e < n, v = c ? h ? n + 1 : n - 1 : n, f = e; h ? f < v : f > v; h ? f++ : f--) + i.push(f); + return i; + } + var mt = I, i1 = pe, u1 = function(e) { + for (var n = [1, 1], c = 1; c < e; c++) { + for (var i = [1], h = 1; h <= n.length; h++) + i[h] = (n[h] || 0) + n[h - 1]; + n = i; + } + return n; + }, f1 = function(e) { + var n, c, i, h, v, f, b; + if (e = e.map(function(P) { + return new mt(P); + }), e.length === 2) + n = e.map(function(P) { + return P.lab(); + }), v = n[0], f = n[1], h = function(P) { + var T = [0, 1, 2].map(function(D) { + return v[D] + P * (f[D] - v[D]); + }); + return new mt(T, "lab"); + }; + else if (e.length === 3) + c = e.map(function(P) { + return P.lab(); + }), v = c[0], f = c[1], b = c[2], h = function(P) { + var T = [0, 1, 2].map(function(D) { + return (1 - P) * (1 - P) * v[D] + 2 * (1 - P) * P * f[D] + P * P * b[D]; + }); + return new mt(T, "lab"); + }; + else if (e.length === 4) { + var p; + i = e.map(function(P) { + return P.lab(); + }), v = i[0], f = i[1], b = i[2], p = i[3], h = function(P) { + var T = [0, 1, 2].map(function(D) { + return (1 - P) * (1 - P) * (1 - P) * v[D] + 3 * (1 - P) * (1 - P) * P * f[D] + 3 * (1 - P) * P * P * b[D] + P * P * P * p[D]; + }); + return new mt(T, "lab"); + }; + } else if (e.length >= 5) { + var y, M, x; + y = e.map(function(P) { + return P.lab(); + }), x = e.length - 1, M = u1(x), h = function(P) { + var T = 1 - P, D = [0, 1, 2].map(function(S) { + return y.reduce(function(V, H, Q) { + return V + M[Q] * Math.pow(T, x - Q) * Math.pow(P, Q) * H[S]; + }, 0); + }); + return new mt(D, "lab"); + }; + } else + throw new RangeError("No point in running bezier with only one color."); + return h; + }, h1 = function(e) { + var n = f1(e); + return n.scale = function() { + return i1(n); + }, n; + }, me = z, Dr = function(e, n, c) { + if (!Dr[c]) + throw new Error("unknown blend mode " + c); + return Dr[c](e, n); + }, Br = function(e) { + return function(n, c) { + var i = me(c).rgb(), h = me(n).rgb(); + return me.rgb(e(i, h)); + }; + }, Lr = function(e) { + return function(n, c) { + var i = []; + return i[0] = e(n[0], c[0]), i[1] = e(n[1], c[1]), i[2] = e(n[2], c[2]), i; + }; + }, g1 = function(e) { + return e; + }, v1 = function(e, n) { + return e * n / 255; + }, d1 = function(e, n) { + return e > n ? n : e; + }, b1 = function(e, n) { + return e > n ? e : n; + }, p1 = function(e, n) { + return 255 * (1 - (1 - e / 255) * (1 - n / 255)); + }, m1 = function(e, n) { + return n < 128 ? 2 * e * n / 255 : 255 * (1 - 2 * (1 - e / 255) * (1 - n / 255)); + }, y1 = function(e, n) { + return 255 * (1 - (1 - n / 255) / (e / 255)); + }, k1 = function(e, n) { + return e === 255 ? 255 : (e = 255 * (n / 255) / (1 - e / 255), e > 255 ? 255 : e); + }; + Dr.normal = Br(Lr(g1)), Dr.multiply = Br(Lr(v1)), Dr.screen = Br(Lr(p1)), Dr.overlay = Br(Lr(m1)), Dr.darken = Br(Lr(d1)), Dr.lighten = Br(Lr(b1)), Dr.dodge = Br(Lr(k1)), Dr.burn = Br(Lr(y1)); + for (var w1 = Dr, ye = w.type, M1 = w.clip_rgb, P1 = w.TWOPI, _1 = Math.pow, $1 = Math.sin, F1 = Math.cos, Qa = z, x1 = function(e, n, c, i, h) { + e === void 0 && (e = 300), n === void 0 && (n = -1.5), c === void 0 && (c = 1), i === void 0 && (i = 1), h === void 0 && (h = [0, 1]); + var v = 0, f; + ye(h) === "array" ? f = h[1] - h[0] : (f = 0, h = [h, h]); + var b = function(p) { + var y = P1 * ((e + 120) / 360 + n * p), M = _1(h[0] + f * p, i), x = v !== 0 ? c[0] + p * v : c, P = x * M * (1 - M) / 2, T = F1(y), D = $1(y), S = M + P * (-0.14861 * T + 1.78277 * D), V = M + P * (-0.29227 * T - 0.90649 * D), H = M + P * (1.97294 * T); + return Qa(M1([S * 255, V * 255, H * 255, 1])); + }; + return b.start = function(p) { + return p == null ? e : (e = p, b); + }, b.rotations = function(p) { + return p == null ? n : (n = p, b); + }, b.gamma = function(p) { + return p == null ? i : (i = p, b); + }, b.hue = function(p) { + return p == null ? c : (c = p, ye(c) === "array" ? (v = c[1] - c[0], v === 0 && (c = c[1])) : v = 0, b); + }, b.lightness = function(p) { + return p == null ? h : (ye(p) === "array" ? (h = p, f = p[1] - p[0]) : (h = [p, p], f = 0), b); + }, b.scale = function() { + return Qa.scale(b); + }, b.hue(c), b; + }, C1 = I, D1 = "0123456789abcdef", T1 = Math.floor, A1 = Math.random, I1 = function() { + for (var e = "#", n = 0; n < 6; n++) + e += D1.charAt(T1(A1() * 16)); + return new C1(e, "hex"); + }, ke = k, Xa = Math.log, E1 = Math.pow, N1 = Math.floor, O1 = Math.abs, Ka = function(e, n) { + n === void 0 && (n = null); + var c = { + min: Number.MAX_VALUE, + max: Number.MAX_VALUE * -1, + sum: 0, + values: [], + count: 0 + }; + return ke(e) === "object" && (e = Object.values(e)), e.forEach(function(i) { + n && ke(i) === "object" && (i = i[n]), i != null && !isNaN(i) && (c.values.push(i), c.sum += i, i < c.min && (c.min = i), i > c.max && (c.max = i), c.count += 1); + }), c.domain = [c.min, c.max], c.limits = function(i, h) { + return rn(c, i, h); + }, c; + }, rn = function(e, n, c) { + n === void 0 && (n = "equal"), c === void 0 && (c = 7), ke(e) == "array" && (e = Ka(e)); + var i = e.min, h = e.max, v = e.values.sort(function(Me, Pe) { + return Me - Pe; + }); + if (c === 1) + return [i, h]; + var f = []; + if (n.substr(0, 1) === "c" && (f.push(i), f.push(h)), n.substr(0, 1) === "e") { + f.push(i); + for (var b = 1; b < c; b++) + f.push(i + b / c * (h - i)); + f.push(h); + } else if (n.substr(0, 1) === "l") { + if (i <= 0) + throw new Error("Logarithmic scales are only possible for values > 0"); + var p = Math.LOG10E * Xa(i), y = Math.LOG10E * Xa(h); + f.push(i); + for (var M = 1; M < c; M++) + f.push(E1(10, p + M / c * (y - p))); + f.push(h); + } else if (n.substr(0, 1) === "q") { + f.push(i); + for (var x = 1; x < c; x++) { + var P = (v.length - 1) * x / c, T = N1(P); + if (T === P) + f.push(v[T]); + else { + var D = P - T; + f.push(v[T] * (1 - D) + v[T + 1] * D); + } + } + f.push(h); + } else if (n.substr(0, 1) === "k") { + var S, V = v.length, H = new Array(V), Q = new Array(c), dr = !0, hr = 0, pr = null; + pr = [], pr.push(i); + for (var j = 1; j < c; j++) + pr.push(i + j / c * (h - i)); + for (pr.push(h); dr; ) { + for (var $ = 0; $ < c; $++) + Q[$] = 0; + for (var N = 0; N < V; N++) + for (var U = v[N], q = Number.MAX_VALUE, br = void 0, er = 0; er < c; er++) { + var J = O1(pr[er] - U); + J < q && (q = J, br = er), Q[br]++, H[N] = br; + } + for (var X = new Array(c), K = 0; K < c; K++) + X[K] = null; + for (var rr = 0; rr < V; rr++) + S = H[rr], X[S] === null ? X[S] = v[rr] : X[S] += v[rr]; + for (var Tr = 0; Tr < c; Tr++) + X[Tr] *= 1 / Q[Tr]; + dr = !1; + for (var zr = 0; zr < c; zr++) + if (X[zr] !== pr[zr]) { + dr = !0; + break; + } + pr = X, hr++, hr > 200 && (dr = !1); + } + for (var Sr = {}, ct = 0; ct < c; ct++) + Sr[ct] = []; + for (var lt = 0; lt < V; lt++) + S = H[lt], Sr[S].push(v[lt]); + for (var Or = [], Vr = 0; Vr < c; Vr++) + Or.push(Sr[Vr][0]), Or.push(Sr[Vr][Sr[Vr].length - 1]); + Or = Or.sort(function(Me, Pe) { + return Me - Pe; + }), f.push(Or[0]); + for (var yt = 1; yt < Or.length; yt += 2) { + var jr = Or[yt]; + !isNaN(jr) && f.indexOf(jr) === -1 && f.push(jr); + } + } + return f; + }, tn = { analyze: Ka, limits: rn }, en = I, R1 = function(e, n) { + e = new en(e), n = new en(n); + var c = e.luminance(), i = n.luminance(); + return c > i ? (c + 0.05) / (i + 0.05) : (i + 0.05) / (c + 0.05); + }, an = I, Nr = Math.sqrt, lr = Math.pow, B1 = Math.min, L1 = Math.max, nn = Math.atan2, on = Math.abs, Rt = Math.cos, sn = Math.sin, z1 = Math.exp, cn = Math.PI, S1 = function(e, n, c, i, h) { + c === void 0 && (c = 1), i === void 0 && (i = 1), h === void 0 && (h = 1); + var v = function(jr) { + return 360 * jr / (2 * cn); + }, f = function(jr) { + return 2 * cn * jr / 360; + }; + e = new an(e), n = new an(n); + var b = Array.from(e.lab()), p = b[0], y = b[1], M = b[2], x = Array.from(n.lab()), P = x[0], T = x[1], D = x[2], S = (p + P) / 2, V = Nr(lr(y, 2) + lr(M, 2)), H = Nr(lr(T, 2) + lr(D, 2)), Q = (V + H) / 2, dr = 0.5 * (1 - Nr(lr(Q, 7) / (lr(Q, 7) + lr(25, 7)))), hr = y * (1 + dr), pr = T * (1 + dr), j = Nr(lr(hr, 2) + lr(M, 2)), $ = Nr(lr(pr, 2) + lr(D, 2)), N = (j + $) / 2, U = v(nn(M, hr)), q = v(nn(D, pr)), br = U >= 0 ? U : U + 360, er = q >= 0 ? q : q + 360, J = on(br - er) > 180 ? (br + er + 360) / 2 : (br + er) / 2, X = 1 - 0.17 * Rt(f(J - 30)) + 0.24 * Rt(f(2 * J)) + 0.32 * Rt(f(3 * J + 6)) - 0.2 * Rt(f(4 * J - 63)), K = er - br; + K = on(K) <= 180 ? K : er <= br ? K + 360 : K - 360, K = 2 * Nr(j * $) * sn(f(K) / 2); + var rr = P - p, Tr = $ - j, zr = 1 + 0.015 * lr(S - 50, 2) / Nr(20 + lr(S - 50, 2)), Sr = 1 + 0.045 * N, ct = 1 + 0.015 * N * X, lt = 30 * z1(-lr((J - 275) / 25, 2)), Or = 2 * Nr(lr(N, 7) / (lr(N, 7) + lr(25, 7))), Vr = -Or * sn(2 * f(lt)), yt = Nr(lr(rr / (c * zr), 2) + lr(Tr / (i * Sr), 2) + lr(K / (h * ct), 2) + Vr * (Tr / (i * Sr)) * (K / (h * ct))); + return L1(0, B1(100, yt)); + }, ln = I, q1 = function(e, n, c) { + c === void 0 && (c = "lab"), e = new ln(e), n = new ln(n); + var i = e.get(c), h = n.get(c), v = 0; + for (var f in i) { + var b = (i[f] || 0) - (h[f] || 0); + v += b * b; + } + return Math.sqrt(v); + }, G1 = I, U1 = function() { + for (var e = [], n = arguments.length; n--; ) + e[n] = arguments[n]; + try { + return new (Function.prototype.bind.apply(G1, [null].concat(e)))(), !0; + } catch { + return !1; + } + }, un = z, fn = pe, Y1 = { + cool: function() { + return fn([un.hsl(180, 1, 0.9), un.hsl(250, 0.7, 0.4)]); + }, + hot: function() { + return fn(["#000", "#f00", "#ff0", "#fff"]).mode("rgb"); + } + }, Bt = { + // sequential + OrRd: ["#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548", "#d7301f", "#b30000", "#7f0000"], + PuBu: ["#fff7fb", "#ece7f2", "#d0d1e6", "#a6bddb", "#74a9cf", "#3690c0", "#0570b0", "#045a8d", "#023858"], + BuPu: ["#f7fcfd", "#e0ecf4", "#bfd3e6", "#9ebcda", "#8c96c6", "#8c6bb1", "#88419d", "#810f7c", "#4d004b"], + Oranges: ["#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"], + BuGn: ["#f7fcfd", "#e5f5f9", "#ccece6", "#99d8c9", "#66c2a4", "#41ae76", "#238b45", "#006d2c", "#00441b"], + YlOrBr: ["#ffffe5", "#fff7bc", "#fee391", "#fec44f", "#fe9929", "#ec7014", "#cc4c02", "#993404", "#662506"], + YlGn: ["#ffffe5", "#f7fcb9", "#d9f0a3", "#addd8e", "#78c679", "#41ab5d", "#238443", "#006837", "#004529"], + Reds: ["#fff5f0", "#fee0d2", "#fcbba1", "#fc9272", "#fb6a4a", "#ef3b2c", "#cb181d", "#a50f15", "#67000d"], + RdPu: ["#fff7f3", "#fde0dd", "#fcc5c0", "#fa9fb5", "#f768a1", "#dd3497", "#ae017e", "#7a0177", "#49006a"], + Greens: ["#f7fcf5", "#e5f5e0", "#c7e9c0", "#a1d99b", "#74c476", "#41ab5d", "#238b45", "#006d2c", "#00441b"], + YlGnBu: ["#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb", "#41b6c4", "#1d91c0", "#225ea8", "#253494", "#081d58"], + Purples: ["#fcfbfd", "#efedf5", "#dadaeb", "#bcbddc", "#9e9ac8", "#807dba", "#6a51a3", "#54278f", "#3f007d"], + GnBu: ["#f7fcf0", "#e0f3db", "#ccebc5", "#a8ddb5", "#7bccc4", "#4eb3d3", "#2b8cbe", "#0868ac", "#084081"], + Greys: ["#ffffff", "#f0f0f0", "#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"], + YlOrRd: ["#ffffcc", "#ffeda0", "#fed976", "#feb24c", "#fd8d3c", "#fc4e2a", "#e31a1c", "#bd0026", "#800026"], + PuRd: ["#f7f4f9", "#e7e1ef", "#d4b9da", "#c994c7", "#df65b0", "#e7298a", "#ce1256", "#980043", "#67001f"], + Blues: ["#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"], + PuBuGn: ["#fff7fb", "#ece2f0", "#d0d1e6", "#a6bddb", "#67a9cf", "#3690c0", "#02818a", "#016c59", "#014636"], + Viridis: ["#440154", "#482777", "#3f4a8a", "#31678e", "#26838f", "#1f9d8a", "#6cce5a", "#b6de2b", "#fee825"], + // diverging + Spectral: ["#9e0142", "#d53e4f", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#e6f598", "#abdda4", "#66c2a5", "#3288bd", "#5e4fa2"], + RdYlGn: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#d9ef8b", "#a6d96a", "#66bd63", "#1a9850", "#006837"], + RdBu: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#f7f7f7", "#d1e5f0", "#92c5de", "#4393c3", "#2166ac", "#053061"], + PiYG: ["#8e0152", "#c51b7d", "#de77ae", "#f1b6da", "#fde0ef", "#f7f7f7", "#e6f5d0", "#b8e186", "#7fbc41", "#4d9221", "#276419"], + PRGn: ["#40004b", "#762a83", "#9970ab", "#c2a5cf", "#e7d4e8", "#f7f7f7", "#d9f0d3", "#a6dba0", "#5aae61", "#1b7837", "#00441b"], + RdYlBu: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4", "#313695"], + BrBG: ["#543005", "#8c510a", "#bf812d", "#dfc27d", "#f6e8c3", "#f5f5f5", "#c7eae5", "#80cdc1", "#35978f", "#01665e", "#003c30"], + RdGy: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#ffffff", "#e0e0e0", "#bababa", "#878787", "#4d4d4d", "#1a1a1a"], + PuOr: ["#7f3b08", "#b35806", "#e08214", "#fdb863", "#fee0b6", "#f7f7f7", "#d8daeb", "#b2abd2", "#8073ac", "#542788", "#2d004b"], + // qualitative + Set2: ["#66c2a5", "#fc8d62", "#8da0cb", "#e78ac3", "#a6d854", "#ffd92f", "#e5c494", "#b3b3b3"], + Accent: ["#7fc97f", "#beaed4", "#fdc086", "#ffff99", "#386cb0", "#f0027f", "#bf5b17", "#666666"], + Set1: ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999"], + Set3: ["#8dd3c7", "#ffffb3", "#bebada", "#fb8072", "#80b1d3", "#fdb462", "#b3de69", "#fccde5", "#d9d9d9", "#bc80bd", "#ccebc5", "#ffed6f"], + Dark2: ["#1b9e77", "#d95f02", "#7570b3", "#e7298a", "#66a61e", "#e6ab02", "#a6761d", "#666666"], + Paired: ["#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f", "#ff7f00", "#cab2d6", "#6a3d9a", "#ffff99", "#b15928"], + Pastel2: ["#b3e2cd", "#fdcdac", "#cbd5e8", "#f4cae4", "#e6f5c9", "#fff2ae", "#f1e2cc", "#cccccc"], + Pastel1: ["#fbb4ae", "#b3cde3", "#ccebc5", "#decbe4", "#fed9a6", "#ffffcc", "#e5d8bd", "#fddaec", "#f2f2f2"] + }, we = 0, hn = Object.keys(Bt); we < hn.length; we += 1) { + var gn = hn[we]; + Bt[gn.toLowerCase()] = Bt[gn]; + } + var V1 = Bt, fr = z; + fr.average = o1, fr.bezier = h1, fr.blend = w1, fr.cubehelix = x1, fr.mix = fr.interpolate = Ga, fr.random = I1, fr.scale = pe, fr.analyze = tn.analyze, fr.contrast = R1, fr.deltaE = S1, fr.distance = q1, fr.limits = tn.limits, fr.valid = U1, fr.scales = Y1, fr.colors = _a, fr.brewer = V1; + var j1 = fr; + return j1; + }); +})(Fn); +var cc = Fn.exports; +const Wr = /* @__PURE__ */ Le(cc); +var lc = 4, ic = 1e-3, uc = 1e-7, fc = 10, kt = 11, Lt = 1 / (kt - 1), hc = typeof Float32Array == "function"; +function xn(r, t) { + return 1 - 3 * t + 3 * r; +} +function Cn(r, t) { + return 3 * t - 6 * r; +} +function Dn(r) { + return 3 * r; +} +function Gt(r, t, a) { + return ((xn(t, a) * r + Cn(t, a)) * r + Dn(t)) * r; +} +function Tn(r, t, a) { + return 3 * xn(t, a) * r * r + 2 * Cn(t, a) * r + Dn(t); +} +function gc(r, t, a, o, s) { + var l, u, g = 0; + do + u = t + (a - t) / 2, l = Gt(u, o, s) - r, l > 0 ? a = u : t = u; + while (Math.abs(l) > uc && ++g < fc); + return u; +} +function vc(r, t, a, o) { + for (var s = 0; s < lc; ++s) { + var l = Tn(t, a, o); + if (l === 0) + return t; + var u = Gt(t, a, o) - r; + t -= u / l; + } + return t; +} +function dc(r) { + return r; +} +var bc = function(t, a, o, s) { + if (!(0 <= t && t <= 1 && 0 <= o && o <= 1)) + throw new Error("bezier x values must be in [0, 1] range"); + if (t === a && o === s) + return dc; + for (var l = hc ? new Float32Array(kt) : new Array(kt), u = 0; u < kt; ++u) + l[u] = Gt(u * Lt, t, o); + function g(d) { + for (var k = 0, _ = 1, C = kt - 1; _ !== C && l[_] <= d; ++_) + k += Lt; + --_; + var O = (d - l[_]) / (l[_ + 1] - l[_]), L = k + O * Lt, B = Tn(L, t, o); + return B >= ic ? vc(d, L, t, o) : B === 0 ? L : gc(d, k, k + Lt, t, o); + } + return function(k) { + return k === 0 ? 0 : k === 1 ? 1 : Gt(g(k), a, s); + }; +}; +const St = /* @__PURE__ */ Le(bc); +var An = { exports: {} }, In = { + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + grey: [128, 128, 128], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + rebeccapurple: [102, 51, 153], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] +}, En = { exports: {} }, pc = function(t) { + return !t || typeof t == "string" ? !1 : t instanceof Array || Array.isArray(t) || t.length >= 0 && (t.splice instanceof Function || Object.getOwnPropertyDescriptor(t, t.length - 1) && t.constructor.name !== "String"); +}, mc = pc, yc = Array.prototype.concat, kc = Array.prototype.slice, bn = En.exports = function(t) { + for (var a = [], o = 0, s = t.length; o < s; o++) { + var l = t[o]; + mc(l) ? a = yc.call(a, kc.call(l)) : a.push(l); + } + return a; +}; +bn.wrap = function(r) { + return function() { + return r(bn(arguments)); + }; +}; +var wc = En.exports, Mt = In, $t = wc, Nn = Object.hasOwnProperty, On = /* @__PURE__ */ Object.create(null); +for (var _e in Mt) + Nn.call(Mt, _e) && (On[Mt[_e]] = _e); +var _r = An.exports = { + to: {}, + get: {} +}; +_r.get = function(r) { + var t = r.substring(0, 3).toLowerCase(), a, o; + switch (t) { + case "hsl": + a = _r.get.hsl(r), o = "hsl"; + break; + case "hwb": + a = _r.get.hwb(r), o = "hwb"; + break; + default: + a = _r.get.rgb(r), o = "rgb"; + break; + } + return a ? { model: o, value: a } : null; +}; +_r.get.rgb = function(r) { + if (!r) + return null; + var t = /^#([a-f0-9]{3,4})$/i, a = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i, o = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/, s = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/, l = /^(\w+)$/, u = [0, 0, 0, 1], g, d, k; + if (g = r.match(a)) { + for (k = g[2], g = g[1], d = 0; d < 3; d++) { + var _ = d * 2; + u[d] = parseInt(g.slice(_, _ + 2), 16); + } + k && (u[3] = parseInt(k, 16) / 255); + } else if (g = r.match(t)) { + for (g = g[1], k = g[3], d = 0; d < 3; d++) + u[d] = parseInt(g[d] + g[d], 16); + k && (u[3] = parseInt(k + k, 16) / 255); + } else if (g = r.match(o)) { + for (d = 0; d < 3; d++) + u[d] = parseInt(g[d + 1], 0); + g[4] && (g[5] ? u[3] = parseFloat(g[4]) * 0.01 : u[3] = parseFloat(g[4])); + } else if (g = r.match(s)) { + for (d = 0; d < 3; d++) + u[d] = Math.round(parseFloat(g[d + 1]) * 2.55); + g[4] && (g[5] ? u[3] = parseFloat(g[4]) * 0.01 : u[3] = parseFloat(g[4])); + } else + return (g = r.match(l)) ? g[1] === "transparent" ? [0, 0, 0, 0] : Nn.call(Mt, g[1]) ? (u = Mt[g[1]], u[3] = 1, u) : null : null; + for (d = 0; d < 3; d++) + u[d] = Gr(u[d], 0, 255); + return u[3] = Gr(u[3], 0, 1), u; +}; +_r.get.hsl = function(r) { + if (!r) + return null; + var t = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/, a = r.match(t); + if (a) { + var o = parseFloat(a[4]), s = (parseFloat(a[1]) % 360 + 360) % 360, l = Gr(parseFloat(a[2]), 0, 100), u = Gr(parseFloat(a[3]), 0, 100), g = Gr(isNaN(o) ? 1 : o, 0, 1); + return [s, l, u, g]; + } + return null; +}; +_r.get.hwb = function(r) { + if (!r) + return null; + var t = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/, a = r.match(t); + if (a) { + var o = parseFloat(a[4]), s = (parseFloat(a[1]) % 360 + 360) % 360, l = Gr(parseFloat(a[2]), 0, 100), u = Gr(parseFloat(a[3]), 0, 100), g = Gr(isNaN(o) ? 1 : o, 0, 1); + return [s, l, u, g]; + } + return null; +}; +_r.to.hex = function() { + var r = $t(arguments); + return "#" + zt(r[0]) + zt(r[1]) + zt(r[2]) + (r[3] < 1 ? zt(Math.round(r[3] * 255)) : ""); +}; +_r.to.rgb = function() { + var r = $t(arguments); + return r.length < 4 || r[3] === 1 ? "rgb(" + Math.round(r[0]) + ", " + Math.round(r[1]) + ", " + Math.round(r[2]) + ")" : "rgba(" + Math.round(r[0]) + ", " + Math.round(r[1]) + ", " + Math.round(r[2]) + ", " + r[3] + ")"; +}; +_r.to.rgb.percent = function() { + var r = $t(arguments), t = Math.round(r[0] / 255 * 100), a = Math.round(r[1] / 255 * 100), o = Math.round(r[2] / 255 * 100); + return r.length < 4 || r[3] === 1 ? "rgb(" + t + "%, " + a + "%, " + o + "%)" : "rgba(" + t + "%, " + a + "%, " + o + "%, " + r[3] + ")"; +}; +_r.to.hsl = function() { + var r = $t(arguments); + return r.length < 4 || r[3] === 1 ? "hsl(" + r[0] + ", " + r[1] + "%, " + r[2] + "%)" : "hsla(" + r[0] + ", " + r[1] + "%, " + r[2] + "%, " + r[3] + ")"; +}; +_r.to.hwb = function() { + var r = $t(arguments), t = ""; + return r.length >= 4 && r[3] !== 1 && (t = ", " + r[3]), "hwb(" + r[0] + ", " + r[1] + "%, " + r[2] + "%" + t + ")"; +}; +_r.to.keyword = function(r) { + return On[r.slice(0, 3)]; +}; +function Gr(r, t, a) { + return Math.min(Math.max(t, r), a); +} +function zt(r) { + var t = Math.round(r).toString(16).toUpperCase(); + return t.length < 2 ? "0" + t : t; +} +var Mc = An.exports; +const _t = In, Rn = {}; +for (const r of Object.keys(_t)) + Rn[_t[r]] = r; +const A = { + rgb: { channels: 3, labels: "rgb" }, + hsl: { channels: 3, labels: "hsl" }, + hsv: { channels: 3, labels: "hsv" }, + hwb: { channels: 3, labels: "hwb" }, + cmyk: { channels: 4, labels: "cmyk" }, + xyz: { channels: 3, labels: "xyz" }, + lab: { channels: 3, labels: "lab" }, + lch: { channels: 3, labels: "lch" }, + hex: { channels: 1, labels: ["hex"] }, + keyword: { channels: 1, labels: ["keyword"] }, + ansi16: { channels: 1, labels: ["ansi16"] }, + ansi256: { channels: 1, labels: ["ansi256"] }, + hcg: { channels: 3, labels: ["h", "c", "g"] }, + apple: { channels: 3, labels: ["r16", "g16", "b16"] }, + gray: { channels: 1, labels: ["gray"] } +}; +var Bn = A; +for (const r of Object.keys(A)) { + if (!("channels" in A[r])) + throw new Error("missing channels property: " + r); + if (!("labels" in A[r])) + throw new Error("missing channel labels property: " + r); + if (A[r].labels.length !== A[r].channels) + throw new Error("channel and label counts mismatch: " + r); + const { channels: t, labels: a } = A[r]; + delete A[r].channels, delete A[r].labels, Object.defineProperty(A[r], "channels", { value: t }), Object.defineProperty(A[r], "labels", { value: a }); +} +A.rgb.hsl = function(r) { + const t = r[0] / 255, a = r[1] / 255, o = r[2] / 255, s = Math.min(t, a, o), l = Math.max(t, a, o), u = l - s; + let g, d; + l === s ? g = 0 : t === l ? g = (a - o) / u : a === l ? g = 2 + (o - t) / u : o === l && (g = 4 + (t - a) / u), g = Math.min(g * 60, 360), g < 0 && (g += 360); + const k = (s + l) / 2; + return l === s ? d = 0 : k <= 0.5 ? d = u / (l + s) : d = u / (2 - l - s), [g, d * 100, k * 100]; +}; +A.rgb.hsv = function(r) { + let t, a, o, s, l; + const u = r[0] / 255, g = r[1] / 255, d = r[2] / 255, k = Math.max(u, g, d), _ = k - Math.min(u, g, d), C = function(O) { + return (k - O) / 6 / _ + 1 / 2; + }; + return _ === 0 ? (s = 0, l = 0) : (l = _ / k, t = C(u), a = C(g), o = C(d), u === k ? s = o - a : g === k ? s = 1 / 3 + t - o : d === k && (s = 2 / 3 + a - t), s < 0 ? s += 1 : s > 1 && (s -= 1)), [ + s * 360, + l * 100, + k * 100 + ]; +}; +A.rgb.hwb = function(r) { + const t = r[0], a = r[1]; + let o = r[2]; + const s = A.rgb.hsl(r)[0], l = 1 / 255 * Math.min(t, Math.min(a, o)); + return o = 1 - 1 / 255 * Math.max(t, Math.max(a, o)), [s, l * 100, o * 100]; +}; +A.rgb.cmyk = function(r) { + const t = r[0] / 255, a = r[1] / 255, o = r[2] / 255, s = Math.min(1 - t, 1 - a, 1 - o), l = (1 - t - s) / (1 - s) || 0, u = (1 - a - s) / (1 - s) || 0, g = (1 - o - s) / (1 - s) || 0; + return [l * 100, u * 100, g * 100, s * 100]; +}; +function Pc(r, t) { + return (r[0] - t[0]) ** 2 + (r[1] - t[1]) ** 2 + (r[2] - t[2]) ** 2; +} +A.rgb.keyword = function(r) { + const t = Rn[r]; + if (t) + return t; + let a = 1 / 0, o; + for (const s of Object.keys(_t)) { + const l = _t[s], u = Pc(r, l); + u < a && (a = u, o = s); + } + return o; +}; +A.keyword.rgb = function(r) { + return _t[r]; +}; +A.rgb.xyz = function(r) { + let t = r[0] / 255, a = r[1] / 255, o = r[2] / 255; + t = t > 0.04045 ? ((t + 0.055) / 1.055) ** 2.4 : t / 12.92, a = a > 0.04045 ? ((a + 0.055) / 1.055) ** 2.4 : a / 12.92, o = o > 0.04045 ? ((o + 0.055) / 1.055) ** 2.4 : o / 12.92; + const s = t * 0.4124 + a * 0.3576 + o * 0.1805, l = t * 0.2126 + a * 0.7152 + o * 0.0722, u = t * 0.0193 + a * 0.1192 + o * 0.9505; + return [s * 100, l * 100, u * 100]; +}; +A.rgb.lab = function(r) { + const t = A.rgb.xyz(r); + let a = t[0], o = t[1], s = t[2]; + a /= 95.047, o /= 100, s /= 108.883, a = a > 8856e-6 ? a ** (1 / 3) : 7.787 * a + 16 / 116, o = o > 8856e-6 ? o ** (1 / 3) : 7.787 * o + 16 / 116, s = s > 8856e-6 ? s ** (1 / 3) : 7.787 * s + 16 / 116; + const l = 116 * o - 16, u = 500 * (a - o), g = 200 * (o - s); + return [l, u, g]; +}; +A.hsl.rgb = function(r) { + const t = r[0] / 360, a = r[1] / 100, o = r[2] / 100; + let s, l, u; + if (a === 0) + return u = o * 255, [u, u, u]; + o < 0.5 ? s = o * (1 + a) : s = o + a - o * a; + const g = 2 * o - s, d = [0, 0, 0]; + for (let k = 0; k < 3; k++) + l = t + 1 / 3 * -(k - 1), l < 0 && l++, l > 1 && l--, 6 * l < 1 ? u = g + (s - g) * 6 * l : 2 * l < 1 ? u = s : 3 * l < 2 ? u = g + (s - g) * (2 / 3 - l) * 6 : u = g, d[k] = u * 255; + return d; +}; +A.hsl.hsv = function(r) { + const t = r[0]; + let a = r[1] / 100, o = r[2] / 100, s = a; + const l = Math.max(o, 0.01); + o *= 2, a *= o <= 1 ? o : 2 - o, s *= l <= 1 ? l : 2 - l; + const u = (o + a) / 2, g = o === 0 ? 2 * s / (l + s) : 2 * a / (o + a); + return [t, g * 100, u * 100]; +}; +A.hsv.rgb = function(r) { + const t = r[0] / 60, a = r[1] / 100; + let o = r[2] / 100; + const s = Math.floor(t) % 6, l = t - Math.floor(t), u = 255 * o * (1 - a), g = 255 * o * (1 - a * l), d = 255 * o * (1 - a * (1 - l)); + switch (o *= 255, s) { + case 0: + return [o, d, u]; + case 1: + return [g, o, u]; + case 2: + return [u, o, d]; + case 3: + return [u, g, o]; + case 4: + return [d, u, o]; + case 5: + return [o, u, g]; + } +}; +A.hsv.hsl = function(r) { + const t = r[0], a = r[1] / 100, o = r[2] / 100, s = Math.max(o, 0.01); + let l, u; + u = (2 - a) * o; + const g = (2 - a) * s; + return l = a * s, l /= g <= 1 ? g : 2 - g, l = l || 0, u /= 2, [t, l * 100, u * 100]; +}; +A.hwb.rgb = function(r) { + const t = r[0] / 360; + let a = r[1] / 100, o = r[2] / 100; + const s = a + o; + let l; + s > 1 && (a /= s, o /= s); + const u = Math.floor(6 * t), g = 1 - o; + l = 6 * t - u, u & 1 && (l = 1 - l); + const d = a + l * (g - a); + let k, _, C; + switch (u) { + default: + case 6: + case 0: + k = g, _ = d, C = a; + break; + case 1: + k = d, _ = g, C = a; + break; + case 2: + k = a, _ = g, C = d; + break; + case 3: + k = a, _ = d, C = g; + break; + case 4: + k = d, _ = a, C = g; + break; + case 5: + k = g, _ = a, C = d; + break; + } + return [k * 255, _ * 255, C * 255]; +}; +A.cmyk.rgb = function(r) { + const t = r[0] / 100, a = r[1] / 100, o = r[2] / 100, s = r[3] / 100, l = 1 - Math.min(1, t * (1 - s) + s), u = 1 - Math.min(1, a * (1 - s) + s), g = 1 - Math.min(1, o * (1 - s) + s); + return [l * 255, u * 255, g * 255]; +}; +A.xyz.rgb = function(r) { + const t = r[0] / 100, a = r[1] / 100, o = r[2] / 100; + let s, l, u; + return s = t * 3.2406 + a * -1.5372 + o * -0.4986, l = t * -0.9689 + a * 1.8758 + o * 0.0415, u = t * 0.0557 + a * -0.204 + o * 1.057, s = s > 31308e-7 ? 1.055 * s ** (1 / 2.4) - 0.055 : s * 12.92, l = l > 31308e-7 ? 1.055 * l ** (1 / 2.4) - 0.055 : l * 12.92, u = u > 31308e-7 ? 1.055 * u ** (1 / 2.4) - 0.055 : u * 12.92, s = Math.min(Math.max(0, s), 1), l = Math.min(Math.max(0, l), 1), u = Math.min(Math.max(0, u), 1), [s * 255, l * 255, u * 255]; +}; +A.xyz.lab = function(r) { + let t = r[0], a = r[1], o = r[2]; + t /= 95.047, a /= 100, o /= 108.883, t = t > 8856e-6 ? t ** (1 / 3) : 7.787 * t + 16 / 116, a = a > 8856e-6 ? a ** (1 / 3) : 7.787 * a + 16 / 116, o = o > 8856e-6 ? o ** (1 / 3) : 7.787 * o + 16 / 116; + const s = 116 * a - 16, l = 500 * (t - a), u = 200 * (a - o); + return [s, l, u]; +}; +A.lab.xyz = function(r) { + const t = r[0], a = r[1], o = r[2]; + let s, l, u; + l = (t + 16) / 116, s = a / 500 + l, u = l - o / 200; + const g = l ** 3, d = s ** 3, k = u ** 3; + return l = g > 8856e-6 ? g : (l - 16 / 116) / 7.787, s = d > 8856e-6 ? d : (s - 16 / 116) / 7.787, u = k > 8856e-6 ? k : (u - 16 / 116) / 7.787, s *= 95.047, l *= 100, u *= 108.883, [s, l, u]; +}; +A.lab.lch = function(r) { + const t = r[0], a = r[1], o = r[2]; + let s; + s = Math.atan2(o, a) * 360 / 2 / Math.PI, s < 0 && (s += 360); + const u = Math.sqrt(a * a + o * o); + return [t, u, s]; +}; +A.lch.lab = function(r) { + const t = r[0], a = r[1], s = r[2] / 360 * 2 * Math.PI, l = a * Math.cos(s), u = a * Math.sin(s); + return [t, l, u]; +}; +A.rgb.ansi16 = function(r, t = null) { + const [a, o, s] = r; + let l = t === null ? A.rgb.hsv(r)[2] : t; + if (l = Math.round(l / 50), l === 0) + return 30; + let u = 30 + (Math.round(s / 255) << 2 | Math.round(o / 255) << 1 | Math.round(a / 255)); + return l === 2 && (u += 60), u; +}; +A.hsv.ansi16 = function(r) { + return A.rgb.ansi16(A.hsv.rgb(r), r[2]); +}; +A.rgb.ansi256 = function(r) { + const t = r[0], a = r[1], o = r[2]; + return t === a && a === o ? t < 8 ? 16 : t > 248 ? 231 : Math.round((t - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(t / 255 * 5) + 6 * Math.round(a / 255 * 5) + Math.round(o / 255 * 5); +}; +A.ansi16.rgb = function(r) { + let t = r % 10; + if (t === 0 || t === 7) + return r > 50 && (t += 3.5), t = t / 10.5 * 255, [t, t, t]; + const a = (~~(r > 50) + 1) * 0.5, o = (t & 1) * a * 255, s = (t >> 1 & 1) * a * 255, l = (t >> 2 & 1) * a * 255; + return [o, s, l]; +}; +A.ansi256.rgb = function(r) { + if (r >= 232) { + const l = (r - 232) * 10 + 8; + return [l, l, l]; + } + r -= 16; + let t; + const a = Math.floor(r / 36) / 5 * 255, o = Math.floor((t = r % 36) / 6) / 5 * 255, s = t % 6 / 5 * 255; + return [a, o, s]; +}; +A.rgb.hex = function(r) { + const a = (((Math.round(r[0]) & 255) << 16) + ((Math.round(r[1]) & 255) << 8) + (Math.round(r[2]) & 255)).toString(16).toUpperCase(); + return "000000".substring(a.length) + a; +}; +A.hex.rgb = function(r) { + const t = r.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!t) + return [0, 0, 0]; + let a = t[0]; + t[0].length === 3 && (a = a.split("").map((g) => g + g).join("")); + const o = parseInt(a, 16), s = o >> 16 & 255, l = o >> 8 & 255, u = o & 255; + return [s, l, u]; +}; +A.rgb.hcg = function(r) { + const t = r[0] / 255, a = r[1] / 255, o = r[2] / 255, s = Math.max(Math.max(t, a), o), l = Math.min(Math.min(t, a), o), u = s - l; + let g, d; + return u < 1 ? g = l / (1 - u) : g = 0, u <= 0 ? d = 0 : s === t ? d = (a - o) / u % 6 : s === a ? d = 2 + (o - t) / u : d = 4 + (t - a) / u, d /= 6, d %= 1, [d * 360, u * 100, g * 100]; +}; +A.hsl.hcg = function(r) { + const t = r[1] / 100, a = r[2] / 100, o = a < 0.5 ? 2 * t * a : 2 * t * (1 - a); + let s = 0; + return o < 1 && (s = (a - 0.5 * o) / (1 - o)), [r[0], o * 100, s * 100]; +}; +A.hsv.hcg = function(r) { + const t = r[1] / 100, a = r[2] / 100, o = t * a; + let s = 0; + return o < 1 && (s = (a - o) / (1 - o)), [r[0], o * 100, s * 100]; +}; +A.hcg.rgb = function(r) { + const t = r[0] / 360, a = r[1] / 100, o = r[2] / 100; + if (a === 0) + return [o * 255, o * 255, o * 255]; + const s = [0, 0, 0], l = t % 1 * 6, u = l % 1, g = 1 - u; + let d = 0; + switch (Math.floor(l)) { + case 0: + s[0] = 1, s[1] = u, s[2] = 0; + break; + case 1: + s[0] = g, s[1] = 1, s[2] = 0; + break; + case 2: + s[0] = 0, s[1] = 1, s[2] = u; + break; + case 3: + s[0] = 0, s[1] = g, s[2] = 1; + break; + case 4: + s[0] = u, s[1] = 0, s[2] = 1; + break; + default: + s[0] = 1, s[1] = 0, s[2] = g; + } + return d = (1 - a) * o, [ + (a * s[0] + d) * 255, + (a * s[1] + d) * 255, + (a * s[2] + d) * 255 + ]; +}; +A.hcg.hsv = function(r) { + const t = r[1] / 100, a = r[2] / 100, o = t + a * (1 - t); + let s = 0; + return o > 0 && (s = t / o), [r[0], s * 100, o * 100]; +}; +A.hcg.hsl = function(r) { + const t = r[1] / 100, o = r[2] / 100 * (1 - t) + 0.5 * t; + let s = 0; + return o > 0 && o < 0.5 ? s = t / (2 * o) : o >= 0.5 && o < 1 && (s = t / (2 * (1 - o))), [r[0], s * 100, o * 100]; +}; +A.hcg.hwb = function(r) { + const t = r[1] / 100, a = r[2] / 100, o = t + a * (1 - t); + return [r[0], (o - t) * 100, (1 - o) * 100]; +}; +A.hwb.hcg = function(r) { + const t = r[1] / 100, o = 1 - r[2] / 100, s = o - t; + let l = 0; + return s < 1 && (l = (o - s) / (1 - s)), [r[0], s * 100, l * 100]; +}; +A.apple.rgb = function(r) { + return [r[0] / 65535 * 255, r[1] / 65535 * 255, r[2] / 65535 * 255]; +}; +A.rgb.apple = function(r) { + return [r[0] / 255 * 65535, r[1] / 255 * 65535, r[2] / 255 * 65535]; +}; +A.gray.rgb = function(r) { + return [r[0] / 100 * 255, r[0] / 100 * 255, r[0] / 100 * 255]; +}; +A.gray.hsl = function(r) { + return [0, 0, r[0]]; +}; +A.gray.hsv = A.gray.hsl; +A.gray.hwb = function(r) { + return [0, 100, r[0]]; +}; +A.gray.cmyk = function(r) { + return [0, 0, 0, r[0]]; +}; +A.gray.lab = function(r) { + return [r[0], 0, 0]; +}; +A.gray.hex = function(r) { + const t = Math.round(r[0] / 100 * 255) & 255, o = ((t << 16) + (t << 8) + t).toString(16).toUpperCase(); + return "000000".substring(o.length) + o; +}; +A.rgb.gray = function(r) { + return [(r[0] + r[1] + r[2]) / 3 / 255 * 100]; +}; +const Ut = Bn; +function _c() { + const r = {}, t = Object.keys(Ut); + for (let a = t.length, o = 0; o < a; o++) + r[t[o]] = { + // http://jsperf.com/1-vs-infinity + // micro-opt, but this is simple. + distance: -1, + parent: null + }; + return r; +} +function $c(r) { + const t = _c(), a = [r]; + for (t[r].distance = 0; a.length; ) { + const o = a.pop(), s = Object.keys(Ut[o]); + for (let l = s.length, u = 0; u < l; u++) { + const g = s[u], d = t[g]; + d.distance === -1 && (d.distance = t[o].distance + 1, d.parent = o, a.unshift(g)); + } + } + return t; +} +function Fc(r, t) { + return function(a) { + return t(r(a)); + }; +} +function xc(r, t) { + const a = [t[r].parent, r]; + let o = Ut[t[r].parent][r], s = t[r].parent; + for (; t[s].parent; ) + a.unshift(t[s].parent), o = Fc(Ut[t[s].parent][s], o), s = t[s].parent; + return o.conversion = a, o; +} +var Cc = function(r) { + const t = $c(r), a = {}, o = Object.keys(t); + for (let s = o.length, l = 0; l < s; l++) { + const u = o[l]; + t[u].parent !== null && (a[u] = xc(u, t)); + } + return a; +}; +const De = Bn, Dc = Cc, it = {}, Tc = Object.keys(De); +function Ac(r) { + const t = function(...a) { + const o = a[0]; + return o == null ? o : (o.length > 1 && (a = o), r(a)); + }; + return "conversion" in r && (t.conversion = r.conversion), t; +} +function Ic(r) { + const t = function(...a) { + const o = a[0]; + if (o == null) + return o; + o.length > 1 && (a = o); + const s = r(a); + if (typeof s == "object") + for (let l = s.length, u = 0; u < l; u++) + s[u] = Math.round(s[u]); + return s; + }; + return "conversion" in r && (t.conversion = r.conversion), t; +} +Tc.forEach((r) => { + it[r] = {}, Object.defineProperty(it[r], "channels", { value: De[r].channels }), Object.defineProperty(it[r], "labels", { value: De[r].labels }); + const t = Dc(r); + Object.keys(t).forEach((o) => { + const s = t[o]; + it[r][o] = Ic(s), it[r][o].raw = Ac(s); + }); +}); +var Ec = it; +const ut = Mc, Pr = Ec, Ln = [ + // To be honest, I don't really feel like keyword belongs in color convert, but eh. + "keyword", + // Gray conflicts with some method names, and has its own method defined. + "gray", + // Shouldn't really be in color-convert either... + "hex" +], Te = {}; +for (const r of Object.keys(Pr)) + Te[[...Pr[r].labels].sort().join("")] = r; +const Yt = {}; +function vr(r, t) { + if (!(this instanceof vr)) + return new vr(r, t); + if (t && t in Ln && (t = null), t && !(t in Pr)) + throw new Error("Unknown model: " + t); + let a, o; + if (r == null) + this.model = "rgb", this.color = [0, 0, 0], this.valpha = 1; + else if (r instanceof vr) + this.model = r.model, this.color = [...r.color], this.valpha = r.valpha; + else if (typeof r == "string") { + const s = ut.get(r); + if (s === null) + throw new Error("Unable to parse color from string: " + r); + this.model = s.model, o = Pr[this.model].channels, this.color = s.value.slice(0, o), this.valpha = typeof s.value[o] == "number" ? s.value[o] : 1; + } else if (r.length > 0) { + this.model = t || "rgb", o = Pr[this.model].channels; + const s = Array.prototype.slice.call(r, 0, o); + this.color = Ae(s, o), this.valpha = typeof r[o] == "number" ? r[o] : 1; + } else if (typeof r == "number") + this.model = "rgb", this.color = [ + r >> 16 & 255, + r >> 8 & 255, + r & 255 + ], this.valpha = 1; + else { + this.valpha = 1; + const s = Object.keys(r); + "alpha" in r && (s.splice(s.indexOf("alpha"), 1), this.valpha = typeof r.alpha == "number" ? r.alpha : 0); + const l = s.sort().join(""); + if (!(l in Te)) + throw new Error("Unable to parse color from object: " + JSON.stringify(r)); + this.model = Te[l]; + const { labels: u } = Pr[this.model], g = []; + for (a = 0; a < u.length; a++) + g.push(r[u[a]]); + this.color = Ae(g); + } + if (Yt[this.model]) + for (o = Pr[this.model].channels, a = 0; a < o; a++) { + const s = Yt[this.model][a]; + s && (this.color[a] = s(this.color[a])); + } + this.valpha = Math.max(0, Math.min(1, this.valpha)), Object.freeze && Object.freeze(this); +} +vr.prototype = { + toString() { + return this.string(); + }, + toJSON() { + return this[this.model](); + }, + string(r) { + let t = this.model in ut.to ? this : this.rgb(); + t = t.round(typeof r == "number" ? r : 1); + const a = t.valpha === 1 ? t.color : [...t.color, this.valpha]; + return ut.to[t.model](a); + }, + percentString(r) { + const t = this.rgb().round(typeof r == "number" ? r : 1), a = t.valpha === 1 ? t.color : [...t.color, this.valpha]; + return ut.to.rgb.percent(a); + }, + array() { + return this.valpha === 1 ? [...this.color] : [...this.color, this.valpha]; + }, + object() { + const r = {}, { channels: t } = Pr[this.model], { labels: a } = Pr[this.model]; + for (let o = 0; o < t; o++) + r[a[o]] = this.color[o]; + return this.valpha !== 1 && (r.alpha = this.valpha), r; + }, + unitArray() { + const r = this.rgb().color; + return r[0] /= 255, r[1] /= 255, r[2] /= 255, this.valpha !== 1 && r.push(this.valpha), r; + }, + unitObject() { + const r = this.rgb().object(); + return r.r /= 255, r.g /= 255, r.b /= 255, this.valpha !== 1 && (r.alpha = this.valpha), r; + }, + round(r) { + return r = Math.max(r || 0, 0), new vr([...this.color.map(Oc(r)), this.valpha], this.model); + }, + alpha(r) { + return r !== void 0 ? new vr([...this.color, Math.max(0, Math.min(1, r))], this.model) : this.valpha; + }, + // Rgb + red: sr("rgb", 0, ur(255)), + green: sr("rgb", 1, ur(255)), + blue: sr("rgb", 2, ur(255)), + hue: sr(["hsl", "hsv", "hsl", "hwb", "hcg"], 0, (r) => (r % 360 + 360) % 360), + saturationl: sr("hsl", 1, ur(100)), + lightness: sr("hsl", 2, ur(100)), + saturationv: sr("hsv", 1, ur(100)), + value: sr("hsv", 2, ur(100)), + chroma: sr("hcg", 1, ur(100)), + gray: sr("hcg", 2, ur(100)), + white: sr("hwb", 1, ur(100)), + wblack: sr("hwb", 2, ur(100)), + cyan: sr("cmyk", 0, ur(100)), + magenta: sr("cmyk", 1, ur(100)), + yellow: sr("cmyk", 2, ur(100)), + black: sr("cmyk", 3, ur(100)), + x: sr("xyz", 0, ur(95.047)), + y: sr("xyz", 1, ur(100)), + z: sr("xyz", 2, ur(108.833)), + l: sr("lab", 0, ur(100)), + a: sr("lab", 1), + b: sr("lab", 2), + keyword(r) { + return r !== void 0 ? new vr(r) : Pr[this.model].keyword(this.color); + }, + hex(r) { + return r !== void 0 ? new vr(r) : ut.to.hex(this.rgb().round().color); + }, + hexa(r) { + if (r !== void 0) + return new vr(r); + const t = this.rgb().round().color; + let a = Math.round(this.valpha * 255).toString(16).toUpperCase(); + return a.length === 1 && (a = "0" + a), ut.to.hex(t) + a; + }, + rgbNumber() { + const r = this.rgb().color; + return (r[0] & 255) << 16 | (r[1] & 255) << 8 | r[2] & 255; + }, + luminosity() { + const r = this.rgb().color, t = []; + for (const [a, o] of r.entries()) { + const s = o / 255; + t[a] = s <= 0.04045 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4; + } + return 0.2126 * t[0] + 0.7152 * t[1] + 0.0722 * t[2]; + }, + contrast(r) { + const t = this.luminosity(), a = r.luminosity(); + return t > a ? (t + 0.05) / (a + 0.05) : (a + 0.05) / (t + 0.05); + }, + level(r) { + const t = this.contrast(r); + return t >= 7 ? "AAA" : t >= 4.5 ? "AA" : ""; + }, + isDark() { + const r = this.rgb().color; + return (r[0] * 2126 + r[1] * 7152 + r[2] * 722) / 1e4 < 128; + }, + isLight() { + return !this.isDark(); + }, + negate() { + const r = this.rgb(); + for (let t = 0; t < 3; t++) + r.color[t] = 255 - r.color[t]; + return r; + }, + lighten(r) { + const t = this.hsl(); + return t.color[2] += t.color[2] * r, t; + }, + darken(r) { + const t = this.hsl(); + return t.color[2] -= t.color[2] * r, t; + }, + saturate(r) { + const t = this.hsl(); + return t.color[1] += t.color[1] * r, t; + }, + desaturate(r) { + const t = this.hsl(); + return t.color[1] -= t.color[1] * r, t; + }, + whiten(r) { + const t = this.hwb(); + return t.color[1] += t.color[1] * r, t; + }, + blacken(r) { + const t = this.hwb(); + return t.color[2] += t.color[2] * r, t; + }, + grayscale() { + const r = this.rgb().color, t = r[0] * 0.3 + r[1] * 0.59 + r[2] * 0.11; + return vr.rgb(t, t, t); + }, + fade(r) { + return this.alpha(this.valpha - this.valpha * r); + }, + opaquer(r) { + return this.alpha(this.valpha + this.valpha * r); + }, + rotate(r) { + const t = this.hsl(); + let a = t.color[0]; + return a = (a + r) % 360, a = a < 0 ? 360 + a : a, t.color[0] = a, t; + }, + mix(r, t) { + if (!r || !r.rgb) + throw new Error('Argument to "mix" was not a Color instance, but rather an instance of ' + typeof r); + const a = r.rgb(), o = this.rgb(), s = t === void 0 ? 0.5 : t, l = 2 * s - 1, u = a.alpha() - o.alpha(), g = ((l * u === -1 ? l : (l + u) / (1 + l * u)) + 1) / 2, d = 1 - g; + return vr.rgb( + g * a.red() + d * o.red(), + g * a.green() + d * o.green(), + g * a.blue() + d * o.blue(), + a.alpha() * s + o.alpha() * (1 - s) + ); + } +}; +for (const r of Object.keys(Pr)) { + if (Ln.includes(r)) + continue; + const { channels: t } = Pr[r]; + vr.prototype[r] = function(...a) { + return this.model === r ? new vr(this) : a.length > 0 ? new vr(a, r) : new vr([...Rc(Pr[this.model][r].raw(this.color)), this.valpha], r); + }, vr[r] = function(...a) { + let o = a[0]; + return typeof o == "number" && (o = Ae(a, t)), new vr(o, r); + }; +} +function Nc(r, t) { + return Number(r.toFixed(t)); +} +function Oc(r) { + return function(t) { + return Nc(t, r); + }; +} +function sr(r, t, a) { + r = Array.isArray(r) ? r : [r]; + for (const o of r) + (Yt[o] || (Yt[o] = []))[t] = a; + return r = r[0], function(o) { + let s; + return o !== void 0 ? (a && (o = a(o)), s = this[r](), s.color[t] = o, s) : (s = this[r]().color[t], a && (s = a(s)), s); + }; +} +function ur(r) { + return function(t) { + return Math.max(0, Math.min(r, t)); + }; +} +function Rc(r) { + return Array.isArray(r) ? r : [r]; +} +function Ae(r, t) { + for (let a = 0; a < t; a++) + typeof r[a] != "number" && (r[a] = 0); + return r; +} +var Bc = vr; +const Lc = /* @__PURE__ */ Le(Bc), pn = (r) => { + const t = Er.fromInt($n(r)); + return [t.hue, t.chroma, t.tone]; +}; +function Ie(r) { + const t = Er.from(r[0], r[1], r[2]); + return oc(t.toInt()); +} +function zc(r, t) { + if (t) { + const [a, o, s, l] = Wr(r).rgba(), u = Wr.rgb(a, o, s).hex(); + return `hcta(${pn(u).map((d) => Math.round(d)).join(",")},${l})`; + } else + return `hct(${pn(r).map((o) => Math.round(o)).join(",")})`; +} +function Ee(r, t) { + let a = r; + const o = Wr(r).alpha() !== 1, s = Lc(r); + switch (t) { + case "hex": { + a = o ? s.hexa().toString() : s.hex().toString(); + break; + } + case "hct": { + a = zc(r, o); + break; + } + case "rgb": { + a = s.rgb().string(); + break; + } + case "hsv": { + a = s.hsv().string(); + break; + } + } + return a; +} +function $e({ + hRotate: r, + cTarget: t, + tStart: a, + tTarget: o, + tEasing: s, + i: l, + steps: u +}) { + if (!l || !u) + return Ie([r, t, a]); + const g = l / u, d = St(...s), k = a + (o - a) * d(g); + return Ie([r, t, k]); +} +function mn(r, { + hRotate: t, + // 色相偏移(旋转) + hEasing: a, + // 色相偏移的缓动函数 + cTarget: o, + // 色度 + cEasing: s, + // 色度的缓动函数 + tTarget: l, + // 目标明度 + tEasing: u + // 明度的缓动函数 +}, g, d, k) { + const _ = Er.fromInt($n(r)), [C, O, L] = [_.hue, _.chroma, _.tone], B = d / k, w = St(...a), R = St(...s), or = St(...u), tr = C + Sc(C, t * w(B), g), G = O + (o - O) * R(B), ar = L + (l - L) * or(B); + return Ie([tr, G, ar]); +} +function Sc(r, t, a) { + const { segment: o, multiply: s } = a; + return qc(o[0], o[1], t, s)(r); +} +function qc(r, t, a, o) { + const s = Math.PI / 180, l = 360 / (t - r), u = -1 * l * s * (3 * r + t) / 4, g = a * o, d = (a + g) / 2, k = (a - g) / 2; + return (_) => { + const C = _ * s; + return k * Math.sin(l * C + u) + d; + }; +} +function Fe(r) { + return r >= 0 && r <= 255; +} +function yn(r) { + return r.length < 4 ? `rgb(${r.join(",")})` : `rgba(${r.join(",")})`; +} +function Ne(r, t) { + const [a, o, s] = Wr(r).rgb(), [l, u, g] = Wr(t).rgb(); + for (let d = 0.01; d <= 1; d += 0.01) { + const k = Math.round((a - l * (1 - d)) / d), _ = Math.round((o - u * (1 - d)) / d), C = Math.round((s - g * (1 - d)) / d); + if (Fe(k) && Fe(_) && Fe(C)) + return Wr(yn([k, _, C, Math.round(d * 100) / 100])).hex(); + } + return Wr(yn([a, o, s, 1])).hex(); +} +function kn(r, { + up: t, + down: a, + upSteps: o, + downSteps: s, + hue: l +}) { + const u = []; + for (let g = o; g >= 1; g--) + u.push(mn(r, t, l, g, o)); + u.push(r); + for (let g = 1; g <= s; g++) + u.push(mn(r, a, l, g, s)); + return u; +} +function Gc({ + up: r, + down: t, + upSteps: a, + downSteps: o +}) { + const s = []; + for (let l = a; l >= 1; l--) + s.push($e({ ...r, i: l, steps: a })); + s.push($e(r)); + for (let l = 1; l <= o; l++) + s.push($e({ ...t, i: l, steps: o })); + return s; +} +function Uc(r) { + for (const t in r) + document.documentElement.style.setProperty(t, r[t]); +} +const ze = { + data: { + colorList: [ + { + color: "#409eff", + darkColor: "#589ffe", + id: "Primary", + title: "Brand", + type: "normal" + }, + { + color: "#e6202a", + darkColor: "#ff5d55", + id: "Red", + title: "Red", + type: "normal" + }, + { + color: "#ff832b", + darkColor: "#ffa366", + id: "65c1", + title: "Orange", + type: "normal" + }, + { + color: "#ffcc00", + darkColor: "#ffd668", + id: "Yellow", + title: "Yellow", + type: "normal" + }, + { + color: "#1db84c", + darkColor: "#65ca67", + id: "Green", + title: "Green", + type: "normal" + }, + { + color: "#00b3af", + darkColor: "#56c6c4", + id: "Sky", + title: "Teal", + type: "normal" + }, + { + color: "#1fa5ff", + darkColor: "#67baff", + id: "f38c", + title: "Cyan", + type: "normal" + }, + { + color: "#176cff", + darkColor: "#5792ff", + id: "116bd", + title: "Blue", + type: "normal" + }, + { + color: "#8a3ffc", + darkColor: "#a275ff", + id: "Purple", + title: "Purple", + type: "normal" + }, + { + color: "#ea3c8e", + darkColor: "#ff6ba3", + id: "17d81", + title: "Magenta", + type: "normal" + } + ], + generate: { + dark: { + down: { + cTarget: 20, + hRotate: -20, + tTarget: 96, + tEasing: [ + 0, + 0, + 0.5, + 0.7 + ], + cEasing: [ + 0, + 0, + 1, + 1 + ], + hEasing: [ + 0, + 0, + 1, + 1 + ] + }, + up: { + cTarget: 50, + hRotate: 20, + tTarget: 10, + tEasing: [ + 0, + 0, + 1, + 1 + ], + cEasing: [ + 0, + 0, + 1, + 1 + ], + hEasing: [ + 0, + 0, + 1, + 1 + ] + }, + neutral: { + cTarget: 1, + hRotate: 1, + tTarget: 43, + down: { + tTarget: 98, + tEasing: [ + 0, + 0, + 0.53, + 0.72 + ] + }, + up: { + tTarget: 6, + tEasing: [ + 0.29, + 0, + 0.65, + 1 + ] + } + } + }, + hue: { + palettes: { + multiply: -0.5, + segment: [ + 50, + 200 + ] + }, + neutral: { + multiply: 1, + segment: [ + 0, + 360 + ] + } + }, + light: { + down: { + cTarget: 50, + hRotate: 20, + tTarget: 10, + tEasing: [ + 0, + 0, + 1, + 1 + ], + cEasing: [ + 0, + 0, + 1, + 1 + ], + hEasing: [ + 0, + 0, + 1, + 1 + ] + }, + up: { + cTarget: 20, + hRotate: -20, + tTarget: 96, + tEasing: [ + 0, + 0, + 0.5, + 0.7 + ], + cEasing: [ + 0, + 0, + 1, + 1 + ], + hEasing: [ + 0, + 0, + 1, + 1 + ] + }, + neutral: { + cTarget: 2, + hRotate: 209, + tTarget: 73, + down: { + tTarget: 10, + tEasing: [ + 0, + 0, + 0.6, + 0.29 + ] + }, + up: { + tTarget: 97, + tEasing: [ + 0.15, + 0.05, + 0.1, + 0.82 + ] + } + } + }, + step: { + down: 4, + up: 5 + } + }, + stepFliter: [], + system: { + edit: { + isolateEdit: !1 + }, + pattern: { + displayFliterStep: !1, + isFliterStep: !1, + isolateDark: !1 + } + } + }, + name: "element-plus" +}; +function Yc(r = null) { + const t = r || ze.data.generate, a = Vt(t, !0); + return { + light: Vt(t), + dark: a + }; +} +function Vc(r = null, t = "rgb") { + const a = r || ze.data.generate, o = Vt(a, !0); + return { + light: Vt(a).map((l) => Ee(Ne(l, "#fff"), t)), + dark: o.map((l) => Ee(Ne(l, "#000"), t)) + }; +} +function jc({ + light: r, + dark: t, + generate: a, + format: o +}) { + const s = a || ze.data.generate, { up: l, down: u } = s.step, { up: g, down: d } = s.light, { up: k, down: _ } = s.dark, C = s.hue.palettes, O = kn(t, { + up: k, + down: _, + upSteps: l, + downSteps: u, + hue: C + }); + return { + light: kn(r, { + up: g, + down: d, + upSteps: l, + downSteps: u, + hue: C + }), + dark: O.map((L) => Ee(Ne(L, "#000"), o)) + }; +} +function Vt(r, t = !1) { + const { up: a, down: o } = r.step, { + cTarget: s, + hRotate: l, + up: u, + down: g, + tTarget: d + } = r[t ? "dark" : "light"].neutral; + return Gc({ + up: { + ...u, + cTarget: s, + hRotate: l, + tStart: d + }, + down: { + ...g, + cTarget: s, + hRotate: l, + tStart: d + }, + upSteps: a, + downSteps: o + }); +} +export { + ze as ELEMENT_PLUS_CONSTANTS, + mn as adjustHex, + $e as adjustNeutralHex, + Sc as calcHueRotate, + Uc as changeThemeByCssvars, + Ee as colorTypeFormat, + qc as genCalcHueVaule, + Ne as getAlphaColor, + kn as getLadderColors, + Yc as getNeutral, + Vc as getNeutralAlpha, + Gc as getNeutualColors, + jc as getPalette, + Ie as hctToHex, + pn as hexToHct, + zc as toHctString +}; +//# sourceMappingURL=theme.mjs.map diff --git a/packages/theme/lib/theme.mjs.map b/packages/theme/lib/theme.mjs.map new file mode 100644 index 0000000..4b67693 --- /dev/null +++ b/packages/theme/lib/theme.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"theme.mjs","sources":["../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/utils/math_utils.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/utils/color_utils.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/hct/viewing_conditions.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/hct/cam16.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/hct/hct_solver.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/hct/hct.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/contrast/contrast.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dislike/dislike_analyzer.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dynamiccolor/dynamic_color.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/scheme/variant.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dynamiccolor/contrast_curve.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dynamiccolor/tone_delta_pair.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dynamiccolor/material_dynamic_colors.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/utils/string_utils.js","../../../node_modules/.pnpm/chroma-js@2.4.2/node_modules/chroma-js/chroma.js","../../../node_modules/.pnpm/bezier-easing@2.1.0/node_modules/bezier-easing/src/index.js","../../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../../../node_modules/.pnpm/is-arrayish@0.3.2/node_modules/is-arrayish/index.js","../../../node_modules/.pnpm/simple-swizzle@0.2.2/node_modules/simple-swizzle/index.js","../../../node_modules/.pnpm/color-string@1.9.1/node_modules/color-string/index.js","../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js","../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js","../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js","../../../node_modules/.pnpm/color@4.2.3/node_modules/color/index.js","../src/utils/format.ts","../src/utils/adjust.ts","../src/utils/colorTools.ts","../src/dom.ts","../src/constants/element-plus.ts","../src/palettes.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// This file is automatically generated. Do not modify it.\n/**\n * Utility methods for mathematical operations.\n */\n/**\n * The signum function.\n *\n * @return 1 if num > 0, -1 if num < 0, and 0 if num = 0\n */\nexport function signum(num) {\n if (num < 0) {\n return -1;\n }\n else if (num === 0) {\n return 0;\n }\n else {\n return 1;\n }\n}\n/**\n * The linear interpolation function.\n *\n * @return start if amount = 0 and stop if amount = 1\n */\nexport function lerp(start, stop, amount) {\n return (1.0 - amount) * start + amount * stop;\n}\n/**\n * Clamps an integer between two integers.\n *\n * @return input when min <= input <= max, and either min or max\n * otherwise.\n */\nexport function clampInt(min, max, input) {\n if (input < min) {\n return min;\n }\n else if (input > max) {\n return max;\n }\n return input;\n}\n/**\n * Clamps an integer between two floating-point numbers.\n *\n * @return input when min <= input <= max, and either min or max\n * otherwise.\n */\nexport function clampDouble(min, max, input) {\n if (input < min) {\n return min;\n }\n else if (input > max) {\n return max;\n }\n return input;\n}\n/**\n * Sanitizes a degree measure as an integer.\n *\n * @return a degree measure between 0 (inclusive) and 360\n * (exclusive).\n */\nexport function sanitizeDegreesInt(degrees) {\n degrees = degrees % 360;\n if (degrees < 0) {\n degrees = degrees + 360;\n }\n return degrees;\n}\n/**\n * Sanitizes a degree measure as a floating-point number.\n *\n * @return a degree measure between 0.0 (inclusive) and 360.0\n * (exclusive).\n */\nexport function sanitizeDegreesDouble(degrees) {\n degrees = degrees % 360.0;\n if (degrees < 0) {\n degrees = degrees + 360.0;\n }\n return degrees;\n}\n/**\n * Sign of direction change needed to travel from one angle to\n * another.\n *\n * For angles that are 180 degrees apart from each other, both\n * directions have the same travel distance, so either direction is\n * shortest. The value 1.0 is returned in this case.\n *\n * @param from The angle travel starts from, in degrees.\n * @param to The angle travel ends at, in degrees.\n * @return -1 if decreasing from leads to the shortest travel\n * distance, 1 if increasing from leads to the shortest travel\n * distance.\n */\nexport function rotationDirection(from, to) {\n const increasingDifference = sanitizeDegreesDouble(to - from);\n return increasingDifference <= 180.0 ? 1.0 : -1.0;\n}\n/**\n * Distance of two points on a circle, represented using degrees.\n */\nexport function differenceDegrees(a, b) {\n return 180.0 - Math.abs(Math.abs(a - b) - 180.0);\n}\n/**\n * Multiplies a 1x3 row vector with a 3x3 matrix.\n */\nexport function matrixMultiply(row, matrix) {\n const a = row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2];\n const b = row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2];\n const c = row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2];\n return [a, b, c];\n}\n//# sourceMappingURL=math_utils.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// This file is automatically generated. Do not modify it.\nimport * as mathUtils from './math_utils.js';\n/**\n * Color science utilities.\n *\n * Utility methods for color science constants and color space\n * conversions that aren't HCT or CAM16.\n */\nconst SRGB_TO_XYZ = [\n [0.41233895, 0.35762064, 0.18051042],\n [0.2126, 0.7152, 0.0722],\n [0.01932141, 0.11916382, 0.95034478],\n];\nconst XYZ_TO_SRGB = [\n [\n 3.2413774792388685,\n -1.5376652402851851,\n -0.49885366846268053,\n ],\n [\n -0.9691452513005321,\n 1.8758853451067872,\n 0.04156585616912061,\n ],\n [\n 0.05562093689691305,\n -0.20395524564742123,\n 1.0571799111220335,\n ],\n];\nconst WHITE_POINT_D65 = [95.047, 100.0, 108.883];\n/**\n * Converts a color from RGB components to ARGB format.\n */\nexport function argbFromRgb(red, green, blue) {\n return (255 << 24 | (red & 255) << 16 | (green & 255) << 8 | blue & 255) >>>\n 0;\n}\n/**\n * Converts a color from linear RGB components to ARGB format.\n */\nexport function argbFromLinrgb(linrgb) {\n const r = delinearized(linrgb[0]);\n const g = delinearized(linrgb[1]);\n const b = delinearized(linrgb[2]);\n return argbFromRgb(r, g, b);\n}\n/**\n * Returns the alpha component of a color in ARGB format.\n */\nexport function alphaFromArgb(argb) {\n return argb >> 24 & 255;\n}\n/**\n * Returns the red component of a color in ARGB format.\n */\nexport function redFromArgb(argb) {\n return argb >> 16 & 255;\n}\n/**\n * Returns the green component of a color in ARGB format.\n */\nexport function greenFromArgb(argb) {\n return argb >> 8 & 255;\n}\n/**\n * Returns the blue component of a color in ARGB format.\n */\nexport function blueFromArgb(argb) {\n return argb & 255;\n}\n/**\n * Returns whether a color in ARGB format is opaque.\n */\nexport function isOpaque(argb) {\n return alphaFromArgb(argb) >= 255;\n}\n/**\n * Converts a color from ARGB to XYZ.\n */\nexport function argbFromXyz(x, y, z) {\n const matrix = XYZ_TO_SRGB;\n const linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z;\n const linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z;\n const linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n const r = delinearized(linearR);\n const g = delinearized(linearG);\n const b = delinearized(linearB);\n return argbFromRgb(r, g, b);\n}\n/**\n * Converts a color from XYZ to ARGB.\n */\nexport function xyzFromArgb(argb) {\n const r = linearized(redFromArgb(argb));\n const g = linearized(greenFromArgb(argb));\n const b = linearized(blueFromArgb(argb));\n return mathUtils.matrixMultiply([r, g, b], SRGB_TO_XYZ);\n}\n/**\n * Converts a color represented in Lab color space into an ARGB\n * integer.\n */\nexport function argbFromLab(l, a, b) {\n const whitePoint = WHITE_POINT_D65;\n const fy = (l + 16.0) / 116.0;\n const fx = a / 500.0 + fy;\n const fz = fy - b / 200.0;\n const xNormalized = labInvf(fx);\n const yNormalized = labInvf(fy);\n const zNormalized = labInvf(fz);\n const x = xNormalized * whitePoint[0];\n const y = yNormalized * whitePoint[1];\n const z = zNormalized * whitePoint[2];\n return argbFromXyz(x, y, z);\n}\n/**\n * Converts a color from ARGB representation to L*a*b*\n * representation.\n *\n * @param argb the ARGB representation of a color\n * @return a Lab object representing the color\n */\nexport function labFromArgb(argb) {\n const linearR = linearized(redFromArgb(argb));\n const linearG = linearized(greenFromArgb(argb));\n const linearB = linearized(blueFromArgb(argb));\n const matrix = SRGB_TO_XYZ;\n const x = matrix[0][0] * linearR + matrix[0][1] * linearG + matrix[0][2] * linearB;\n const y = matrix[1][0] * linearR + matrix[1][1] * linearG + matrix[1][2] * linearB;\n const z = matrix[2][0] * linearR + matrix[2][1] * linearG + matrix[2][2] * linearB;\n const whitePoint = WHITE_POINT_D65;\n const xNormalized = x / whitePoint[0];\n const yNormalized = y / whitePoint[1];\n const zNormalized = z / whitePoint[2];\n const fx = labF(xNormalized);\n const fy = labF(yNormalized);\n const fz = labF(zNormalized);\n const l = 116.0 * fy - 16;\n const a = 500.0 * (fx - fy);\n const b = 200.0 * (fy - fz);\n return [l, a, b];\n}\n/**\n * Converts an L* value to an ARGB representation.\n *\n * @param lstar L* in L*a*b*\n * @return ARGB representation of grayscale color with lightness\n * matching L*\n */\nexport function argbFromLstar(lstar) {\n const y = yFromLstar(lstar);\n const component = delinearized(y);\n return argbFromRgb(component, component, component);\n}\n/**\n * Computes the L* value of a color in ARGB representation.\n *\n * @param argb ARGB representation of a color\n * @return L*, from L*a*b*, coordinate of the color\n */\nexport function lstarFromArgb(argb) {\n const y = xyzFromArgb(argb)[1];\n return 116.0 * labF(y / 100.0) - 16.0;\n}\n/**\n * Converts an L* value to a Y value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param lstar L* in L*a*b*\n * @return Y in XYZ\n */\nexport function yFromLstar(lstar) {\n return 100.0 * labInvf((lstar + 16.0) / 116.0);\n}\n/**\n * Converts a Y value to an L* value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param y Y in XYZ\n * @return L* in L*a*b*\n */\nexport function lstarFromY(y) {\n return labF(y / 100.0) * 116.0 - 16.0;\n}\n/**\n * Linearizes an RGB component.\n *\n * @param rgbComponent 0 <= rgb_component <= 255, represents R/G/B\n * channel\n * @return 0.0 <= output <= 100.0, color channel converted to\n * linear RGB space\n */\nexport function linearized(rgbComponent) {\n const normalized = rgbComponent / 255.0;\n if (normalized <= 0.040449936) {\n return normalized / 12.92 * 100.0;\n }\n else {\n return Math.pow((normalized + 0.055) / 1.055, 2.4) * 100.0;\n }\n}\n/**\n * Delinearizes an RGB component.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0 <= output <= 255, color channel converted to regular\n * RGB space\n */\nexport function delinearized(rgbComponent) {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n }\n else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return mathUtils.clampInt(0, 255, Math.round(delinearized * 255.0));\n}\n/**\n * Returns the standard white point; white on a sunny day.\n *\n * @return The white point\n */\nexport function whitePointD65() {\n return WHITE_POINT_D65;\n}\n/**\n * Return RGBA from a given int32 color\n *\n * @param argb ARGB representation of a int32 color.\n * @return RGBA representation of a int32 color.\n */\nexport function rgbaFromArgb(argb) {\n const r = redFromArgb(argb);\n const g = greenFromArgb(argb);\n const b = blueFromArgb(argb);\n const a = alphaFromArgb(argb);\n return { r, g, b, a };\n}\n/**\n * Return int32 color from a given RGBA component\n *\n * @param rgba RGBA representation of a int32 color.\n * @returns ARGB representation of a int32 color.\n */\nexport function argbFromRgba({ r, g, b, a }) {\n const rValue = clampComponent(r);\n const gValue = clampComponent(g);\n const bValue = clampComponent(b);\n const aValue = clampComponent(a);\n return (aValue << 24) | (rValue << 16) | (gValue << 8) | bValue;\n}\nfunction clampComponent(value) {\n if (value < 0)\n return 0;\n if (value > 255)\n return 255;\n return value;\n}\nfunction labF(t) {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n if (t > e) {\n return Math.pow(t, 1.0 / 3.0);\n }\n else {\n return (kappa * t + 16) / 116;\n }\n}\nfunction labInvf(ft) {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n const ft3 = ft * ft * ft;\n if (ft3 > e) {\n return ft3;\n }\n else {\n return (116 * ft - 16) / kappa;\n }\n}\n//# sourceMappingURL=color_utils.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n/**\n * In traditional color spaces, a color can be identified solely by the\n * observer's measurement of the color. Color appearance models such as CAM16\n * also use information about the environment where the color was\n * observed, known as the viewing conditions.\n *\n * For example, white under the traditional assumption of a midday sun white\n * point is accurately measured as a slightly chromatic blue by CAM16. (roughly,\n * hue 203, chroma 3, lightness 100)\n *\n * This class caches intermediate values of the CAM16 conversion process that\n * depend only on viewing conditions, enabling speed ups.\n */\nexport class ViewingConditions {\n /**\n * Create ViewingConditions from a simple, physically relevant, set of\n * parameters.\n *\n * @param whitePoint White point, measured in the XYZ color space.\n * default = D65, or sunny day afternoon\n * @param adaptingLuminance The luminance of the adapting field. Informally,\n * how bright it is in the room where the color is viewed. Can be\n * calculated from lux by multiplying lux by 0.0586. default = 11.72,\n * or 200 lux.\n * @param backgroundLstar The lightness of the area surrounding the color.\n * measured by L* in L*a*b*. default = 50.0\n * @param surround A general description of the lighting surrounding the\n * color. 0 is pitch dark, like watching a movie in a theater. 1.0 is a\n * dimly light room, like watching TV at home at night. 2.0 means there\n * is no difference between the lighting on the color and around it.\n * default = 2.0\n * @param discountingIlluminant Whether the eye accounts for the tint of the\n * ambient lighting, such as knowing an apple is still red in green light.\n * default = false, the eye does not perform this process on\n * self-luminous objects like displays.\n */\n static make(whitePoint = utils.whitePointD65(), adaptingLuminance = (200.0 / Math.PI) * utils.yFromLstar(50.0) / 100.0, backgroundLstar = 50.0, surround = 2.0, discountingIlluminant = false) {\n const xyz = whitePoint;\n const rW = xyz[0] * 0.401288 + xyz[1] * 0.650173 + xyz[2] * -0.051461;\n const gW = xyz[0] * -0.250268 + xyz[1] * 1.204414 + xyz[2] * 0.045854;\n const bW = xyz[0] * -0.002079 + xyz[1] * 0.048952 + xyz[2] * 0.953127;\n const f = 0.8 + surround / 10.0;\n const c = f >= 0.9 ? math.lerp(0.59, 0.69, (f - 0.9) * 10.0) :\n math.lerp(0.525, 0.59, (f - 0.8) * 10.0);\n let d = discountingIlluminant ?\n 1.0 :\n f * (1.0 - (1.0 / 3.6) * Math.exp((-adaptingLuminance - 42.0) / 92.0));\n d = d > 1.0 ? 1.0 : d < 0.0 ? 0.0 : d;\n const nc = f;\n const rgbD = [\n d * (100.0 / rW) + 1.0 - d,\n d * (100.0 / gW) + 1.0 - d,\n d * (100.0 / bW) + 1.0 - d,\n ];\n const k = 1.0 / (5.0 * adaptingLuminance + 1.0);\n const k4 = k * k * k * k;\n const k4F = 1.0 - k4;\n const fl = k4 * adaptingLuminance +\n 0.1 * k4F * k4F * Math.cbrt(5.0 * adaptingLuminance);\n const n = utils.yFromLstar(backgroundLstar) / whitePoint[1];\n const z = 1.48 + Math.sqrt(n);\n const nbb = 0.725 / Math.pow(n, 0.2);\n const ncb = nbb;\n const rgbAFactors = [\n Math.pow((fl * rgbD[0] * rW) / 100.0, 0.42),\n Math.pow((fl * rgbD[1] * gW) / 100.0, 0.42),\n Math.pow((fl * rgbD[2] * bW) / 100.0, 0.42),\n ];\n const rgbA = [\n (400.0 * rgbAFactors[0]) / (rgbAFactors[0] + 27.13),\n (400.0 * rgbAFactors[1]) / (rgbAFactors[1] + 27.13),\n (400.0 * rgbAFactors[2]) / (rgbAFactors[2] + 27.13),\n ];\n const aw = (2.0 * rgbA[0] + rgbA[1] + 0.05 * rgbA[2]) * nbb;\n return new ViewingConditions(n, aw, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, 0.25), z);\n }\n /**\n * Parameters are intermediate values of the CAM16 conversion process. Their\n * names are shorthand for technical color science terminology, this class\n * would not benefit from documenting them individually. A brief overview\n * is available in the CAM16 specification, and a complete overview requires\n * a color science textbook, such as Fairchild's Color Appearance Models.\n */\n constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n this.n = n;\n this.aw = aw;\n this.nbb = nbb;\n this.ncb = ncb;\n this.c = c;\n this.nc = nc;\n this.rgbD = rgbD;\n this.fl = fl;\n this.fLRoot = fLRoot;\n this.z = z;\n }\n}\n/** sRGB-like viewing conditions. */\nViewingConditions.DEFAULT = ViewingConditions.make();\n//# sourceMappingURL=viewing_conditions.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\nimport { ViewingConditions } from './viewing_conditions.js';\n/**\n * CAM16, a color appearance model. Colors are not just defined by their hex\n * code, but rather, a hex code and viewing conditions.\n *\n * CAM16 instances also have coordinates in the CAM16-UCS space, called J*, a*,\n * b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16\n * specification, and should be used when measuring distances between colors.\n *\n * In traditional color spaces, a color can be identified solely by the\n * observer's measurement of the color. Color appearance models such as CAM16\n * also use information about the environment where the color was\n * observed, known as the viewing conditions.\n *\n * For example, white under the traditional assumption of a midday sun white\n * point is accurately measured as a slightly chromatic blue by CAM16. (roughly,\n * hue 203, chroma 3, lightness 100)\n */\nexport class Cam16 {\n /**\n * All of the CAM16 dimensions can be calculated from 3 of the dimensions, in\n * the following combinations:\n * - {j or q} and {c, m, or s} and hue\n * - jstar, astar, bstar\n * Prefer using a static method that constructs from 3 of those dimensions.\n * This constructor is intended for those methods to use to return all\n * possible dimensions.\n *\n * @param hue\n * @param chroma informally, colorfulness / color intensity. like saturation\n * in HSL, except perceptually accurate.\n * @param j lightness\n * @param q brightness; ratio of lightness to white point's lightness\n * @param m colorfulness\n * @param s saturation; ratio of chroma to white point's chroma\n * @param jstar CAM16-UCS J coordinate\n * @param astar CAM16-UCS a coordinate\n * @param bstar CAM16-UCS b coordinate\n */\n constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n this.hue = hue;\n this.chroma = chroma;\n this.j = j;\n this.q = q;\n this.m = m;\n this.s = s;\n this.jstar = jstar;\n this.astar = astar;\n this.bstar = bstar;\n }\n /**\n * CAM16 instances also have coordinates in the CAM16-UCS space, called J*,\n * a*, b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16\n * specification, and is used to measure distances between colors.\n */\n distance(other) {\n const dJ = this.jstar - other.jstar;\n const dA = this.astar - other.astar;\n const dB = this.bstar - other.bstar;\n const dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n const dE = 1.41 * Math.pow(dEPrime, 0.63);\n return dE;\n }\n /**\n * @param argb ARGB representation of a color.\n * @return CAM16 color, assuming the color was viewed in default viewing\n * conditions.\n */\n static fromInt(argb) {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n /**\n * @param argb ARGB representation of a color.\n * @param viewingConditions Information about the environment where the color\n * was observed.\n * @return CAM16 color.\n */\n static fromIntInViewingConditions(argb, viewingConditions) {\n const red = (argb & 0x00ff0000) >> 16;\n const green = (argb & 0x0000ff00) >> 8;\n const blue = (argb & 0x000000ff);\n const redL = utils.linearized(red);\n const greenL = utils.linearized(green);\n const blueL = utils.linearized(blue);\n const x = 0.41233895 * redL + 0.35762064 * greenL + 0.18051042 * blueL;\n const y = 0.2126 * redL + 0.7152 * greenL + 0.0722 * blueL;\n const z = 0.01932141 * redL + 0.11916382 * greenL + 0.95034478 * blueL;\n const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;\n const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;\n const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;\n const rD = viewingConditions.rgbD[0] * rC;\n const gD = viewingConditions.rgbD[1] * gC;\n const bD = viewingConditions.rgbD[2] * bC;\n const rAF = Math.pow((viewingConditions.fl * Math.abs(rD)) / 100.0, 0.42);\n const gAF = Math.pow((viewingConditions.fl * Math.abs(gD)) / 100.0, 0.42);\n const bAF = Math.pow((viewingConditions.fl * Math.abs(bD)) / 100.0, 0.42);\n const rA = (math.signum(rD) * 400.0 * rAF) / (rAF + 27.13);\n const gA = (math.signum(gD) * 400.0 * gAF) / (gAF + 27.13);\n const bA = (math.signum(bD) * 400.0 * bAF) / (bAF + 27.13);\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n const b = (rA + gA - 2.0 * bA) / 9.0;\n const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;\n const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;\n const atan2 = Math.atan2(b, a);\n const atanDegrees = (atan2 * 180.0) / Math.PI;\n const hue = atanDegrees < 0 ? atanDegrees + 360.0 :\n atanDegrees >= 360 ? atanDegrees - 360.0 :\n atanDegrees;\n const hueRadians = (hue * Math.PI) / 180.0;\n const ac = p2 * viewingConditions.nbb;\n const j = 100.0 *\n Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z);\n const q = (4.0 / viewingConditions.c) * Math.sqrt(j / 100.0) *\n (viewingConditions.aw + 4.0) * viewingConditions.fLRoot;\n const huePrime = hue < 20.14 ? hue + 360 : hue;\n const eHue = 0.25 * (Math.cos((huePrime * Math.PI) / 180.0 + 2.0) + 3.8);\n const p1 = (50000.0 / 13.0) * eHue * viewingConditions.nc * viewingConditions.ncb;\n const t = (p1 * Math.sqrt(a * a + b * b)) / (u + 0.305);\n const alpha = Math.pow(t, 0.9) *\n Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const c = alpha * Math.sqrt(j / 100.0);\n const m = c * viewingConditions.fLRoot;\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n const jstar = ((1.0 + 100.0 * 0.007) * j) / (1.0 + 0.007 * j);\n const mstar = (1.0 / 0.0228) * Math.log(1.0 + 0.0228 * m);\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n /**\n * @param j CAM16 lightness\n * @param c CAM16 chroma\n * @param h CAM16 hue\n */\n static fromJch(j, c, h) {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n /**\n * @param j CAM16 lightness\n * @param c CAM16 chroma\n * @param h CAM16 hue\n * @param viewingConditions Information about the environment where the color\n * was observed.\n */\n static fromJchInViewingConditions(j, c, h, viewingConditions) {\n const q = (4.0 / viewingConditions.c) * Math.sqrt(j / 100.0) *\n (viewingConditions.aw + 4.0) * viewingConditions.fLRoot;\n const m = c * viewingConditions.fLRoot;\n const alpha = c / Math.sqrt(j / 100.0);\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n const hueRadians = (h * Math.PI) / 180.0;\n const jstar = ((1.0 + 100.0 * 0.007) * j) / (1.0 + 0.007 * j);\n const mstar = (1.0 / 0.0228) * Math.log(1.0 + 0.0228 * m);\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n /**\n * @param jstar CAM16-UCS lightness.\n * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the Y axis.\n * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the X axis.\n */\n static fromUcs(jstar, astar, bstar) {\n return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n /**\n * @param jstar CAM16-UCS lightness.\n * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the Y axis.\n * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the X axis.\n * @param viewingConditions Information about the environment where the color\n * was observed.\n */\n static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n const a = astar;\n const b = bstar;\n const m = Math.sqrt(a * a + b * b);\n const M = (Math.exp(m * 0.0228) - 1.0) / 0.0228;\n const c = M / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180.0 / Math.PI);\n if (h < 0.0) {\n h += 360.0;\n }\n const j = jstar / (1 - (jstar - 100) * 0.007);\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n /**\n * @return ARGB representation of color, assuming the color was viewed in\n * default viewing conditions, which are near-identical to the default\n * viewing conditions for sRGB.\n */\n toInt() {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n /**\n * @param viewingConditions Information about the environment where the color\n * will be viewed.\n * @return ARGB representation of color\n */\n viewed(viewingConditions) {\n const alpha = this.chroma === 0.0 || this.j === 0.0 ?\n 0.0 :\n this.chroma / Math.sqrt(this.j / 100.0);\n const t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1.0 / 0.9);\n const hRad = (this.hue * Math.PI) / 180.0;\n const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);\n const ac = viewingConditions.aw *\n Math.pow(this.j / 100.0, 1.0 / viewingConditions.c / viewingConditions.z);\n const p1 = eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const p2 = ac / viewingConditions.nbb;\n const hSin = Math.sin(hRad);\n const hCos = Math.cos(hRad);\n const gamma = (23.0 * (p2 + 0.305) * t) /\n (23.0 * p1 + 11.0 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCBase = Math.max(0, (27.13 * Math.abs(rA)) / (400.0 - Math.abs(rA)));\n const rC = math.signum(rA) * (100.0 / viewingConditions.fl) *\n Math.pow(rCBase, 1.0 / 0.42);\n const gCBase = Math.max(0, (27.13 * Math.abs(gA)) / (400.0 - Math.abs(gA)));\n const gC = math.signum(gA) * (100.0 / viewingConditions.fl) *\n Math.pow(gCBase, 1.0 / 0.42);\n const bCBase = Math.max(0, (27.13 * Math.abs(bA)) / (400.0 - Math.abs(bA)));\n const bC = math.signum(bA) * (100.0 / viewingConditions.fl) *\n Math.pow(bCBase, 1.0 / 0.42);\n const rF = rC / viewingConditions.rgbD[0];\n const gF = gC / viewingConditions.rgbD[1];\n const bF = bC / viewingConditions.rgbD[2];\n const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;\n const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;\n const z = -0.01584150 * rF - 0.03412294 * gF + 1.04996444 * bF;\n const argb = utils.argbFromXyz(x, y, z);\n return argb;\n }\n /// Given color expressed in XYZ and viewed in [viewingConditions], convert to\n /// CAM16.\n static fromXyzInViewingConditions(x, y, z, viewingConditions) {\n // Transform XYZ to 'cone'/'rgb' responses\n const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;\n const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;\n const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;\n // Discount illuminant\n const rD = viewingConditions.rgbD[0] * rC;\n const gD = viewingConditions.rgbD[1] * gC;\n const bD = viewingConditions.rgbD[2] * bC;\n // chromatic adaptation\n const rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100.0, 0.42);\n const gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100.0, 0.42);\n const bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100.0, 0.42);\n const rA = math.signum(rD) * 400.0 * rAF / (rAF + 27.13);\n const gA = math.signum(gD) * 400.0 * gAF / (gAF + 27.13);\n const bA = math.signum(bD) * 400.0 * bAF / (bAF + 27.13);\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n // auxiliary components\n const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;\n const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;\n // hue\n const atan2 = Math.atan2(b, a);\n const atanDegrees = atan2 * 180.0 / Math.PI;\n const hue = atanDegrees < 0 ? atanDegrees + 360.0 :\n atanDegrees >= 360 ? atanDegrees - 360 :\n atanDegrees;\n const hueRadians = hue * Math.PI / 180.0;\n // achromatic response to color\n const ac = p2 * viewingConditions.nbb;\n // CAM16 lightness and brightness\n const J = 100.0 *\n Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z);\n const Q = (4.0 / viewingConditions.c) * Math.sqrt(J / 100.0) *\n (viewingConditions.aw + 4.0) * (viewingConditions.fLRoot);\n const huePrime = (hue < 20.14) ? hue + 360 : hue;\n const eHue = (1.0 / 4.0) * (Math.cos(huePrime * Math.PI / 180.0 + 2.0) + 3.8);\n const p1 = 50000.0 / 13.0 * eHue * viewingConditions.nc * viewingConditions.ncb;\n const t = p1 * Math.sqrt(a * a + b * b) / (u + 0.305);\n const alpha = Math.pow(t, 0.9) *\n Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n // CAM16 chroma, colorfulness, chroma\n const C = alpha * Math.sqrt(J / 100.0);\n const M = C * viewingConditions.fLRoot;\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n // CAM16-UCS components\n const jstar = (1.0 + 100.0 * 0.007) * J / (1.0 + 0.007 * J);\n const mstar = Math.log(1.0 + 0.0228 * M) / 0.0228;\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n }\n /// XYZ representation of CAM16 seen in [viewingConditions].\n xyzInViewingConditions(viewingConditions) {\n const alpha = (this.chroma === 0.0 || this.j === 0.0) ?\n 0.0 :\n this.chroma / Math.sqrt(this.j / 100.0);\n const t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1.0 / 0.9);\n const hRad = this.hue * Math.PI / 180.0;\n const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);\n const ac = viewingConditions.aw *\n Math.pow(this.j / 100.0, 1.0 / viewingConditions.c / viewingConditions.z);\n const p1 = eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const p2 = (ac / viewingConditions.nbb);\n const hSin = Math.sin(hRad);\n const hCos = Math.cos(hRad);\n const gamma = 23.0 * (p2 + 0.305) * t /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCBase = Math.max(0, (27.13 * Math.abs(rA)) / (400.0 - Math.abs(rA)));\n const rC = math.signum(rA) * (100.0 / viewingConditions.fl) *\n Math.pow(rCBase, 1.0 / 0.42);\n const gCBase = Math.max(0, (27.13 * Math.abs(gA)) / (400.0 - Math.abs(gA)));\n const gC = math.signum(gA) * (100.0 / viewingConditions.fl) *\n Math.pow(gCBase, 1.0 / 0.42);\n const bCBase = Math.max(0, (27.13 * Math.abs(bA)) / (400.0 - Math.abs(bA)));\n const bC = math.signum(bA) * (100.0 / viewingConditions.fl) *\n Math.pow(bCBase, 1.0 / 0.42);\n const rF = rC / viewingConditions.rgbD[0];\n const gF = gC / viewingConditions.rgbD[1];\n const bF = bC / viewingConditions.rgbD[2];\n const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;\n const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;\n const z = -0.01584150 * rF - 0.03412294 * gF + 1.04996444 * bF;\n return [x, y, z];\n }\n}\n//# sourceMappingURL=cam16.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// This file is automatically generated. Do not modify it.\nimport * as colorUtils from '../utils/color_utils.js';\nimport * as mathUtils from '../utils/math_utils.js';\nimport { Cam16 } from './cam16.js';\nimport { ViewingConditions } from './viewing_conditions.js';\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n/**\n * A class that solves the HCT equation.\n */\nexport class HctSolver {\n /**\n * Sanitizes a small enough angle in radians.\n *\n * @param angle An angle in radians; must not deviate too much\n * from 0.\n * @return A coterminal angle between 0 and 2pi.\n */\n static sanitizeRadians(angle) {\n return (angle + Math.PI * 8) % (Math.PI * 2);\n }\n /**\n * Delinearizes an RGB component, returning a floating-point\n * number.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0.0 <= output <= 255.0, color channel converted to\n * regular RGB space\n */\n static trueDelinearized(rgbComponent) {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n }\n else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return delinearized * 255.0;\n }\n static chromaticAdaptation(component) {\n const af = Math.pow(Math.abs(component), 0.42);\n return mathUtils.signum(component) * 400.0 * af / (af + 27.13);\n }\n /**\n * Returns the hue of a linear RGB color in CAM16.\n *\n * @param linrgb The linear RGB coordinates of a color.\n * @return The hue of the color in CAM16, in radians.\n */\n static hueOf(linrgb) {\n const scaledDiscount = mathUtils.matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB);\n const rA = HctSolver.chromaticAdaptation(scaledDiscount[0]);\n const gA = HctSolver.chromaticAdaptation(scaledDiscount[1]);\n const bA = HctSolver.chromaticAdaptation(scaledDiscount[2]);\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n return Math.atan2(b, a);\n }\n static areInCyclicOrder(a, b, c) {\n const deltaAB = HctSolver.sanitizeRadians(b - a);\n const deltaAC = HctSolver.sanitizeRadians(c - a);\n return deltaAB < deltaAC;\n }\n /**\n * Solves the lerp equation.\n *\n * @param source The starting number.\n * @param mid The number in the middle.\n * @param target The ending number.\n * @return A number t such that lerp(source, target, t) = mid.\n */\n static intercept(source, mid, target) {\n return (mid - source) / (target - source);\n }\n static lerpPoint(source, t, target) {\n return [\n source[0] + (target[0] - source[0]) * t,\n source[1] + (target[1] - source[1]) * t,\n source[2] + (target[2] - source[2]) * t,\n ];\n }\n /**\n * Intersects a segment with a plane.\n *\n * @param source The coordinates of point A.\n * @param coordinate The R-, G-, or B-coordinate of the plane.\n * @param target The coordinates of point B.\n * @param axis The axis the plane is perpendicular with. (0: R, 1:\n * G, 2: B)\n * @return The intersection point of the segment AB with the plane\n * R=coordinate, G=coordinate, or B=coordinate\n */\n static setCoordinate(source, coordinate, target, axis) {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n static isBounded(x) {\n return 0.0 <= x && x <= 100.0;\n }\n /**\n * Returns the nth possible vertex of the polygonal intersection.\n *\n * @param y The Y value of the plane.\n * @param n The zero-based index of the point. 0 <= n <= 11.\n * @return The nth possible vertex of the polygonal intersection\n * of the y plane and the RGB cube, in linear RGB coordinates, if\n * it exists. If this possible vertex lies outside of the cube,\n * [-1.0, -1.0, -1.0] is returned.\n */\n static nthVertex(y, n) {\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const coordA = n % 4 <= 1 ? 0.0 : 100.0;\n const coordB = n % 2 === 0 ? 0.0 : 100.0;\n if (n < 4) {\n const g = coordA;\n const b = coordB;\n const r = (y - g * kG - b * kB) / kR;\n if (HctSolver.isBounded(r)) {\n return [r, g, b];\n }\n else {\n return [-1.0, -1.0, -1.0];\n }\n }\n else if (n < 8) {\n const b = coordA;\n const r = coordB;\n const g = (y - r * kR - b * kB) / kG;\n if (HctSolver.isBounded(g)) {\n return [r, g, b];\n }\n else {\n return [-1.0, -1.0, -1.0];\n }\n }\n else {\n const r = coordA;\n const g = coordB;\n const b = (y - r * kR - g * kG) / kB;\n if (HctSolver.isBounded(b)) {\n return [r, g, b];\n }\n else {\n return [-1.0, -1.0, -1.0];\n }\n }\n }\n /**\n * Finds the segment containing the desired color.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return A list of two sets of linear RGB coordinates, each\n * corresponding to an endpoint of the segment containing the\n * desired color.\n */\n static bisectToSegment(y, targetHue) {\n let left = [-1.0, -1.0, -1.0];\n let right = left;\n let leftHue = 0.0;\n let rightHue = 0.0;\n let initialized = false;\n let uncut = true;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) {\n continue;\n }\n const midHue = HctSolver.hueOf(mid);\n if (!initialized) {\n left = mid;\n right = mid;\n leftHue = midHue;\n rightHue = midHue;\n initialized = true;\n continue;\n }\n if (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) {\n uncut = false;\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rightHue = midHue;\n }\n else {\n left = mid;\n leftHue = midHue;\n }\n }\n }\n return [left, right];\n }\n static midpoint(a, b) {\n return [\n (a[0] + b[0]) / 2,\n (a[1] + b[1]) / 2,\n (a[2] + b[2]) / 2,\n ];\n }\n static criticalPlaneBelow(x) {\n return Math.floor(x - 0.5);\n }\n static criticalPlaneAbove(x) {\n return Math.ceil(x - 0.5);\n }\n /**\n * Finds a color with the given Y and hue on the boundary of the\n * cube.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return The desired color, in linear RGB coordinates.\n */\n static bisectToLimit(y, targetHue) {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0];\n let leftHue = HctSolver.hueOf(left);\n let right = segment[1];\n for (let axis = 0; axis < 3; axis++) {\n if (left[axis] !== right[axis]) {\n let lPlane = -1;\n let rPlane = 255;\n if (left[axis] < right[axis]) {\n lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis]));\n rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]));\n }\n else {\n lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis]));\n rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis]));\n }\n for (let i = 0; i < 8; i++) {\n if (Math.abs(rPlane - lPlane) <= 1) {\n break;\n }\n else {\n const mPlane = Math.floor((lPlane + rPlane) / 2.0);\n const midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane];\n const mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis);\n const midHue = HctSolver.hueOf(mid);\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rPlane = mPlane;\n }\n else {\n left = mid;\n leftHue = midHue;\n lPlane = mPlane;\n }\n }\n }\n }\n }\n return HctSolver.midpoint(left, right);\n }\n static inverseChromaticAdaptation(adapted) {\n const adaptedAbs = Math.abs(adapted);\n const base = Math.max(0, 27.13 * adaptedAbs / (400.0 - adaptedAbs));\n return mathUtils.signum(adapted) * Math.pow(base, 1.0 / 0.42);\n }\n /**\n * Finds a color with the given hue, chroma, and Y.\n *\n * @param hueRadians The desired hue in radians.\n * @param chroma The desired chroma.\n * @param y The desired Y.\n * @return The desired color as a hexadecimal integer, if found; 0\n * otherwise.\n */\n static findResultByJ(hueRadians, chroma, y) {\n // Initial estimate of j.\n let j = Math.sqrt(y) * 11.0;\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const viewingConditions = ViewingConditions.DEFAULT;\n const tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const eHue = 0.25 * (Math.cos(hueRadians + 2.0) + 3.8);\n const p1 = eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const hSin = Math.sin(hueRadians);\n const hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const jNormalized = j / 100.0;\n const alpha = chroma === 0.0 || j === 0.0 ? 0.0 : chroma / Math.sqrt(jNormalized);\n const t = Math.pow(alpha * tInnerCoeff, 1.0 / 0.9);\n const ac = viewingConditions.aw *\n Math.pow(jNormalized, 1.0 / viewingConditions.c / viewingConditions.z);\n const p2 = ac / viewingConditions.nbb;\n const gamma = 23.0 * (p2 + 0.305) * t /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCScaled = HctSolver.inverseChromaticAdaptation(rA);\n const gCScaled = HctSolver.inverseChromaticAdaptation(gA);\n const bCScaled = HctSolver.inverseChromaticAdaptation(bA);\n const linrgb = mathUtils.matrixMultiply([rCScaled, gCScaled, bCScaled], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) {\n return 0;\n }\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) {\n return 0;\n }\n if (iterationRound === 4 || Math.abs(fnj - y) < 0.002) {\n if (linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01) {\n return 0;\n }\n return colorUtils.argbFromLinrgb(linrgb);\n }\n // Iterates with Newton method,\n // Using 2 * fn(j) / j as the approximation of fn'(j)\n j = j - (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return A hexadecimal representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToInt(hueDegrees, chroma, lstar) {\n if (chroma < 0.0001 || lstar < 0.0001 || lstar > 99.9999) {\n return colorUtils.argbFromLstar(lstar);\n }\n hueDegrees = mathUtils.sanitizeDegreesDouble(hueDegrees);\n const hueRadians = hueDegrees / 180 * Math.PI;\n const y = colorUtils.yFromLstar(lstar);\n const exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (exactAnswer !== 0) {\n return exactAnswer;\n }\n const linrgb = HctSolver.bisectToLimit(y, hueRadians);\n return colorUtils.argbFromLinrgb(linrgb);\n }\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return An CAM16 object representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToCam(hueDegrees, chroma, lstar) {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [\n [\n 0.001200833568784504,\n 0.002389694492170889,\n 0.0002795742885861124,\n ],\n [\n 0.0005891086651375999,\n 0.0029785502573438758,\n 0.0003270666104008398,\n ],\n [\n 0.00010146692491640572,\n 0.0005364214359186694,\n 0.0032979401770712076,\n ],\n];\nHctSolver.LINRGB_FROM_SCALED_DISCOUNT = [\n [\n 1373.2198709594231,\n -1100.4251190754821,\n -7.278681089101213,\n ],\n [\n -271.815969077903,\n 559.6580465940733,\n -32.46047482791194,\n ],\n [\n 1.9622899599665666,\n -57.173814538844006,\n 308.7233197812385,\n ],\n];\nHctSolver.Y_FROM_LINRGB = [0.2126, 0.7152, 0.0722];\nHctSolver.CRITICAL_PLANES = [\n 0.015176349177441876, 0.045529047532325624, 0.07588174588720938,\n 0.10623444424209313, 0.13658714259697685, 0.16693984095186062,\n 0.19729253930674434, 0.2276452376616281, 0.2579979360165119,\n 0.28835063437139563, 0.3188300904430532, 0.350925934958123,\n 0.3848314933096426, 0.42057480301049466, 0.458183274052838,\n 0.4976837250274023, 0.5391024159806381, 0.5824650784040898,\n 0.6277969426914107, 0.6751227633498623, 0.7244668422128921,\n 0.775853049866786, 0.829304845476233, 0.8848452951698498,\n 0.942497089126609, 1.0022825574869039, 1.0642236851973577,\n 1.1283421258858297, 1.1946592148522128, 1.2631959812511864,\n 1.3339731595349034, 1.407011200216447, 1.4823302800086415,\n 1.5599503113873272, 1.6398909516233677, 1.7221716113234105,\n 1.8068114625156377, 1.8938294463134073, 1.9832442801866852,\n 2.075074464868551, 2.1693382909216234, 2.2660538449872063,\n 2.36523901573795, 2.4669114995532007, 2.5710888059345764,\n 2.6777882626779785, 2.7870270208169257, 2.898822059350997,\n 3.0131901897720907, 3.1301480604002863, 3.2497121605402226,\n 3.3718988244681087, 3.4967242352587946, 3.624204428461639,\n 3.754355295633311, 3.887192587735158, 4.022731918402185,\n 4.160988767090289, 4.301978482107941, 4.445716283538092,\n 4.592217266055746, 4.741496401646282, 4.893568542229298,\n 5.048448422192488, 5.20615066083972, 5.3666897647573375,\n 5.5300801301023865, 5.696336044816294, 5.865471690767354,\n 6.037501145825082, 6.212438385869475, 6.390297286737924,\n 6.571091626112461, 6.7548350853498045, 6.941541251256611,\n 7.131223617812143, 7.323895587840543, 7.5195704746346665,\n 7.7182615035334345, 7.919981813454504, 8.124744458384042,\n 8.332562408825165, 8.543448553206703, 8.757415699253682,\n 8.974476575321063, 9.194643831691977, 9.417930041841839,\n 9.644347703669503, 9.873909240696694, 10.106627003236781,\n 10.342513269534024, 10.58158024687427, 10.8238400726681,\n 11.069304815507364, 11.317986476196008, 11.569896988756009,\n 11.825048221409341, 12.083451977536606, 12.345119996613247,\n 12.610063955123938, 12.878295467455942, 13.149826086772048,\n 13.42466730586372, 13.702830557985108, 13.984327217668513,\n 14.269168601521828, 14.55736596900856, 14.848930523210871,\n 15.143873411576273, 15.44220572664832, 15.743938506781891,\n 16.04908273684337, 16.35764934889634, 16.66964922287304,\n 16.985093187232053, 17.30399201960269, 17.62635644741625,\n 17.95219714852476, 18.281524751807332, 18.614349837764564,\n 18.95068293910138, 19.290534541298456, 19.633915083172692,\n 19.98083495742689, 20.331304511189067, 20.685334046541502,\n 21.042933821039977, 21.404114048223256, 21.76888489811322,\n 22.137256497705877, 22.50923893145328, 22.884842241736916,\n 23.264076429332462, 23.6469514538663, 24.033477234264016,\n 24.42366364919083, 24.817520537484558, 25.21505769858089,\n 25.61628489293138, 26.021211842414342, 26.429848230738664,\n 26.842203703840827, 27.258287870275353, 27.678110301598522,\n 28.10168053274597, 28.529008062403893, 28.96010235337422,\n 29.39497283293396, 29.83362889318845, 30.276079891419332,\n 30.722335150426627, 31.172403958865512, 31.62629557157785,\n 32.08401920991837, 32.54558406207592, 33.010999283389665,\n 33.4802739966603, 33.953417292456834, 34.430438229418264,\n 34.911345834551085, 35.39614910352207, 35.88485700094671,\n 36.37747846067349, 36.87402238606382, 37.37449765026789,\n 37.87891309649659, 38.38727753828926, 38.89959975977785,\n 39.41588851594697, 39.93615253289054, 40.460400508064545,\n 40.98864111053629, 41.520882981230194, 42.05713473317016,\n 42.597404951718396, 43.141702194811224, 43.6900349931913,\n 44.24241185063697, 44.798841244188324, 45.35933162437017,\n 45.92389141541209, 46.49252901546552, 47.065252796817916,\n 47.64207110610409, 48.22299226451468, 48.808024568002054,\n 49.3971762874833, 49.9904556690408, 50.587870934119984,\n 51.189430279724725, 51.79514187861014, 52.40501387947288,\n 53.0190544071392, 53.637271562750364, 54.259673423945976,\n 54.88626804504493, 55.517063457223934, 56.15206766869424,\n 56.79128866487574, 57.43473440856916, 58.08241284012621,\n 58.734331877617365, 59.39049941699807, 60.05092333227251,\n 60.715611475655585, 61.38457167773311, 62.057811747619894,\n 62.7353394731159, 63.417162620860914, 64.10328893648692,\n 64.79372614476921, 65.48848194977529, 66.18756403501224,\n 66.89098006357258, 67.59873767827808, 68.31084450182222,\n 69.02730813691093, 69.74813616640164, 70.47333615344107,\n 71.20291564160104, 71.93688215501312, 72.67524319850172,\n 73.41800625771542, 74.16517879925733, 74.9167682708136,\n 75.67278210128072, 76.43322770089146, 77.1981124613393,\n 77.96744375590167, 78.74122893956174, 79.51947534912904,\n 80.30219030335869, 81.08938110306934, 81.88105503125999,\n 82.67721935322541, 83.4778813166706, 84.28304815182372,\n 85.09272707154808, 85.90692527145302, 86.72564993000343,\n 87.54890820862819, 88.3767072518277, 89.2090541872801,\n 90.04595612594655, 90.88742016217518, 91.73345337380438,\n 92.58406282226491, 93.43925555268066, 94.29903859396902,\n 95.16341895893969, 96.03240364439274, 96.9059996312159,\n 97.78421388448044, 98.6670533535366, 99.55452497210776,\n];\n//# sourceMappingURL=hct_solver.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A color system built using CAM16 hue and chroma, and L* from\n * L*a*b*.\n *\n * Using L* creates a link between the color system, contrast, and thus\n * accessibility. Contrast ratio depends on relative luminance, or Y in the XYZ\n * color space. L*, or perceptual luminance can be calculated from Y.\n *\n * Unlike Y, L* is linear to human perception, allowing trivial creation of\n * accurate color tones.\n *\n * Unlike contrast ratio, measuring contrast in L* is linear, and simple to\n * calculate. A difference of 40 in HCT tone guarantees a contrast ratio >= 3.0,\n * and a difference of 50 guarantees a contrast ratio >= 4.5.\n */\nimport * as utils from '../utils/color_utils.js';\nimport { Cam16 } from './cam16.js';\nimport { HctSolver } from './hct_solver.js';\nimport { ViewingConditions } from './viewing_conditions.js';\n/**\n * HCT, hue, chroma, and tone. A color system that provides a perceptually\n * accurate color measurement system that can also accurately render what colors\n * will appear as in different lighting environments.\n */\nexport class Hct {\n static from(hue, chroma, tone) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n /**\n * @param argb ARGB representation of a color.\n * @return HCT representation of a color in default viewing conditions\n */\n static fromInt(argb) {\n return new Hct(argb);\n }\n toInt() {\n return this.argb;\n }\n /**\n * A number, in degrees, representing ex. red, orange, yellow, etc.\n * Ranges from 0 <= hue < 360.\n */\n get hue() {\n return this.internalHue;\n }\n /**\n * @param newHue 0 <= newHue < 360; invalid values are corrected.\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set hue(newHue) {\n this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n }\n get chroma() {\n return this.internalChroma;\n }\n /**\n * @param newChroma 0 <= newChroma < ?\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set chroma(newChroma) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n }\n /** Lightness. Ranges from 0 to 100. */\n get tone() {\n return this.internalTone;\n }\n /**\n * @param newTone 0 <= newTone <= 100; invalid valids are corrected.\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set tone(newTone) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n }\n constructor(argb) {\n this.argb = argb;\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue;\n this.internalChroma = cam.chroma;\n this.internalTone = utils.lstarFromArgb(argb);\n this.argb = argb;\n }\n setInternalState(argb) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue;\n this.internalChroma = cam.chroma;\n this.internalTone = utils.lstarFromArgb(argb);\n this.argb = argb;\n }\n /**\n * Translates a color into different [ViewingConditions].\n *\n * Colors change appearance. They look different with lights on versus off,\n * the same color, as in hex code, on white looks different when on black.\n * This is called color relativity, most famously explicated by Josef Albers\n * in Interaction of Color.\n *\n * In color science, color appearance models can account for this and\n * calculate the appearance of a color in different settings. HCT is based on\n * CAM16, a color appearance model, and uses it to make these calculations.\n *\n * See [ViewingConditions.make] for parameters affecting color appearance.\n */\n inViewingConditions(vc) {\n // 1. Use CAM16 to find XYZ coordinates of color in specified VC.\n const cam = Cam16.fromInt(this.toInt());\n const viewedInVc = cam.xyzInViewingConditions(vc);\n // 2. Create CAM16 of those XYZ coordinates in default VC.\n const recastInVc = Cam16.fromXyzInViewingConditions(viewedInVc[0], viewedInVc[1], viewedInVc[2], ViewingConditions.make());\n // 3. Create HCT from:\n // - CAM16 using default VC with XYZ coordinates in specified VC.\n // - L* converted from Y in XYZ coordinates in specified VC.\n const recastHct = Hct.from(recastInVc.hue, recastInVc.chroma, utils.lstarFromY(viewedInVc[1]));\n return recastHct;\n }\n}\n//# sourceMappingURL=hct.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n/**\n * Utility methods for calculating contrast given two colors, or calculating a\n * color given one color and a contrast ratio.\n *\n * Contrast ratio is calculated using XYZ's Y. When linearized to match human\n * perception, Y becomes HCT's tone and L*a*b*'s' L*. Informally, this is the\n * lightness of a color.\n *\n * Methods refer to tone, T in the the HCT color space.\n * Tone is equivalent to L* in the L*a*b* color space, or L in the LCH color\n * space.\n */\nexport class Contrast {\n /**\n * Returns a contrast ratio, which ranges from 1 to 21.\n *\n * @param toneA Tone between 0 and 100. Values outside will be clamped.\n * @param toneB Tone between 0 and 100. Values outside will be clamped.\n */\n static ratioOfTones(toneA, toneB) {\n toneA = math.clampDouble(0.0, 100.0, toneA);\n toneB = math.clampDouble(0.0, 100.0, toneB);\n return Contrast.ratioOfYs(utils.yFromLstar(toneA), utils.yFromLstar(toneB));\n }\n static ratioOfYs(y1, y2) {\n const lighter = y1 > y2 ? y1 : y2;\n const darker = (lighter === y2) ? y1 : y2;\n return (lighter + 5.0) / (darker + 5.0);\n }\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighter(tone, ratio) {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n const darkY = utils.yFromLstar(tone);\n const lightY = ratio * (darkY + 5.0) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = utils.lstarFromY(lightY) + 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n /**\n * Returns a tone <= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darker(tone, ratio) {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n const lightY = utils.yFromLstar(tone);\n const darkY = ((lightY + 5.0) / ratio) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = utils.lstarFromY(darkY) - 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the ratio with tone. For example, there is no color lighter than T100.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 100 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighterUnsafe(tone, ratio) {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return (lighterSafe < 0.0) ? 100.0 : lighterSafe;\n }\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the [ratio with [tone]. For example, there is no color darker than T0.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 0 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darkerUnsafe(tone, ratio) {\n const darkerSafe = Contrast.darker(tone, ratio);\n return (darkerSafe < 0.0) ? 0.0 : darkerSafe;\n }\n}\n//# sourceMappingURL=contrast.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Hct } from '../hct/hct.js';\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n/**\n * Check and/or fix universally disliked colors.\n * Color science studies of color preference indicate universal distaste for\n * dark yellow-greens, and also show this is correlated to distate for\n * biological waste and rotting food.\n *\n * See Palmer and Schloss, 2010 or Schloss and Palmer's Chapter 21 in Handbook\n * of Color Psychology (2015).\n */\nexport class DislikeAnalyzer {\n /**\n * Returns true if a color is disliked.\n *\n * @param hct A color to be judged.\n * @return Whether the color is disliked.\n *\n * Disliked is defined as a dark yellow-green that is not neutral.\n */\n static isDisliked(hct) {\n const huePasses = Math.round(hct.hue) >= 90.0 && Math.round(hct.hue) <= 111.0;\n const chromaPasses = Math.round(hct.chroma) > 16.0;\n const tonePasses = Math.round(hct.tone) < 65.0;\n return huePasses && chromaPasses && tonePasses;\n }\n /**\n * If a color is disliked, lighten it to make it likable.\n *\n * @param hct A color to be judged.\n * @return A new color if the original color is disliked, or the original\n * color if it is acceptable.\n */\n static fixIfDisliked(hct) {\n if (DislikeAnalyzer.isDisliked(hct)) {\n return Hct.from(hct.hue, hct.chroma, 70.0);\n }\n return hct;\n }\n}\n//# sourceMappingURL=dislike_analyzer.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Contrast } from '../contrast/contrast.js';\nimport * as math from '../utils/math_utils.js';\n/**\n * A color that adjusts itself based on UI state provided by DynamicScheme.\n *\n * Colors without backgrounds do not change tone when contrast changes. Colors\n * with backgrounds become closer to their background as contrast lowers, and\n * further when contrast increases.\n *\n * Prefer static constructors. They require either a hexcode, a palette and\n * tone, or a hue and chroma. Optionally, they can provide a background\n * DynamicColor.\n */\nexport class DynamicColor {\n /**\n * Create a DynamicColor defined by a TonalPalette and HCT tone.\n *\n * @param args Functions with DynamicScheme as input. Must provide a palette\n * and tone. May provide a background DynamicColor and ToneDeltaConstraint.\n */\n static fromPalette(args) {\n return new DynamicColor(args.name ?? '', args.palette, args.tone, args.isBackground ?? false, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);\n }\n /**\n * The base constructor for DynamicColor.\n *\n * _Strongly_ prefer using one of the convenience constructors. This class is\n * arguably too flexible to ensure it can support any scenario. Functional\n * arguments allow overriding without risks that come with subclasses.\n *\n * For example, the default behavior of adjust tone at max contrast\n * to be at a 7.0 ratio with its background is principled and\n * matches accessibility guidance. That does not mean it's the desired\n * approach for _every_ design system, and every color pairing,\n * always, in every case.\n *\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given\n * DynamicScheme. A TonalPalette is defined by a hue and chroma, so this\n * replaces the need to specify hue/chroma. By providing a tonal palette, when\n * contrast adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone, given a DynamicScheme.\n * @param isBackground Whether this dynamic color is a background, with\n * some other color as the foreground. Defaults to false.\n * @param background The background of the dynamic color (as a function of a\n * `DynamicScheme`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `DynamicScheme`), if it\n * exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels options.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed.\n */\n constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {\n this.name = name;\n this.palette = palette;\n this.tone = tone;\n this.isBackground = isBackground;\n this.background = background;\n this.secondBackground = secondBackground;\n this.contrastCurve = contrastCurve;\n this.toneDeltaPair = toneDeltaPair;\n this.hctCache = new Map();\n if ((!background) && secondBackground) {\n throw new Error(`Color ${name} has secondBackground` +\n `defined, but background is not defined.`);\n }\n if ((!background) && contrastCurve) {\n throw new Error(`Color ${name} has contrastCurve` +\n `defined, but background is not defined.`);\n }\n if (background && !contrastCurve) {\n throw new Error(`Color ${name} has background` +\n `defined, but contrastCurve is not defined.`);\n }\n }\n /**\n * Return a ARGB integer (i.e. a hex code).\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getArgb(scheme) {\n return this.getHct(scheme).toInt();\n }\n /**\n * Return a color, expressed in the HCT color space, that this\n * DynamicColor is under the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getHct(scheme) {\n const cachedAnswer = this.hctCache.get(scheme);\n if (cachedAnswer != null) {\n return cachedAnswer;\n }\n const tone = this.getTone(scheme);\n const answer = this.palette(scheme).getHct(tone);\n if (this.hctCache.size > 4) {\n this.hctCache.clear();\n }\n this.hctCache.set(scheme, answer);\n return answer;\n }\n /**\n * Return a tone, T in the HCT color space, that this DynamicColor is under\n * the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getTone(scheme) {\n const decreasingContrast = scheme.contrastLevel < 0;\n // Case 1: dual foreground, pair of colors with delta constraint.\n if (this.toneDeltaPair) {\n const toneDeltaPair = this.toneDeltaPair(scheme);\n const roleA = toneDeltaPair.roleA;\n const roleB = toneDeltaPair.roleB;\n const delta = toneDeltaPair.delta;\n const polarity = toneDeltaPair.polarity;\n const stayTogether = toneDeltaPair.stayTogether;\n const bg = this.background(scheme);\n const bgTone = bg.getTone(scheme);\n const aIsNearer = (polarity === 'nearer' ||\n (polarity === 'lighter' && !scheme.isDark) ||\n (polarity === 'darker' && scheme.isDark));\n const nearer = aIsNearer ? roleA : roleB;\n const farther = aIsNearer ? roleB : roleA;\n const amNearer = this.name === nearer.name;\n const expansionDir = scheme.isDark ? 1 : -1;\n // 1st round: solve to min, each\n const nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel);\n const fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel);\n // If a color is good enough, it is not adjusted.\n // Initial and adjusted tones for `nearer`\n const nInitialTone = nearer.tone(scheme);\n let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ?\n nInitialTone :\n DynamicColor.foregroundTone(bgTone, nContrast);\n // Initial and adjusted tones for `farther`\n const fInitialTone = farther.tone(scheme);\n let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ?\n fInitialTone :\n DynamicColor.foregroundTone(bgTone, fContrast);\n if (decreasingContrast) {\n // If decreasing contrast, adjust color to the \"bare minimum\"\n // that satisfies contrast.\n nTone = DynamicColor.foregroundTone(bgTone, nContrast);\n fTone = DynamicColor.foregroundTone(bgTone, fContrast);\n }\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones satisfy the constraint; no change needed.\n }\n else {\n // 2nd round: expand farther to match delta.\n fTone = math.clampDouble(0, 100, nTone + delta * expansionDir);\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones now satisfy the constraint; no change needed.\n }\n else {\n // 3rd round: contract nearer to match delta.\n nTone = math.clampDouble(0, 100, fTone - delta * expansionDir);\n }\n }\n // Avoids the 50-59 awkward zone.\n if (50 <= nTone && nTone < 60) {\n // If `nearer` is in the awkward zone, move it away, together with\n // `farther`.\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n }\n else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n }\n else if (50 <= fTone && fTone < 60) {\n if (stayTogether) {\n // Fixes both, to avoid two colors on opposite sides of the \"awkward\n // zone\".\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n }\n else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n }\n else {\n // Not required to stay together; fixes just one.\n if (expansionDir > 0) {\n fTone = 60;\n }\n else {\n fTone = 49;\n }\n }\n }\n // Returns `nTone` if this color is `nearer`, otherwise `fTone`.\n return amNearer ? nTone : fTone;\n }\n else {\n // Case 2: No contrast pair; just solve for itself.\n let answer = this.tone(scheme);\n if (this.background == null) {\n return answer; // No adjustment for colors with no background.\n }\n const bgTone = this.background(scheme).getTone(scheme);\n const desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio) {\n // Don't \"improve\" what's good enough.\n }\n else {\n // Rough improvement.\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n if (decreasingContrast) {\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n if (this.isBackground && 50 <= answer && answer < 60) {\n // Must adjust\n if (Contrast.ratioOfTones(49, bgTone) >= desiredRatio) {\n answer = 49;\n }\n else {\n answer = 60;\n }\n }\n if (this.secondBackground) {\n // Case 3: Adjust for dual backgrounds.\n const [bg1, bg2] = [this.background, this.secondBackground];\n const [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)];\n const [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio &&\n Contrast.ratioOfTones(lower, answer) >= desiredRatio) {\n return answer;\n }\n // The darkest light tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const lightOption = Contrast.lighter(upper, desiredRatio);\n // The lightest dark tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const darkOption = Contrast.darker(lower, desiredRatio);\n // Tones suitable for the foreground.\n const availables = [];\n if (lightOption !== -1)\n availables.push(lightOption);\n if (darkOption !== -1)\n availables.push(darkOption);\n const prefersLight = DynamicColor.tonePrefersLightForeground(bgTone1) ||\n DynamicColor.tonePrefersLightForeground(bgTone2);\n if (prefersLight) {\n return (lightOption < 0) ? 100 : lightOption;\n }\n if (availables.length === 1) {\n return availables[0];\n }\n return (darkOption < 0) ? 0 : darkOption;\n }\n return answer;\n }\n }\n /**\n * Given a background tone, find a foreground tone, while ensuring they reach\n * a contrast ratio that is as close to [ratio] as possible.\n *\n * @param bgTone Tone in HCT. Range is 0 to 100, undefined behavior when it\n * falls outside that range.\n * @param ratio The contrast ratio desired between bgTone and the return\n * value.\n */\n static foregroundTone(bgTone, ratio) {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio);\n const darkerTone = Contrast.darkerUnsafe(bgTone, ratio);\n const lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone);\n const darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n const preferLighter = DynamicColor.tonePrefersLightForeground(bgTone);\n if (preferLighter) {\n // This handles an edge case where the initial contrast ratio is high\n // (ex. 13.0), and the ratio passed to the function is that high\n // ratio, and both the lighter and darker ratio fails to pass that\n // ratio.\n //\n // This was observed with Tonal Spot's On Primary Container turning\n // black momentarily between high and max contrast in light mode. PC's\n // standard tone was T90, OPC's was T10, it was light mode, and the\n // contrast value was 0.6568521221032331.\n const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < 0.1 &&\n lighterRatio < ratio && darkerRatio < ratio;\n return lighterRatio >= ratio || lighterRatio >= darkerRatio ||\n negligibleDifference ?\n lighterTone :\n darkerTone;\n }\n else {\n return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone :\n lighterTone;\n }\n }\n /**\n * Returns whether [tone] prefers a light foreground.\n *\n * People prefer white foregrounds on ~T60-70. Observed over time, and also\n * by Andrew Somers during research for APCA.\n *\n * T60 used as to create the smallest discontinuity possible when skipping\n * down to T49 in order to ensure light foregrounds.\n * Since `tertiaryContainer` in dark monochrome scheme requires a tone of\n * 60, it should not be adjusted. Therefore, 60 is excluded here.\n */\n static tonePrefersLightForeground(tone) {\n return Math.round(tone) < 60.0;\n }\n /**\n * Returns whether [tone] can reach a contrast ratio of 4.5 with a lighter\n * color.\n */\n static toneAllowsLightForeground(tone) {\n return Math.round(tone) <= 49.0;\n }\n /**\n * Adjust a tone such that white has 4.5 contrast, if the tone is\n * reasonably close to supporting it.\n */\n static enableLightForeground(tone) {\n if (DynamicColor.tonePrefersLightForeground(tone) &&\n !DynamicColor.toneAllowsLightForeground(tone)) {\n return 49.0;\n }\n return tone;\n }\n}\n//# sourceMappingURL=dynamic_color.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Set of themes supported by Dynamic Color.\n * Instantiate the corresponding subclass, ex. SchemeTonalSpot, to create\n * colors corresponding to the theme.\n */\nexport var Variant;\n(function (Variant) {\n Variant[Variant[\"MONOCHROME\"] = 0] = \"MONOCHROME\";\n Variant[Variant[\"NEUTRAL\"] = 1] = \"NEUTRAL\";\n Variant[Variant[\"TONAL_SPOT\"] = 2] = \"TONAL_SPOT\";\n Variant[Variant[\"VIBRANT\"] = 3] = \"VIBRANT\";\n Variant[Variant[\"EXPRESSIVE\"] = 4] = \"EXPRESSIVE\";\n Variant[Variant[\"FIDELITY\"] = 5] = \"FIDELITY\";\n Variant[Variant[\"CONTENT\"] = 6] = \"CONTENT\";\n Variant[Variant[\"RAINBOW\"] = 7] = \"RAINBOW\";\n Variant[Variant[\"FRUIT_SALAD\"] = 8] = \"FRUIT_SALAD\";\n})(Variant || (Variant = {}));\n//# sourceMappingURL=variant.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as math from '../utils/math_utils.js';\n/**\n * A class containing the contrast curve for a dynamic color on its background.\n *\n * The four values correspond to contrast requirements for contrast levels\n * -1.0, 0.0, 0.5, and 1.0, respectively.\n */\nexport class ContrastCurve {\n /**\n * Creates a `ContrastCurve` object.\n *\n * @param low Contrast requirement for contrast level -1.0\n * @param normal Contrast requirement for contrast level 0.0\n * @param medium Contrast requirement for contrast level 0.5\n * @param high Contrast requirement for contrast level 1.0\n */\n constructor(low, normal, medium, high) {\n this.low = low;\n this.normal = normal;\n this.medium = medium;\n this.high = high;\n }\n /**\n * Returns the contrast ratio at a given contrast level.\n *\n * @param contrastLevel The contrast level. 0.0 is the default (normal);\n * -1.0 is the lowest; 1.0 is the highest.\n * @return The contrast ratio, a number between 1.0 and 21.0.\n */\n getContrast(contrastLevel) {\n if (contrastLevel <= -1.0) {\n return this.low;\n }\n else if (contrastLevel < 0.0) {\n return math.lerp(this.low, this.normal, (contrastLevel - (-1)) / 1);\n }\n else if (contrastLevel < 0.5) {\n return math.lerp(this.normal, this.medium, (contrastLevel - 0) / 0.5);\n }\n else if (contrastLevel < 1.0) {\n return math.lerp(this.medium, this.high, (contrastLevel - 0.5) / 0.5);\n }\n else {\n return this.high;\n }\n }\n}\n//# sourceMappingURL=contrast_curve.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Documents a constraint between two DynamicColors, in which their tones must\n * have a certain distance from each other.\n *\n * Prefer a DynamicColor with a background, this is for special cases when\n * designers want tonal distance, literally contrast, between two colors that\n * don't have a background / foreground relationship or a contrast guarantee.\n */\nexport class ToneDeltaPair {\n /**\n * Documents a constraint in tone distance between two DynamicColors.\n *\n * The polarity is an adjective that describes \"A\", compared to \"B\".\n *\n * For instance, ToneDeltaPair(A, B, 15, 'darker', stayTogether) states that\n * A's tone should be at least 15 darker than B's.\n *\n * 'nearer' and 'farther' describes closeness to the surface roles. For\n * instance, ToneDeltaPair(A, B, 10, 'nearer', stayTogether) states that A\n * should be 10 lighter than B in light mode, and 10 darker than B in dark\n * mode.\n *\n * @param roleA The first role in a pair.\n * @param roleB The second role in a pair.\n * @param delta Required difference between tones. Absolute value, negative\n * values have undefined behavior.\n * @param polarity The relative relation between tones of roleA and roleB,\n * as described above.\n * @param stayTogether Whether these two roles should stay on the same side of\n * the \"awkward zone\" (T50-59). This is necessary for certain cases where\n * one role has two backgrounds.\n */\n constructor(roleA, roleB, delta, polarity, stayTogether) {\n this.roleA = roleA;\n this.roleB = roleB;\n this.delta = delta;\n this.polarity = polarity;\n this.stayTogether = stayTogether;\n }\n}\n//# sourceMappingURL=tone_delta_pair.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DislikeAnalyzer } from '../dislike/dislike_analyzer.js';\nimport { Hct } from '../hct/hct.js';\nimport { ViewingConditions } from '../hct/viewing_conditions.js';\nimport { Variant } from '../scheme/variant.js';\nimport { ContrastCurve } from './contrast_curve.js';\nimport { DynamicColor } from './dynamic_color.js';\nimport { ToneDeltaPair } from './tone_delta_pair.js';\nfunction isFidelity(scheme) {\n return scheme.variant === Variant.FIDELITY ||\n scheme.variant === Variant.CONTENT;\n}\nfunction isMonochrome(scheme) {\n return scheme.variant === Variant.MONOCHROME;\n}\nfunction findDesiredChromaByTone(hue, chroma, tone, byDecreasingTone) {\n let answer = tone;\n let closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n while (closestToChroma.chroma < chroma) {\n answer += byDecreasingTone ? -1.0 : 1.0;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) {\n break;\n }\n if (Math.abs(potentialSolution.chroma - chroma) < 0.4) {\n break;\n }\n const potentialDelta = Math.abs(potentialSolution.chroma - chroma);\n const currentDelta = Math.abs(closestToChroma.chroma - chroma);\n if (potentialDelta < currentDelta) {\n closestToChroma = potentialSolution;\n }\n chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n return answer;\n}\nfunction viewingConditionsForAlbers(scheme) {\n return ViewingConditions.make(\n /*whitePoint=*/ undefined, \n /*adaptingLuminance=*/ undefined, \n /*backgroundLstar=*/ scheme.isDark ? 30 : 80, \n /*surround=*/ undefined, \n /*discountingIlluminant=*/ undefined);\n}\nfunction performAlbers(prealbers, scheme) {\n const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));\n if (DynamicColor.tonePrefersLightForeground(prealbers.tone) &&\n !DynamicColor.toneAllowsLightForeground(albersd.tone)) {\n return DynamicColor.enableLightForeground(prealbers.tone);\n }\n else {\n return DynamicColor.enableLightForeground(albersd.tone);\n }\n}\n/**\n * DynamicColors for the colors in the Material Design system.\n */\n// Material Color Utilities namespaces the various utilities it provides.\n// tslint:disable-next-line:class-as-namespace\nexport class MaterialDynamicColors {\n static highestSurface(s) {\n return s.isDark ? MaterialDynamicColors.surfaceBright :\n MaterialDynamicColors.surfaceDim;\n }\n}\nMaterialDynamicColors.contentAccentToneDelta = 15.0;\nMaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({\n name: 'primary_palette_key_color',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.primaryPalette.keyColor.tone,\n});\nMaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({\n name: 'secondary_palette_key_color',\n palette: (s) => s.secondaryPalette,\n tone: (s) => s.secondaryPalette.keyColor.tone,\n});\nMaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({\n name: 'tertiary_palette_key_color',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => s.tertiaryPalette.keyColor.tone,\n});\nMaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({\n name: 'neutral_palette_key_color',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.neutralPalette.keyColor.tone,\n});\nMaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({\n name: 'neutral_variant_palette_key_color',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.neutralVariantPalette.keyColor.tone,\n});\nMaterialDynamicColors.background = DynamicColor.fromPalette({\n name: 'background',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 98,\n isBackground: true,\n});\nMaterialDynamicColors.onBackground = DynamicColor.fromPalette({\n name: 'on_background',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => MaterialDynamicColors.background,\n contrastCurve: new ContrastCurve(3, 3, 4.5, 7),\n});\nMaterialDynamicColors.surface = DynamicColor.fromPalette({\n name: 'surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 98,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({\n name: 'surface_dim',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 87,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({\n name: 'surface_bright',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 24 : 98,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({\n name: 'surface_container_lowest',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 4 : 100,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({\n name: 'surface_container_low',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 10 : 96,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({\n name: 'surface_container',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 12 : 94,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({\n name: 'surface_container_high',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 17 : 92,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({\n name: 'surface_container_highest',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 22 : 90,\n isBackground: true,\n});\nMaterialDynamicColors.onSurface = DynamicColor.fromPalette({\n name: 'on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({\n name: 'surface_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 30 : 90,\n isBackground: true,\n});\nMaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({\n name: 'on_surface_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 80 : 30,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\nMaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({\n name: 'inverse_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 20,\n});\nMaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({\n name: 'inverse_on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 20 : 95,\n background: (s) => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.outline = DynamicColor.fromPalette({\n name: 'outline',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 60 : 50,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7),\n});\nMaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({\n name: 'outline_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 30 : 80,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n});\nMaterialDynamicColors.shadow = DynamicColor.fromPalette({\n name: 'shadow',\n palette: (s) => s.neutralPalette,\n tone: (s) => 0,\n});\nMaterialDynamicColors.scrim = DynamicColor.fromPalette({\n name: 'scrim',\n palette: (s) => s.neutralPalette,\n tone: (s) => 0,\n});\nMaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({\n name: 'surface_tint',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n});\nMaterialDynamicColors.primary = DynamicColor.fromPalette({\n name: 'primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 100 : 0;\n }\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onPrimary = DynamicColor.fromPalette({\n name: 'on_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 90;\n }\n return s.isDark ? 20 : 100;\n },\n background: (s) => MaterialDynamicColors.primary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({\n name: 'primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isFidelity(s)) {\n return performAlbers(s.sourceColorHct, s);\n }\n if (isMonochrome(s)) {\n return s.isDark ? 85 : 25;\n }\n return s.isDark ? 30 : 90;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({\n name: 'on_primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isFidelity(s)) {\n return DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5);\n }\n if (isMonochrome(s)) {\n return s.isDark ? 0 : 100;\n }\n return s.isDark ? 90 : 10;\n },\n background: (s) => MaterialDynamicColors.primaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({\n name: 'inverse_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.isDark ? 40 : 80,\n background: (s) => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\nMaterialDynamicColors.secondary = DynamicColor.fromPalette({\n name: 'secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onSecondary = DynamicColor.fromPalette({\n name: 'on_secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 100;\n }\n else {\n return s.isDark ? 20 : 100;\n }\n },\n background: (s) => MaterialDynamicColors.secondary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({\n name: 'secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n const initialTone = s.isDark ? 30 : 90;\n if (isMonochrome(s)) {\n return s.isDark ? 30 : 85;\n }\n if (!isFidelity(s)) {\n return initialTone;\n }\n let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, s.isDark ? false : true);\n answer = performAlbers(s.secondaryPalette.getHct(answer), s);\n return answer;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({\n name: 'on_secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (!isFidelity(s)) {\n return s.isDark ? 90 : 10;\n }\n return DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5);\n },\n background: (s) => MaterialDynamicColors.secondaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.tertiary = DynamicColor.fromPalette({\n name: 'tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 90 : 25;\n }\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onTertiary = DynamicColor.fromPalette({\n name: 'on_tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 90;\n }\n return s.isDark ? 20 : 100;\n },\n background: (s) => MaterialDynamicColors.tertiary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({\n name: 'tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 60 : 49;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 30 : 90;\n }\n const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s);\n const proposedHct = s.tertiaryPalette.getHct(albersTone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({\n name: 'on_tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 0 : 100;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 90 : 10;\n }\n return DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5);\n },\n background: (s) => MaterialDynamicColors.tertiaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.error = DynamicColor.fromPalette({\n name: 'error',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, 'nearer', false),\n});\nMaterialDynamicColors.onError = DynamicColor.fromPalette({\n name: 'on_error',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 20 : 100,\n background: (s) => MaterialDynamicColors.error,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.errorContainer = DynamicColor.fromPalette({\n name: 'error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 30 : 90,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, 'nearer', false),\n});\nMaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({\n name: 'on_error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => MaterialDynamicColors.errorContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({\n name: 'primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 40.0 : 90.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({\n name: 'primary_fixed_dim',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 30.0 : 80.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({\n name: 'on_primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 100.0 : 10.0,\n background: (s) => MaterialDynamicColors.primaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({\n name: 'on_primary_fixed_variant',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 90.0 : 30.0,\n background: (s) => MaterialDynamicColors.primaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\nMaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({\n name: 'secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 80.0 : 90.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({\n name: 'secondary_fixed_dim',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 70.0 : 80.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({\n name: 'on_secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => 10.0,\n background: (s) => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({\n name: 'on_secondary_fixed_variant',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 25.0 : 30.0,\n background: (s) => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\nMaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({\n name: 'tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 40.0 : 90.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({\n name: 'tertiary_fixed_dim',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 30.0 : 80.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({\n name: 'on_tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 100.0 : 10.0,\n background: (s) => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({\n name: 'on_tertiary_fixed_variant',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 90.0 : 30.0,\n background: (s) => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\n//# sourceMappingURL=material_dynamic_colors.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as colorUtils from './color_utils.js';\n/**\n * Utility methods for hexadecimal representations of colors.\n */\n/**\n * @param argb ARGB representation of a color.\n * @return Hex string representing color, ex. #ff0000 for red.\n */\nexport function hexFromArgb(argb) {\n const r = colorUtils.redFromArgb(argb);\n const g = colorUtils.greenFromArgb(argb);\n const b = colorUtils.blueFromArgb(argb);\n const outParts = [r.toString(16), g.toString(16), b.toString(16)];\n // Pad single-digit output values\n for (const [i, part] of outParts.entries()) {\n if (part.length === 1) {\n outParts[i] = '0' + part;\n }\n }\n return '#' + outParts.join('');\n}\n/**\n * @param hex String representing color as hex code. Accepts strings with or\n * without leading #, and string representing the color using 3, 6, or 8\n * hex characters.\n * @return ARGB representation of color.\n */\nexport function argbFromHex(hex) {\n hex = hex.replace('#', '');\n const isThree = hex.length === 3;\n const isSix = hex.length === 6;\n const isEight = hex.length === 8;\n if (!isThree && !isSix && !isEight) {\n throw new Error('unexpected hex ' + hex);\n }\n let r = 0;\n let g = 0;\n let b = 0;\n if (isThree) {\n r = parseIntHex(hex.slice(0, 1).repeat(2));\n g = parseIntHex(hex.slice(1, 2).repeat(2));\n b = parseIntHex(hex.slice(2, 3).repeat(2));\n }\n else if (isSix) {\n r = parseIntHex(hex.slice(0, 2));\n g = parseIntHex(hex.slice(2, 4));\n b = parseIntHex(hex.slice(4, 6));\n }\n else if (isEight) {\n r = parseIntHex(hex.slice(2, 4));\n g = parseIntHex(hex.slice(4, 6));\n b = parseIntHex(hex.slice(6, 8));\n }\n return (((255 << 24) | ((r & 0x0ff) << 16) | ((g & 0x0ff) << 8) | (b & 0x0ff)) >>>\n 0);\n}\nfunction parseIntHex(value) {\n // tslint:disable-next-line:ban\n return parseInt(value, 16);\n}\n//# sourceMappingURL=string_utils.js.map","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory());\n})(this, (function () { 'use strict';\n\n var limit$2 = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var limit$1 = limit$2;\n\n var clip_rgb$3 = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit$1(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit$1(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i$1 = 0, list$1 = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i$1 < list$1.length; i$1 += 1) {\n var name = list$1[i$1];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type$p = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var type$o = type$p;\n\n var unpack$B = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type$o(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var type$n = type$p;\n\n var last$4 = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type$n(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI$2 = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb$3,\n \tlimit: limit$2,\n \ttype: type$p,\n \tunpack: unpack$B,\n \tlast: last$4,\n \tPI: PI$2,\n \tTWOPI: PI$2*2,\n \tPITHIRD: PI$2/3,\n \tDEG2RAD: PI$2 / 180,\n \tRAD2DEG: 180 / PI$2\n };\n\n var input$h = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$3 = utils.last;\n var clip_rgb$2 = utils.clip_rgb;\n var type$m = utils.type;\n var _input = input$h;\n\n var Color$D = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$m(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$3(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!_input.sorted) {\n _input.autodetect = _input.autodetect.sort(function (a,b) { return b.p - a.p; });\n _input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = _input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (_input.format[mode]) {\n var rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$2(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color$D.prototype.toString = function toString () {\n if (type$m(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color$D;\n\n var chroma$k = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma$k.Color, [ null ].concat( args) ));\n };\n\n chroma$k.Color = Color_1;\n chroma$k.version = '2.4.2';\n\n var chroma_1 = chroma$k;\n\n var unpack$A = utils.unpack;\n var max$2 = Math.max;\n\n var rgb2cmyk$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$A(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max$2(r,max$2(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk$1;\n\n var unpack$z = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$z(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var chroma$j = chroma_1;\n var Color$C = Color_1;\n var input$g = input$h;\n var unpack$y = utils.unpack;\n var type$l = utils.type;\n\n var rgb2cmyk = rgb2cmyk_1;\n\n Color$C.prototype.cmyk = function() {\n return rgb2cmyk(this._rgb);\n };\n\n chroma$j.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$C, [ null ].concat( args, ['cmyk']) ));\n };\n\n input$g.format.cmyk = cmyk2rgb_1;\n\n input$g.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$y(args, 'cmyk');\n if (type$l(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$x = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$x(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css$1;\n\n var unpack$w = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl$3 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$w(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl$3;\n\n var unpack$v = utils.unpack;\n var last$1 = utils.last;\n var hsl2css = hsl2css_1;\n var rgb2hsl$2 = rgb2hsl_1;\n var round$6 = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$v(args, 'rgba');\n var mode = last$1(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css(rgb2hsl$2(rgba), mode);\n }\n rgba[0] = round$6(rgba[0]);\n rgba[1] = round$6(rgba[1]);\n rgba[2] = round$6(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css$1;\n\n var unpack$u = utils.unpack;\n var round$5 = Math.round;\n\n var hsl2rgb$1 = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$u(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$5(c[0]*255),round$5(c[1]*255),round$5(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb$1;\n\n var hsl2rgb = hsl2rgb_1;\n var input$f = input$h;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$4 = Math.round;\n\n var css2rgb$1 = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input$f.format.named) {\n try {\n return input$f.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb$1.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb$1;\n\n var chroma$i = chroma_1;\n var Color$B = Color_1;\n var input$e = input$h;\n var type$k = utils.type;\n\n var rgb2css = rgb2css_1;\n var css2rgb = css2rgb_1;\n\n Color$B.prototype.css = function(mode) {\n return rgb2css(this._rgb, mode);\n };\n\n chroma$i.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$B, [ null ].concat( args, ['css']) ));\n };\n\n input$e.format.css = css2rgb;\n\n input$e.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$k(h) === 'string' && css2rgb.test(h)) {\n return 'css';\n }\n }\n });\n\n var Color$A = Color_1;\n var chroma$h = chroma_1;\n var input$d = input$h;\n var unpack$t = utils.unpack;\n\n input$d.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$t(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma$h.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$A, [ null ].concat( args, ['gl']) ));\n };\n\n Color$A.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$s = utils.unpack;\n\n var rgb2hcg$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$s(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg$1;\n\n var unpack$r = utils.unpack;\n var floor$3 = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$r(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor$3(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$q = utils.unpack;\n var type$j = utils.type;\n var chroma$g = chroma_1;\n var Color$z = Color_1;\n var input$c = input$h;\n\n var rgb2hcg = rgb2hcg_1;\n\n Color$z.prototype.hcg = function() {\n return rgb2hcg(this._rgb);\n };\n\n chroma$g.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$z, [ null ].concat( args, ['hcg']) ));\n };\n\n input$c.format.hcg = hcg2rgb_1;\n\n input$c.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'hcg');\n if (type$j(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$p = utils.unpack;\n var last = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$p(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex$2;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\n var hex2rgb$1 = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 5 || hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n // expand short-notation to full eight-digit\n if (hex.length === 4) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb$1;\n\n var chroma$f = chroma_1;\n var Color$y = Color_1;\n var type$i = utils.type;\n var input$b = input$h;\n\n var rgb2hex$1 = rgb2hex_1;\n\n Color$y.prototype.hex = function(mode) {\n return rgb2hex$1(this._rgb, mode);\n };\n\n chroma$f.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$y, [ null ].concat( args, ['hex']) ));\n };\n\n input$b.format.hex = hex2rgb_1;\n input$b.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$i(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) {\n return 'hex';\n }\n }\n });\n\n var unpack$o = utils.unpack;\n var TWOPI$2 = utils.TWOPI;\n var min$2 = Math.min;\n var sqrt$4 = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min$2(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt$4((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI$2 - h;\n }\n h /= TWOPI$2;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi$1;\n\n var unpack$n = utils.unpack;\n var limit = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos$4 = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$n(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit(i*r*3);\n g = limit(i*g*3);\n b = limit(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$m = utils.unpack;\n var type$h = utils.type;\n var chroma$e = chroma_1;\n var Color$x = Color_1;\n var input$a = input$h;\n\n var rgb2hsi = rgb2hsi_1;\n\n Color$x.prototype.hsi = function() {\n return rgb2hsi(this._rgb);\n };\n\n chroma$e.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$x, [ null ].concat( args, ['hsi']) ));\n };\n\n input$a.format.hsi = hsi2rgb_1;\n\n input$a.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'hsi');\n if (type$h(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$l = utils.unpack;\n var type$g = utils.type;\n var chroma$d = chroma_1;\n var Color$w = Color_1;\n var input$9 = input$h;\n\n var rgb2hsl$1 = rgb2hsl_1;\n\n Color$w.prototype.hsl = function() {\n return rgb2hsl$1(this._rgb);\n };\n\n chroma$d.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$w, [ null ].concat( args, ['hsl']) ));\n };\n\n input$9.format.hsl = hsl2rgb_1;\n\n input$9.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'hsl');\n if (type$g(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$k = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$k(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv$1 = rgb2hsl;\n\n var unpack$j = utils.unpack;\n var floor$2 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$j(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$2(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$i = utils.unpack;\n var type$f = utils.type;\n var chroma$c = chroma_1;\n var Color$v = Color_1;\n var input$8 = input$h;\n\n var rgb2hsv = rgb2hsv$1;\n\n Color$v.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma$c.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$v, [ null ].concat( args, ['hsv']) ));\n };\n\n input$8.format.hsv = hsv2rgb_1;\n\n input$8.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$i(args, 'hsv');\n if (type$f(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var LAB_CONSTANTS$3 = labConstants;\n var unpack$h = utils.unpack;\n var pow$a = Math.pow;\n\n var rgb2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$h(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow$a((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > LAB_CONSTANTS$3.t3) { return pow$a(t, 1 / 3); }\n return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS$3.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab$2;\n\n var LAB_CONSTANTS$2 = labConstants;\n var unpack$g = utils.unpack;\n var pow$9 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = LAB_CONSTANTS$2.Yn * lab_xyz(y);\n x = LAB_CONSTANTS$2.Xn * lab_xyz(x);\n z = LAB_CONSTANTS$2.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0)\n };\n\n var lab2rgb_1 = lab2rgb$1;\n\n var unpack$f = utils.unpack;\n var type$e = utils.type;\n var chroma$b = chroma_1;\n var Color$u = Color_1;\n var input$7 = input$h;\n\n var rgb2lab$1 = rgb2lab_1;\n\n Color$u.prototype.lab = function() {\n return rgb2lab$1(this._rgb);\n };\n\n chroma$b.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$u, [ null ].concat( args, ['lab']) ));\n };\n\n input$7.format.lab = lab2rgb_1;\n\n input$7.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'lab');\n if (type$e(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$e = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$3 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var round$2 = Math.round;\n\n var lab2lch$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$e(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$3(a * a + b * b);\n var h = (atan2$2(b, a) * RAD2DEG + 360) % 360;\n if (round$2(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch$2;\n\n var unpack$d = utils.unpack;\n var rgb2lab = rgb2lab_1;\n var lab2lch$1 = lab2lch_1;\n\n var rgb2lch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch$1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch$1;\n\n var unpack$c = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin$3 = Math.sin;\n var cos$3 = Math.cos;\n\n var lch2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$c(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$3(h) * c, sin$3(h) * c]\n };\n\n var lch2lab_1 = lch2lab$2;\n\n var unpack$b = utils.unpack;\n var lch2lab$1 = lch2lab_1;\n var lab2rgb = lab2rgb_1;\n\n var lch2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab$1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb$1;\n\n var unpack$a = utils.unpack;\n var lch2rgb = lch2rgb_1;\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$a(args, 'hcl').reverse();\n return lch2rgb.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$9 = utils.unpack;\n var type$d = utils.type;\n var chroma$a = chroma_1;\n var Color$t = Color_1;\n var input$6 = input$h;\n\n var rgb2lch = rgb2lch_1;\n\n Color$t.prototype.lch = function() { return rgb2lch(this._rgb); };\n Color$t.prototype.hcl = function() { return rgb2lch(this._rgb).reverse(); };\n\n chroma$a.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['lch']) ));\n };\n chroma$a.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['hcl']) ));\n };\n\n input$6.format.lch = lch2rgb_1;\n input$6.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input$6.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$9(args, m);\n if (type$d(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11$1 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11$1;\n\n var Color$s = Color_1;\n var input$5 = input$h;\n var type$c = utils.type;\n\n var w3cx11 = w3cx11_1;\n var hex2rgb = hex2rgb_1;\n var rgb2hex = rgb2hex_1;\n\n Color$s.prototype.name = function() {\n var hex = rgb2hex(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input$5.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11[name]) { return hex2rgb(w3cx11[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input$5.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$c(h) === 'string' && w3cx11[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n var rgb2num$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$8(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num$1;\n\n var type$b = utils.type;\n\n var num2rgb = function (num) {\n if (type$b(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var chroma$9 = chroma_1;\n var Color$r = Color_1;\n var input$4 = input$h;\n var type$a = utils.type;\n\n var rgb2num = rgb2num_1;\n\n Color$r.prototype.num = function() {\n return rgb2num(this._rgb);\n };\n\n chroma$9.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$r, [ null ].concat( args, ['num']) ));\n };\n\n input$4.format.num = num2rgb_1;\n\n input$4.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$a(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var chroma$8 = chroma_1;\n var Color$q = Color_1;\n var input$3 = input$h;\n var unpack$7 = utils.unpack;\n var type$9 = utils.type;\n var round$1 = Math.round;\n\n Color$q.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$1);\n };\n\n Color$q.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$1(v)) : v;\n });\n };\n\n chroma$8.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$q, [ null ].concat( args, ['rgb']) ));\n };\n\n input$3.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$7(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input$3.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$7(args, 'rgba');\n if (type$9(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$9(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log$1 = Math.log;\n\n var temperature2rgb$1 = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log$1(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log$1(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log$1(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log$1(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb$1;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n var temperature2rgb = temperature2rgb_1;\n var unpack$6 = utils.unpack;\n var round = Math.round;\n\n var rgb2temperature$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$6(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature$1;\n\n var chroma$7 = chroma_1;\n var Color$p = Color_1;\n var input$2 = input$h;\n\n var rgb2temperature = rgb2temperature_1;\n\n Color$p.prototype.temp =\n Color$p.prototype.kelvin =\n Color$p.prototype.temperature = function() {\n return rgb2temperature(this._rgb);\n };\n\n chroma$7.temp =\n chroma$7.kelvin =\n chroma$7.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$p, [ null ].concat( args, ['temp']) ));\n };\n\n input$2.format.temp =\n input$2.format.kelvin =\n input$2.format.temperature = temperature2rgb_1;\n\n var unpack$5 = utils.unpack;\n var cbrt = Math.cbrt;\n var pow$8 = Math.pow;\n var sign$1 = Math.sign;\n\n var rgb2oklab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // OKLab color space implementation taken from\n // https://bottosson.github.io/posts/oklab/\n var ref = unpack$5(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)];\n var lr = ref$1[0];\n var lg = ref$1[1];\n var lb = ref$1[2];\n var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n };\n\n var rgb2oklab_1 = rgb2oklab$2;\n\n function rgb2lrgb(c) {\n var abs = Math.abs(c);\n if (abs < 0.04045) {\n return c / 12.92;\n }\n return (sign$1(c) || 1) * pow$8((abs + 0.055) / 1.055, 2.4);\n }\n\n var unpack$4 = utils.unpack;\n var pow$7 = Math.pow;\n var sign = Math.sign;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var oklab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$4(args, 'lab');\n var L = args[0];\n var a = args[1];\n var b = args[2];\n\n var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3);\n var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3);\n var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3);\n\n return [\n 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),\n 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),\n 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),\n args.length > 3 ? args[3] : 1\n ];\n };\n\n var oklab2rgb_1 = oklab2rgb$1;\n\n function lrgb2rgb(c) {\n var abs = Math.abs(c);\n if (abs > 0.0031308) {\n return (sign(c) || 1) * (1.055 * pow$7(abs, 1 / 2.4) - 0.055);\n }\n return c * 12.92;\n }\n\n var unpack$3 = utils.unpack;\n var type$8 = utils.type;\n var chroma$6 = chroma_1;\n var Color$o = Color_1;\n var input$1 = input$h;\n\n var rgb2oklab$1 = rgb2oklab_1;\n\n Color$o.prototype.oklab = function () {\n return rgb2oklab$1(this._rgb);\n };\n\n chroma$6.oklab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$o, [ null ].concat( args, ['oklab']) ));\n };\n\n input$1.format.oklab = oklab2rgb_1;\n\n input$1.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'oklab');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'oklab';\n }\n }\n });\n\n var unpack$2 = utils.unpack;\n var rgb2oklab = rgb2oklab_1;\n var lab2lch = lab2lch_1;\n\n var rgb2oklch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$2(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2oklab(r, g, b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch(l, a, b_);\n };\n\n var rgb2oklch_1 = rgb2oklch$1;\n\n var unpack$1 = utils.unpack;\n var lch2lab = lch2lab_1;\n var oklab2rgb = oklab2rgb_1;\n\n var oklch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$1(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab(l, c, h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = oklab2rgb(L, a, b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var oklch2rgb_1 = oklch2rgb;\n\n var unpack = utils.unpack;\n var type$7 = utils.type;\n var chroma$5 = chroma_1;\n var Color$n = Color_1;\n var input = input$h;\n\n var rgb2oklch = rgb2oklch_1;\n\n Color$n.prototype.oklch = function () {\n return rgb2oklch(this._rgb);\n };\n\n chroma$5.oklch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$n, [ null ].concat( args, ['oklch']) ));\n };\n\n input.format.oklch = oklch2rgb_1;\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack(args, 'oklch');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'oklch';\n }\n }\n });\n\n var Color$m = Color_1;\n var type$6 = utils.type;\n\n Color$m.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$6(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n var Color$l = Color_1;\n\n Color$l.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n var Color$k = Color_1;\n var LAB_CONSTANTS$1 = labConstants;\n\n Color$k.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= LAB_CONSTANTS$1.Kn * amount;\n \treturn new Color$k(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color$k.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color$k.prototype.darker = Color$k.prototype.darken;\n Color$k.prototype.brighter = Color$k.prototype.brighten;\n\n var Color$j = Color_1;\n\n Color$j.prototype.get = function (mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$i = Color_1;\n var type$5 = utils.type;\n var pow$6 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color$i.prototype.luminance = function(lum) {\n if (lum !== undefined && type$5(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color$i([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color$i([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color$i([0,0,0]), this) : test(this, new Color$i([255,255,255]))).rgb();\n return new Color$i(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$6((x+0.055)/1.055, 2.4);\n };\n\n var interpolator$1 = {};\n\n var Color$h = Color_1;\n var type$4 = utils.type;\n var interpolator = interpolator$1;\n\n var mix$1 = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$4(col1) !== 'object') { col1 = new Color$h(col1); }\n if (type$4(col2) !== 'object') { col2 = new Color$h(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n var Color$g = Color_1;\n var mix = mix$1;\n\n Color$g.prototype.mix =\n Color$g.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n var Color$f = Color_1;\n\n Color$f.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color$f([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n var Color$e = Color_1;\n var LAB_CONSTANTS = labConstants;\n\n Color$e.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += LAB_CONSTANTS.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color$e(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color$e.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var Color$d = Color_1;\n var type$3 = utils.type;\n\n Color$d.prototype.set = function (mc, value, mutate) {\n if ( mutate === void 0 ) mutate = false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) {\n if (type$3(value) == 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +value.substr(1);\n break;\n case '/':\n src[i] /= +value.substr(1);\n break;\n default:\n src[i] = +value;\n }\n } else if (type$3(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color$d(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$c = Color_1;\n\n var rgb = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color$c(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.rgb = rgb;\n\n var Color$b = Color_1;\n var sqrt$2 = Math.sqrt;\n var pow$5 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color$b(\n sqrt$2(pow$5(x1,2) * (1-f) + pow$5(x2,2) * f),\n sqrt$2(pow$5(y1,2) * (1-f) + pow$5(y2,2) * f),\n sqrt$2(pow$5(z1,2) * (1-f) + pow$5(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.lrgb = lrgb;\n\n var Color$a = Color_1;\n\n var lab = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color$a(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator$1.lab = lab;\n\n var Color$9 = Color_1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n } else if (m === 'oklch') {\n xyz0 = col1.oklch().reverse();\n xyz1 = col2.oklch().reverse();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h' || m === 'oklch') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1 - lbv0);\n return m === 'oklch' ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m);\n };\n\n var interpolate_hsx$5 = _hsx;\n\n var lch = function (col1, col2, f) {\n \treturn interpolate_hsx$5(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator$1.lch = lch;\n interpolator$1.hcl = lch;\n\n var Color$8 = Color_1;\n\n var num = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color$8(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator$1.num = num;\n\n var interpolate_hsx$4 = _hsx;\n\n var hcg = function (col1, col2, f) {\n \treturn interpolate_hsx$4(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator$1.hcg = hcg;\n\n var interpolate_hsx$3 = _hsx;\n\n var hsi = function (col1, col2, f) {\n \treturn interpolate_hsx$3(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator$1.hsi = hsi;\n\n var interpolate_hsx$2 = _hsx;\n\n var hsl = function (col1, col2, f) {\n \treturn interpolate_hsx$2(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator$1.hsl = hsl;\n\n var interpolate_hsx$1 = _hsx;\n\n var hsv = function (col1, col2, f) {\n \treturn interpolate_hsx$1(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator$1.hsv = hsv;\n\n var Color$7 = Color_1;\n\n var oklab = function (col1, col2, f) {\n var xyz0 = col1.oklab();\n var xyz1 = col2.oklab();\n return new Color$7(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'oklab'\n );\n };\n\n // register interpolator\n interpolator$1.oklab = oklab;\n\n var interpolate_hsx = _hsx;\n\n var oklch = function (col1, col2, f) {\n return interpolate_hsx(col1, col2, f, 'oklch');\n };\n\n // register interpolator\n interpolator$1.oklch = oklch;\n\n var Color$6 = Color_1;\n var clip_rgb$1 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$1 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$2 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode, weights) {\n if ( mode === void 0 ) mode='lrgb';\n if ( weights === void 0 ) weights=null;\n\n var l = colors.length;\n if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); }\n // normalize weights\n var k = l / weights.reduce(function(a, b) { return a + b; });\n weights.forEach(function (w,i) { weights[i] *= k; });\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color$6(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors, weights)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color$6(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors, weights) {\n var l = colors.length;\n var xyz = [0,0,0,0];\n for (var i=0; i < colors.length; i++) {\n var col = colors[i];\n var f = weights[i] / l;\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$1(xyz[0]);\n xyz[1] = sqrt$1(xyz[1]);\n xyz[2] = sqrt$1(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color$6(clip_rgb$1(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n var chroma$4 = chroma_1;\n var type$2 = utils.type;\n\n var pow$3 = Math.pow;\n\n var scale$2 = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma$4('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$2(colors) === 'string' && chroma$4.brewer &&\n chroma$4.brewer[colors.toLowerCase()]) {\n colors = chroma$4.brewer[colors.toLowerCase()];\n }\n if (type$2(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tMapLightness = function (t) { return t; };\n var tMapDomain = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n // domain map\n t = tMapDomain(t);\n\n if (!bypassMap) {\n t = tMapLightness(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$3(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$2(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma$4.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$2(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma$4(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$2(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma$4.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma$4.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c 2) {\n // set domain map\n var tOut = domain.map(function (d,i) { return i/(domain.length-1); });\n var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); });\n if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) {\n tMapDomain = function (t) {\n if (t <= 0 || t >= 1) { return t; }\n var i = 0;\n while (t >= tBreaks[i+1]) { i++; }\n var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]);\n var out = tOut[i] + f * (tOut[i+1] - tOut[i]);\n return out;\n };\n }\n\n }\n }\n _domain = [_min, _max];\n return f;\n };\n\n f.mode = function(_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n\n f.range = function(colors, _pos) {\n setColors(colors);\n return f;\n };\n\n f.out = function(_o) {\n _out = _o;\n return f;\n };\n\n f.spread = function(val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n\n f.correctLightness = function(v) {\n if (v == null) { v = true; }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tMapLightness = function(t) {\n var L0 = getColor(0, true).lab()[0];\n var L1 = getColor(1, true).lab()[0];\n var pol = L0 > L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tMapLightness = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$2(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma$4[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma$4(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n var Color$5 = Color_1;\n\n var scale$1 = scale$2;\n\n // nth row of the pascal triangle\n var binom_row = function(n) {\n var row = [1, 1];\n for (var i = 1; i < n; i++) {\n var newrow = [1];\n for (var j = 1; j <= row.length; j++) {\n newrow[j] = (row[j] || 0) + row[j - 1];\n }\n row = newrow;\n }\n return row;\n };\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color$5(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length >= 5) {\n // general case (degree n bezier)\n var labs, row, n;\n labs = colors.map(function (c) { return c.lab(); });\n n = colors.length - 1;\n row = binom_row(n);\n I = function (t) {\n var u = 1 - t;\n var lab = ([0, 1, 2].map(function (i) { return labs.reduce(function (sum, el, j) { return (sum + row[j] * Math.pow( u, (n - j) ) * Math.pow( t, j ) * el[i]); }, 0); }));\n return new Color$5(lab, 'lab');\n };\n } else {\n throw new RangeError(\"No point in running bezier with only one color.\")\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale$1(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n var chroma$3 = chroma_1;\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma$3(top).rgb();\n var c1 = chroma$3(bottom).rgb();\n return chroma$3.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$1 = utils.type;\n var clip_rgb = utils.clip_rgb;\n var TWOPI = utils.TWOPI;\n var pow$2 = Math.pow;\n var sin$1 = Math.sin;\n var cos$1 = Math.cos;\n var chroma$2 = chroma_1;\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$1(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI * (((start+120)/360) + (rotations * fract));\n var l = pow$2(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$1(a);\n var sin_a = sin$1(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma$2(clip_rgb([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$1(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$1(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma$2.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var Color$4 = Color_1;\n var digits = '0123456789abcdef';\n\n var floor$1 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$1(random() * 16));\n }\n return new Color$4(code, 'hex');\n };\n\n var type = type$p;\n var log = Math.log;\n var pow$1 = Math.pow;\n var floor = Math.floor;\n var abs$1 = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log(min);\n var max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var Color$2 = Color_1;\n var sqrt = Math.sqrt;\n var pow = Math.pow;\n var min = Math.min;\n var max = Math.max;\n var atan2 = Math.atan2;\n var abs = Math.abs;\n var cos = Math.cos;\n var sin = Math.sin;\n var exp = Math.exp;\n var PI = Math.PI;\n\n var deltaE = function(a, b, Kl, Kc, Kh) {\n if ( Kl === void 0 ) Kl=1;\n if ( Kc === void 0 ) Kc=1;\n if ( Kh === void 0 ) Kh=1;\n\n // Delta E (CIE 2000)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n var rad2deg = function(rad) {\n return 360 * rad / (2 * PI);\n };\n var deg2rad = function(deg) {\n return (2 * PI * deg) / 360;\n };\n a = new Color$2(a);\n b = new Color$2(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var avgL = (L1 + L2)/2;\n var C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n var C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n var avgC = (C1 + C2)/2;\n var G = 0.5*(1-sqrt(pow(avgC, 7)/(pow(avgC, 7) + pow(25, 7))));\n var a1p = a1*(1+G);\n var a2p = a2*(1+G);\n var C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n var C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n var avgCp = (C1p + C2p)/2;\n var arctan1 = rad2deg(atan2(b1, a1p));\n var arctan2 = rad2deg(atan2(b2, a2p));\n var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360)/2 : (h1p + h2p)/2;\n var T = 1 - 0.17*cos(deg2rad(avgHp - 30)) + 0.24*cos(deg2rad(2*avgHp)) + 0.32*cos(deg2rad(3*avgHp + 6)) - 0.2*cos(deg2rad(4*avgHp - 63));\n var deltaHp = h2p - h1p;\n deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360;\n deltaHp = 2*sqrt(C1p*C2p)*sin(deg2rad(deltaHp)/2);\n var deltaL = L2 - L1;\n var deltaCp = C2p - C1p; \n var sl = 1 + (0.015*pow(avgL - 50, 2))/sqrt(20 + pow(avgL - 50, 2));\n var sc = 1 + 0.045*avgCp;\n var sh = 1 + 0.015*avgCp*T;\n var deltaTheta = 30*exp(-pow((avgHp - 275)/25, 2));\n var Rc = 2*sqrt(pow(avgCp, 7)/(pow(avgCp, 7) + pow(25, 7)));\n var Rt = -Rc*sin(2*deg2rad(deltaTheta));\n var result = sqrt(pow(deltaL/(Kl*sl), 2) + pow(deltaCp/(Kc*sc), 2) + pow(deltaHp/(Kh*sh), 2) + Rt*(deltaCp/(Kc*sc))*(deltaHp/(Kh*sh)));\n return max(0, min(100, result));\n };\n\n var Color$1 = Color_1;\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color$1(a);\n b = new Color$1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var Color = Color_1;\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n var chroma$1 = chroma_1;\n\n var scale = scale$2;\n\n var scales = {\n \tcool: function cool() { return scale([chroma$1.hsl(180,1,.9), chroma$1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) {\n var key = list[i];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n var chroma = chroma_1;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma.average = average;\n chroma.bezier = bezier_1;\n chroma.blend = blend_1;\n chroma.cubehelix = cubehelix;\n chroma.mix = chroma.interpolate = mix$1;\n chroma.random = random_1;\n chroma.scale = scale$2;\n\n // other utility methods\n chroma.analyze = analyze_1.analyze;\n chroma.contrast = contrast;\n chroma.deltaE = deltaE;\n chroma.distance = distance;\n chroma.limits = analyze_1.limits;\n chroma.valid = valid;\n\n // scale\n chroma.scales = scales;\n\n // colors\n chroma.colors = w3cx11_1;\n chroma.brewer = colorbrewer_1;\n\n var chroma_js = chroma;\n\n return chroma_js;\n\n}));\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const colorString = require('color-string');\nconst convert = require('color-convert');\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...args) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (args.length > 0) {\n\t\t\treturn new Color(args, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...args) {\n\t\tlet color = args[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(args, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nmodule.exports = Color;\n","import { Hct, argbFromHex, hexFromArgb } from '@material/material-color-utilities'\nimport Color from 'color'\nimport chroma from 'chroma-js'\n\nexport const hexToHct: any = (hex: string): number[] => {\n const hclColor: Hct = Hct.fromInt(argbFromHex(hex))\n return [hclColor.hue, hclColor.chroma, hclColor.tone]\n}\n\nexport function hctToHex(hct: number[]): string {\n const hctColor: Hct = Hct.from(hct[0], hct[1], hct[2])\n return hexFromArgb(hctColor.toInt())\n}\n\nexport function toHctString(hex: string, alpha?: boolean): string {\n if (alpha) {\n const [r, g, b, a] = chroma(hex).rgba()\n const newHex = chroma.rgb(r, g, b).hex()\n const hctColor = hexToHct(newHex)\n return `hcta(${hctColor.map((c: number) => Math.round(c)).join(',')},${a})`\n }\n else {\n const hctColor = hexToHct(hex)\n return `hct(${hctColor.map((c: number) => Math.round(c)).join(',')})`\n }\n}\n\nexport function colorTypeFormat(color: string, colorType: 'hex' | 'hct' | 'rgb' | 'hsv'): string {\n let text = color\n const alpha = chroma(color).alpha() !== 1\n const c = Color(color)\n switch (colorType) {\n case 'hex': {\n text = alpha ? c.hexa().toString() : c.hex().toString()\n break\n }\n case 'hct': {\n text = toHctString(color, alpha)\n break\n }\n case 'rgb': {\n text = c.rgb().string()\n break\n }\n case 'hsv': {\n text = c.hsv().string()\n break\n }\n default: {\n break\n }\n }\n return text\n}\n","import { Hct, argbFromHex } from '@material/material-color-utilities'\nimport chroma from 'chroma-js'\nimport BezierEasing from 'bezier-easing'\nimport type { hueType } from '../types'\nimport { hctToHex } from './format'\n\nexport interface adjustNeutralType {\n hRotate: number // 色相偏移(旋转)\n cTarget: number // 色度\n tStart: number // 目标明度初始值\n tTarget: number // 目标明度\n tEasing: number[] // 明度的缓动函数\n i?: number // 当前步数\n steps?: number // 总步数\n}\n\n// TODO: 后续做开启偏色\nexport function adjustNeutralHex({\n hRotate,\n cTarget,\n tStart,\n tTarget,\n tEasing,\n i,\n steps,\n}: adjustNeutralType) {\n if (!i || !steps)\n return hctToHex([hRotate, cTarget, tStart])\n\n const percent = i / steps\n\n // @ts-expect-erroradjustNeutralType\n const tBE = BezierEasing(...tEasing)\n\n const newT = tStart + (tTarget - tStart) * tBE(percent)\n // 灰色 hRotate 应该不变\n return hctToHex([hRotate, cTarget, newT])\n}\n\nexport function adjustHex(baseColor: string, {\n hRotate, // 色相偏移(旋转)\n hEasing, // 色相偏移的缓动函数\n cTarget, // 色度\n cEasing, // 色度的缓动函数\n tTarget, // 目标明度\n tEasing, // 明度的缓动函数\n}: {\n hRotate: number\n hEasing: number[]\n cTarget: number\n cEasing: number[]\n tTarget: number\n tEasing: number[]\n}, hue: hueType, i: number, steps: number): string {\n // const color = Hct.fromInt(baseColor);\n // const colora = Hct.fromInt(argbFromHex(baseColor));\n const hclColor = Hct.fromInt(argbFromHex(baseColor))\n const [h, c, t] = [hclColor.hue, hclColor.chroma, hclColor.tone]\n\n const percent = i / steps\n\n // @ts-expect-error\n const hBE = BezierEasing(...hEasing)\n // @ts-expect-error\n const cBE = BezierEasing(...cEasing)\n // @ts-expect-error\n const tBE = BezierEasing(...tEasing)\n\n const newH = h + calcHueRotate(h, hRotate * hBE(percent), hue)\n const newC = c + (cTarget - c) * cBE(percent)\n const newT = t + (tTarget - t) * tBE(percent)\n\n return hctToHex([newH, newC, newT])\n}\n\nexport function calcHueRotate(h: number, hRotate: number, hue: hueType) {\n const { segment, multiply } = hue\n const calcHueVaule = genCalcHueVaule(segment[0], segment[1], hRotate, multiply)\n return calcHueVaule(h)\n}\n\nexport function genCalcHueVaule(Xa: number, Xb: number, max: number, multiply: number) {\n const toRad = Math.PI / 180\n const a = 360 / (Xb - Xa)\n const b = (-1 * a * toRad * (3 * Xa + Xb)) / 4\n\n const min = max * multiply\n const y = (max + min) / 2\n const scale = (max - min) / 2\n\n return (v: number) => {\n const rad = v * toRad\n return scale * Math.sin(a * rad + b) + y\n }\n}\n\nfunction isStableColor(color: number): boolean {\n return color >= 0 && color <= 255\n}\nfunction arrayToRgb(rgbArray: number[]): string {\n return rgbArray.length < 4 ? `rgb(${rgbArray.join(',')})` : `rgba(${rgbArray.join(',')})`\n}\n\nexport function getAlphaColor(frontColor: string, backgroundColor: string): string {\n const [fR, fG, fB] = chroma(frontColor).rgb()\n const [bR, bG, bB] = chroma(backgroundColor).rgb()\n\n for (let fA = 0.01; fA <= 1; fA += 0.01) {\n const r = Math.round((fR - bR * (1 - fA)) / fA)\n const g = Math.round((fG - bG * (1 - fA)) / fA)\n const b = Math.round((fB - bB * (1 - fA)) / fA)\n if (isStableColor(r) && isStableColor(g) && isStableColor(b))\n return chroma(arrayToRgb([r, g, b, Math.round(fA * 100) / 100])).hex()\n }\n return chroma(arrayToRgb([fR, fG, fB, 1])).hex()\n}\n","import type { directType, hueType } from '../types'\nimport { adjustHex, adjustNeutralHex } from './adjust'\nimport type { adjustNeutralType } from './adjust'\n\nexport function getLadderColors(baseColor: string, {\n up,\n down,\n upSteps,\n downSteps,\n hue,\n}: {\n up: directType\n down: directType\n upSteps: number\n downSteps: number\n hue: hueType\n}) {\n const shades: string[] = []\n // 向上梯度\n for (let i = upSteps; i >= 1; i--)\n shades.push(adjustHex(baseColor, up, hue, i, upSteps))\n\n shades.push(baseColor)\n\n // 向下梯度\n for (let i = 1; i <= downSteps; i++)\n shades.push(adjustHex(baseColor, down, hue, i, downSteps))\n\n return shades\n}\n\nexport function getNeutualColors({\n up,\n down,\n upSteps,\n downSteps,\n}: {\n up: adjustNeutralType\n down: adjustNeutralType\n upSteps: number\n downSteps: number\n}) {\n const shades: string[] = []\n // 向上梯度\n for (let i = upSteps; i >= 1; i--)\n shades.push(adjustNeutralHex({ ...up, i, steps: upSteps }))\n\n shades.push(adjustNeutralHex(up))\n\n // 向下梯度\n for (let i = 1; i <= downSteps; i++)\n shades.push(adjustNeutralHex({ ...down, i, steps: downSteps }))\n\n return shades\n}\n","export function changeThemeByCssvars(cssVars: Record) {\r\n for (const key in cssVars)\r\n document.documentElement.style.setProperty(key, cssVars[key])\r\n}\r\n","export const ELEMENT_PLUS_CONSTANTS = {\n data: {\n colorList: [\n {\n \"color\": \"#409eff\",\n \"darkColor\": \"#589ffe\",\n \"id\": \"Primary\",\n \"title\": \"Brand\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#e6202a\",\n \"darkColor\": \"#ff5d55\",\n \"id\": \"Red\",\n \"title\": \"Red\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#ff832b\",\n \"darkColor\": \"#ffa366\",\n \"id\": \"65c1\",\n \"title\": \"Orange\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#ffcc00\",\n \"darkColor\": \"#ffd668\",\n \"id\": \"Yellow\",\n \"title\": \"Yellow\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#1db84c\",\n \"darkColor\": \"#65ca67\",\n \"id\": \"Green\",\n \"title\": \"Green\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#00b3af\",\n \"darkColor\": \"#56c6c4\",\n \"id\": \"Sky\",\n \"title\": \"Teal\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#1fa5ff\",\n \"darkColor\": \"#67baff\",\n \"id\": \"f38c\",\n \"title\": \"Cyan\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#176cff\",\n \"darkColor\": \"#5792ff\",\n \"id\": \"116bd\",\n \"title\": \"Blue\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#8a3ffc\",\n \"darkColor\": \"#a275ff\",\n \"id\": \"Purple\",\n \"title\": \"Purple\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#ea3c8e\",\n \"darkColor\": \"#ff6ba3\",\n \"id\": \"17d81\",\n \"title\": \"Magenta\",\n \"type\": \"normal\"\n }\n ],\n generate: {\n dark: {\n down: {\n cTarget: 20,\n hRotate: -20,\n tTarget: 96,\n tEasing: [\n 0,\n 0,\n 0.5,\n 0.7,\n ],\n cEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n hEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n },\n up: {\n cTarget: 50,\n hRotate: 20,\n tTarget: 10,\n tEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n cEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n hEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n },\n neutral: {\n cTarget: 1,\n hRotate: 1,\n tTarget: 43,\n down: {\n tTarget: 98,\n tEasing: [\n 0,\n 0,\n 0.53,\n 0.72,\n ],\n },\n up: {\n tTarget: 6,\n tEasing: [\n 0.29,\n 0,\n 0.65,\n 1,\n ],\n },\n },\n },\n hue: {\n palettes: {\n multiply: -0.5,\n segment: [\n 50,\n 200,\n ],\n },\n neutral: {\n multiply: 1,\n segment: [\n 0,\n 360,\n ],\n\n },\n },\n light: {\n down: {\n cTarget: 50,\n hRotate: 20,\n tTarget: 10,\n tEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n cEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n hEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n },\n up: {\n cTarget: 20,\n hRotate: -20,\n tTarget: 96,\n tEasing: [\n 0,\n 0,\n 0.5,\n 0.7,\n ],\n cEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n hEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n },\n neutral: {\n cTarget: 2,\n hRotate: 209,\n tTarget: 73,\n down: {\n tTarget: 10,\n tEasing: [\n 0,\n 0,\n 0.6,\n 0.29,\n ],\n },\n up: {\n tTarget: 97,\n tEasing: [\n 0.15,\n 0.05,\n 0.1,\n 0.82,\n ],\n },\n },\n },\n step: {\n down: 4,\n up: 5,\n },\n },\n stepFliter: [],\n system: {\n edit: {\n isolateEdit: false,\n },\n pattern: {\n displayFliterStep: false,\n isFliterStep: false,\n isolateDark: false,\n },\n },\n },\n name: 'element-plus',\n}\n","import { ELEMENT_PLUS_CONSTANTS } from './constants'\nimport { colorTypeFormat, getAlphaColor, getLadderColors, getNeutualColors } from './utils'\nimport type { generateType } from './types'\n\n// 获取灰度梯度\nexport function getNeutral(generate: generateType | null = null) {\n const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate\n const darkShades = getShades(_generate, true)\n const lightShades = getShades(_generate)\n\n return {\n light: lightShades,\n dark: darkShades,\n }\n}\n\n// 获取灰度透明梯度\nexport function getNeutralAlpha(generate: generateType | null = null, format: 'rgb' | 'hex' | 'hct' | 'hsv' = 'rgb') {\n const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate\n const darkShades = getShades(_generate, true)\n const lightShades = getShades(_generate)\n\n return {\n light: lightShades.map(color => colorTypeFormat(getAlphaColor(color, '#fff'), format)),\n dark: darkShades.map(color => colorTypeFormat(getAlphaColor(color, '#000'), format)),\n }\n}\n\n// 获取颜色梯度\nexport function getPalette({\n light,\n dark,\n generate,\n format,\n}: {\n light: string\n dark: string\n generate?: generateType\n format?: 'rgb' | 'hex' | 'hct' | 'hsv'\n}) {\n const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate\n\n const { up: upSteps, down: downSteps } = _generate.step\n const { up, down } = _generate.light\n const { up: upDark, down: downDark } = _generate.dark\n const hue = _generate.hue.palettes\n const darks = getLadderColors(dark, {\n up: upDark,\n down: downDark,\n upSteps,\n downSteps,\n hue,\n })\n\n return {\n light: getLadderColors(light, {\n up,\n down,\n upSteps,\n downSteps,\n hue,\n }),\n dark: darks.map(color => colorTypeFormat(getAlphaColor(color, '#000'), format)),\n }\n}\n\n// 根据配置获取灰度数据\nfunction getShades(generate: generateType, isDark = false) {\n const { up: upSteps, down: downSteps } = generate.step\n\n const {\n cTarget,\n hRotate,\n up,\n down,\n tTarget: tStart,\n } = generate[isDark ? 'dark' : 'light'].neutral\n\n return getNeutualColors({\n up: {\n ...up,\n cTarget,\n hRotate,\n tStart,\n },\n down: {\n ...down,\n cTarget,\n hRotate,\n tStart,\n },\n upSteps,\n downSteps,\n })\n}\n"],"names":["signum","num","lerp","start","stop","amount","clampInt","min","max","input","clampDouble","sanitizeDegreesDouble","degrees","matrixMultiply","row","matrix","b","c","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","r","delinearized","g","redFromArgb","argb","greenFromArgb","blueFromArgb","argbFromXyz","x","y","z","linearR","linearG","linearB","xyzFromArgb","linearized","mathUtils.matrixMultiply","argbFromLstar","lstar","yFromLstar","component","lstarFromArgb","labF","labInvf","lstarFromY","rgbComponent","normalized","mathUtils.clampInt","whitePointD65","t","e","kappa","ft","ft3","ViewingConditions","whitePoint","utils.whitePointD65","adaptingLuminance","utils.yFromLstar","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","f","math.lerp","d","nc","rgbD","k","k4","k4F","fl","n","nbb","ncb","rgbAFactors","rgbA","aw","fLRoot","Cam16","hue","chroma","j","q","m","s","jstar","astar","bstar","other","dJ","dA","dB","dEPrime","viewingConditions","redL","utils.linearized","greenL","blueL","rC","gC","bC","rD","gD","bD","rAF","gAF","bAF","rA","math.signum","gA","bA","a","u","p2","atanDegrees","hueRadians","ac","huePrime","eHue","alpha","mstar","h","hRad","p1","hSin","hCos","gamma","rCBase","gCBase","bCBase","rF","gF","bF","utils.argbFromXyz","J","Q","C","M","HctSolver","angle","af","mathUtils.signum","scaledDiscount","deltaAB","deltaAC","source","mid","target","coordinate","axis","kR","kG","kB","coordA","coordB","targetHue","left","right","leftHue","rightHue","initialized","uncut","midHue","segment","lPlane","rPlane","i","mPlane","midPlaneCoordinate","adapted","adaptedAbs","base","tInnerCoeff","iterationRound","jNormalized","rCScaled","gCScaled","bCScaled","fnj","colorUtils.argbFromLinrgb","hueDegrees","colorUtils.argbFromLstar","mathUtils.sanitizeDegreesDouble","colorUtils.yFromLstar","exactAnswer","Hct","tone","newHue","newChroma","newTone","cam","utils.lstarFromArgb","vc","viewedInVc","recastInVc","utils.lstarFromY","Contrast","toneA","toneB","math.clampDouble","y1","y2","lighter","darker","ratio","darkY","lightY","realContrast","delta","returnValue","lighterSafe","darkerSafe","DislikeAnalyzer","hct","huePasses","chromaPasses","tonePasses","DynamicColor","args","name","palette","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","scheme","cachedAnswer","answer","decreasingContrast","roleA","roleB","polarity","stayTogether","bgTone","aIsNearer","nearer","farther","amNearer","expansionDir","nContrast","fContrast","nInitialTone","nTone","fInitialTone","fTone","desiredRatio","bg1","bg2","bgTone1","bgTone2","upper","lower","lightOption","darkOption","availables","lighterTone","darkerTone","lighterRatio","darkerRatio","negligibleDifference","Variant","ContrastCurve","low","normal","medium","high","contrastLevel","ToneDeltaPair","isFidelity","isMonochrome","findDesiredChromaByTone","byDecreasingTone","closestToChroma","chromaPeak","potentialSolution","potentialDelta","currentDelta","viewingConditionsForAlbers","performAlbers","prealbers","albersd","MaterialDynamicColors","initialTone","albersTone","proposedHct","hexFromArgb","colorUtils.redFromArgb","colorUtils.greenFromArgb","colorUtils.blueFromArgb","outParts","part","argbFromHex","hex","isThree","isSix","isEight","parseIntHex","value","global","factory","module","this","limit$2","limit$1","clip_rgb$3","rgb","classToType","i$1","list$1","type$p","obj","type$o","unpack$B","keyOrder","type$n","last$4","l","PI$2","utils","input$h","last$3","clip_rgb$2","type$m","_input","Color$D","len","me","mode","autodetect","list","chk","Color_1","chroma$k","chroma_1","unpack$A","max$2","rgb2cmyk$1","ref","rgb2cmyk_1","unpack$z","cmyk2rgb","cmyk2rgb_1","chroma$j","Color$C","input$g","unpack$y","type$l","rgb2cmyk","unpack$x","last$2","rnd","hsl2css$1","hsla","hsl2css_1","unpack$w","rgb2hsl$3","rgb2hsl_1","unpack$v","last$1","hsl2css","rgb2hsl$2","round$6","rgb2css$1","rgba","rgb2css_1","unpack$u","round$5","hsl2rgb$1","assign","t3","t2","t1","h_","hsl2rgb_1","hsl2rgb","input$f","RE_RGB","RE_RGBA","RE_RGB_PCT","RE_RGBA_PCT","RE_HSL","RE_HSLA","round$4","css2rgb$1","css","rgb$1","rgb$2","i$2","rgb$3","i$3","hsl","rgb$4","hsl$1","rgb$5","css2rgb_1","chroma$i","Color$B","input$e","type$k","rgb2css","css2rgb","rest","Color$A","chroma$h","input$d","unpack$t","unpack$s","rgb2hcg$1","_g","rgb2hcg_1","unpack$r","floor$3","hcg2rgb","assign$1","assign$2","assign$3","assign$4","assign$5","_c","p","v","hcg2rgb_1","unpack$q","type$j","chroma$g","Color$z","input$c","rgb2hcg","unpack$p","last","round$3","rgb2hex$2","str","hxa","rgb2hex_1","RE_HEX","RE_HEXA","hex2rgb$1","u$1","r$1","g$1","b$1","hex2rgb_1","chroma$f","Color$y","type$i","input$b","rgb2hex$1","unpack$o","TWOPI$2","min$2","sqrt$4","acos","rgb2hsi$1","min_","rgb2hsi_1","unpack$n","limit","TWOPI$1","PITHIRD","cos$4","hsi2rgb","hsi2rgb_1","unpack$m","type$h","chroma$e","Color$x","input$a","rgb2hsi","unpack$l","type$g","chroma$d","Color$w","input$9","rgb2hsl$1","unpack$k","min$1","max$1","rgb2hsl","max_","rgb2hsv$1","unpack$j","floor$2","hsv2rgb","hsv2rgb_1","unpack$i","type$f","chroma$c","Color$v","input$8","rgb2hsv","labConstants","LAB_CONSTANTS$3","unpack$h","pow$a","rgb2lab$2","ref$1","rgb2xyz","rgb_xyz","xyz_lab","rgb2lab_1","LAB_CONSTANTS$2","unpack$g","pow$9","lab2rgb$1","b_","lab_xyz","xyz_rgb","lab2rgb_1","unpack$f","type$e","chroma$b","Color$u","input$7","rgb2lab$1","unpack$e","RAD2DEG","sqrt$3","atan2$2","round$2","lab2lch$2","lab2lch_1","unpack$d","rgb2lab","lab2lch$1","rgb2lch$1","rgb2lch_1","unpack$c","DEG2RAD","sin$3","cos$3","lch2lab$2","lch2lab_1","unpack$b","lch2lab$1","lab2rgb","lch2rgb$1","L","lch2rgb_1","unpack$a","lch2rgb","hcl2rgb","hcl","hcl2rgb_1","unpack$9","type$d","chroma$a","Color$t","input$6","rgb2lch","w3cx11$1","w3cx11_1","Color$s","input$5","type$c","w3cx11","hex2rgb","rgb2hex","unpack$8","rgb2num$1","rgb2num_1","type$b","num2rgb","num2rgb_1","chroma$9","Color$r","input$4","type$a","rgb2num","chroma$8","Color$q","input$3","unpack$7","type$9","round$1","log$1","temperature2rgb$1","kelvin","temp","temperature2rgb_1","temperature2rgb","unpack$6","round","rgb2temperature$1","minTemp","maxTemp","eps","rgb2temperature_1","chroma$7","Color$p","input$2","rgb2temperature","unpack$5","cbrt","pow$8","sign$1","rgb2oklab$2","rgb2lrgb","lr","lg","lb","rgb2oklab_1","abs","unpack$4","pow$7","sign","oklab2rgb$1","lrgb2rgb","oklab2rgb_1","unpack$3","type$8","chroma$6","Color$o","input$1","rgb2oklab$1","unpack$2","rgb2oklab","lab2lch","rgb2oklch$1","rgb2oklch_1","unpack$1","lch2lab","oklab2rgb","oklch2rgb","oklch2rgb_1","unpack","type$7","chroma$5","Color$n","rgb2oklch","Color$m","type$6","mutate","Color$l","Color$k","LAB_CONSTANTS$1","lab","Color$j","mc","channel","src","Color$i","type$5","pow$6","EPS","MAX_ITER","lum","cur_lum","max_iter","test","lm","rgb2luminance","luminance_x","interpolator$1","Color$h","type$4","interpolator","mix$1","col1","col2","Color$g","mix","Color$f","Color$e","LAB_CONSTANTS","lch","Color$d","type$3","out","Color$c","xyz0","xyz1","Color$b","sqrt$2","pow$5","lrgb","x1","z1","x2","z2","Color$a","Color$9","_hsx","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","lbv","dh","interpolate_hsx$5","Color$8","c1","c2","interpolate_hsx$4","hcg","interpolate_hsx$3","hsi","interpolate_hsx$2","interpolate_hsx$1","hsv","Color$7","oklab","interpolate_hsx","oklch","Color$6","clip_rgb$1","pow$4","sqrt$1","PI$1","cos$2","sin$2","atan2$1","average","colors","weights","w","_average_lrgb","first","cnt","dx","dy","A","ci","xyz2","A$1","col","chroma$4","type$2","pow$3","scale$2","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_colors","_out","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","c$1","resetCache","getClass","tMapLightness","tMapDomain","getColor","val","bypassMap","classes","domain","tOut","tBreaks","_m","_o","L0","L1","pol","L_actual","L_ideal","L_diff","t0","numColors","result","dm","dd","__range__","samples","end","asc","inclusive","range","ascending","Color$5","scale$1","binom_row","newrow","bezier","I","lab0","lab1","lab2","lab3","labs","sum","el","bezier_1","chroma$3","blend","bottom","top","blend_f","c0","each","multiply","darken","lighten","screen","overlay","burn","dodge","blend_1","type$1","clip_rgb","TWOPI","pow$2","sin$1","cos$1","chroma$2","cubehelix","rotations","lightness","dl","fract","amp","cos_a","sin_a","Color$4","digits","floor$1","random","random_1","code","type","log","pow$1","floor","abs$1","analyze","data","key","limits","values","min_log","max_log","pb","pr","cluster","assignments","clusterSizes","repeat","nb_iters","centroids","i$4","mindist","best","j$1","dist","newCentroids","j$2","i$5","j$3","j$4","kClusters","j$5","i$6","tmpKMeansBreaks","j$6","i$7","analyze_1","Color$3","contrast","l1","l2","Color$2","sqrt","pow","atan2","cos","sin","exp","PI","deltaE","Kl","Kc","Kh","rad2deg","rad","deg2rad","deg","a1","b1","L2","a2","b2","avgL","C1","C2","avgC","G","a1p","a2p","C1p","C2p","avgCp","arctan1","arctan2","h1p","h2p","avgHp","T","deltaHp","deltaL","deltaCp","sl","sc","sh","deltaTheta","Rc","Rt","Color$1","distance","sum_sq","Color","valid","chroma$1","scale","scales","colorbrewer","colorbrewer_1","chroma_js","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","B","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","mY1","mY2","sampleValues","getTForX","intervalStart","currentSample","lastSample","guessForT","initialSlope","colorName","isArrayish","require$$0","concat","slice","swizzle","simpleSwizzleModule","results","arg","fn","colorNames","require$$1","hasOwnProperty","reverseNames","cs","colorStringModule","string","prefix","model","abbr","per","keyword","match","hexAlpha","i2","clamp","hwb","hexDouble","hwba","cssKeywords","reverseKeywords","convert","conversions","channels","labels","rdif","gdif","bdif","diff","diffc","comparativeDistance","reversed","currentClosestDistance","currentClosestKeyword","smin","lmin","sv","hi","vmin","wh","bl","cmyk","hr","saturation","ansi","color","mult","rem","colorString","char","integer","grayscale","pure","mg","apple","gray","buildGraph","graph","models","deriveBFS","fromModel","queue","current","adjacents","adjacent","node","link","from","to","wrapConversion","toModel","path","cur","route","conversion","wrapRaw","wrappedFn","arg0","wrapRounded","routes","colorConvert","skippedModels","hashedModelKeys","limiters","object","newArray","zeroArray","keys","hashedKeys","places","self","roundToPlace","getset","maxfn","rgbArray","alphaHex","element","chan","color2","lum1","lum2","contrastRatio","mixinColor","weight","color1","w1","w2","assertArray","roundTo","number","modifier","array","length","hexToHct","hclColor","hctToHex","hctColor","toHctString","newHex","colorTypeFormat","colorType","text","adjustNeutralHex","hRotate","cTarget","tStart","tTarget","tEasing","steps","percent","tBE","BezierEasing","newT","adjustHex","baseColor","hEasing","cEasing","hBE","cBE","newH","calcHueRotate","newC","genCalcHueVaule","Xa","Xb","toRad","isStableColor","arrayToRgb","getAlphaColor","frontColor","backgroundColor","fR","fG","fB","bR","bG","bB","fA","getLadderColors","up","down","upSteps","downSteps","shades","getNeutualColors","changeThemeByCssvars","cssVars","ELEMENT_PLUS_CONSTANTS","getNeutral","generate","_generate","darkShades","getShades","getNeutralAlpha","format","getPalette","light","dark","upDark","downDark","darks","isDark"],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBO,SAASA,GAAOC,GAAK;AACxB,SAAIA,IAAM,IACC,KAEFA,MAAQ,IACN,IAGA;AAEf;AAMO,SAASC,GAAKC,GAAOC,GAAMC,GAAQ;AACtC,UAAQ,IAAMA,KAAUF,IAAQE,IAASD;AAC7C;AAOO,SAASE,GAASC,GAAKC,GAAKC,GAAO;AACtC,SAAIA,IAAQF,IACDA,IAEFE,IAAQD,IACNA,IAEJC;AACX;AAOO,SAASC,GAAYH,GAAKC,GAAKC,GAAO;AACzC,SAAIA,IAAQF,IACDA,IAEFE,IAAQD,IACNA,IAEJC;AACX;AAoBO,SAASE,GAAsBC,GAAS;AAC3C,SAAAA,IAAUA,IAAU,KAChBA,IAAU,MACVA,IAAUA,IAAU,MAEjBA;AACX;AA4BO,SAASC,GAAeC,GAAKC,GAAQ;AACxC,QAAM,IAAID,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC,IAAID,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC,IAAID,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC,GACxEC,IAAIF,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC,IAAID,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC,IAAID,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC,GACxEE,IAAIH,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC,IAAID,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC,IAAID,EAAI,CAAC,IAAIC,EAAO,CAAC,EAAE,CAAC;AAC9E,SAAO,CAAC,GAAGC,GAAGC,CAAC;AACnB;ACpIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA,MAAMC,KAAc;AAAA,EAChB,CAAC,YAAY,YAAY,UAAU;AAAA,EACnC,CAAC,QAAQ,QAAQ,MAAM;AAAA,EACvB,CAAC,YAAY,YAAY,UAAU;AACvC,GACMC,KAAc;AAAA,EAChB;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AAAA,EACD;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AAAA,EACD;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AACL,GACMC,KAAkB,CAAC,QAAQ,KAAO,OAAO;AAIxC,SAASC,GAAYC,GAAKC,GAAOC,GAAM;AAC1C,UAAQ,OAAO,MAAMF,IAAM,QAAQ,MAAMC,IAAQ,QAAQ,IAAIC,IAAO,SAChE;AACR;AAIO,SAASC,GAAeC,GAAQ;AACnC,QAAMC,IAAIC,GAAaF,EAAO,CAAC,CAAC,GAC1BG,IAAID,GAAaF,EAAO,CAAC,CAAC,GAC1BV,IAAIY,GAAaF,EAAO,CAAC,CAAC;AAChC,SAAOL,GAAYM,GAAGE,GAAGb,CAAC;AAC9B;AAUO,SAASc,GAAYC,GAAM;AAC9B,SAAOA,KAAQ,KAAK;AACxB;AAIO,SAASC,GAAcD,GAAM;AAChC,SAAOA,KAAQ,IAAI;AACvB;AAIO,SAASE,GAAaF,GAAM;AAC/B,SAAOA,IAAO;AAClB;AAUO,SAASG,GAAYC,GAAGC,GAAGC,GAAG;AACjC,QAAMtB,IAASI,IACTmB,IAAUvB,EAAO,CAAC,EAAE,CAAC,IAAIoB,IAAIpB,EAAO,CAAC,EAAE,CAAC,IAAIqB,IAAIrB,EAAO,CAAC,EAAE,CAAC,IAAIsB,GAC/DE,IAAUxB,EAAO,CAAC,EAAE,CAAC,IAAIoB,IAAIpB,EAAO,CAAC,EAAE,CAAC,IAAIqB,IAAIrB,EAAO,CAAC,EAAE,CAAC,IAAIsB,GAC/DG,IAAUzB,EAAO,CAAC,EAAE,CAAC,IAAIoB,IAAIpB,EAAO,CAAC,EAAE,CAAC,IAAIqB,IAAIrB,EAAO,CAAC,EAAE,CAAC,IAAIsB,GAC/DV,IAAIC,GAAaU,CAAO,GACxBT,IAAID,GAAaW,CAAO,GACxBvB,IAAIY,GAAaY,CAAO;AAC9B,SAAOnB,GAAYM,GAAGE,GAAGb,CAAC;AAC9B;AAIO,SAASyB,GAAYV,GAAM;AAC9B,QAAMJ,IAAIe,GAAWZ,GAAYC,CAAI,CAAC,GAChCF,IAAIa,GAAWV,GAAcD,CAAI,CAAC,GAClCf,IAAI0B,GAAWT,GAAaF,CAAI,CAAC;AACvC,SAAOY,GAAyB,CAAChB,GAAGE,GAAGb,CAAC,GAAGE,EAAW;AAC1D;AAoDO,SAAS0B,GAAcC,GAAO;AACjC,QAAMT,IAAIU,GAAWD,CAAK,GACpBE,IAAYnB,GAAaQ,CAAC;AAChC,SAAOf,GAAY0B,GAAWA,GAAWA,CAAS;AACtD;AAOO,SAASC,GAAcjB,GAAM;AAChC,QAAMK,IAAIK,GAAYV,CAAI,EAAE,CAAC;AAC7B,SAAO,MAAQkB,GAAKb,IAAI,GAAK,IAAI;AACrC;AAYO,SAASU,GAAWD,GAAO;AAC9B,SAAO,MAAQK,IAASL,IAAQ,MAAQ,GAAK;AACjD;AAYO,SAASM,GAAWf,GAAG;AAC1B,SAAOa,GAAKb,IAAI,GAAK,IAAI,MAAQ;AACrC;AASO,SAASM,GAAWU,GAAc;AACrC,QAAMC,IAAaD,IAAe;AAClC,SAAIC,KAAc,cACPA,IAAa,QAAQ,MAGrB,KAAK,KAAKA,IAAa,SAAS,OAAO,GAAG,IAAI;AAE7D;AASO,SAASzB,GAAawB,GAAc;AACvC,QAAMC,IAAaD,IAAe;AAClC,MAAIxB,IAAe;AACnB,SAAIyB,KAAc,WACdzB,IAAeyB,IAAa,QAG5BzB,IAAe,QAAQ,KAAK,IAAIyB,GAAY,IAAM,GAAG,IAAI,OAEtDC,GAAmB,GAAG,KAAK,KAAK,MAAM1B,IAAe,GAAK,CAAC;AACtE;AAMO,SAAS2B,KAAgB;AAC5B,SAAOnC;AACX;AAkCA,SAAS6B,GAAKO,GAAG;AACb,QAAMC,IAAI,sBACJC,IAAQ,QAAU;AACxB,SAAIF,IAAIC,IACG,KAAK,IAAID,GAAG,IAAM,CAAG,KAGpBE,IAAQF,IAAI,MAAM;AAElC;AACA,SAASN,GAAQS,GAAI;AACjB,QAAMF,IAAI,sBACJC,IAAQ,QAAU,IAClBE,IAAMD,IAAKA,IAAKA;AACtB,SAAIC,IAAMH,IACCG,KAGC,MAAMD,IAAK,MAAMD;AAEjC;AClTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BO,MAAMG,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuB3B,OAAO,KAAKC,IAAaC,GAAmB,GAAIC,IAAqB,MAAQ,KAAK,KAAMC,GAAiB,EAAI,IAAI,KAAOC,IAAkB,IAAMC,IAAW,GAAKC,IAAwB,IAAO;AAC3L,UAAMC,IAAMP,GACNQ,IAAKD,EAAI,CAAC,IAAI,WAAWA,EAAI,CAAC,IAAI,WAAWA,EAAI,CAAC,IAAI,WACtDE,IAAKF,EAAI,CAAC,IAAI,YAAYA,EAAI,CAAC,IAAI,WAAWA,EAAI,CAAC,IAAI,UACvDG,IAAKH,EAAI,CAAC,IAAI,WAAYA,EAAI,CAAC,IAAI,WAAWA,EAAI,CAAC,IAAI,UACvDI,IAAI,MAAMN,IAAW,IACrBlD,IAAIwD,KAAK,MAAMC,GAAU,MAAM,OAAOD,IAAI,OAAO,EAAI,IACvDC,GAAU,OAAO,OAAOD,IAAI,OAAO,EAAI;AAC3C,QAAIE,IAAIP,IACJ,IACAK,KAAK,IAAO,IAAM,MAAO,KAAK,KAAK,CAACT,IAAoB,MAAQ,EAAI;AACxE,IAAAW,IAAIA,IAAI,IAAM,IAAMA,IAAI,IAAM,IAAMA;AACpC,UAAMC,IAAKH,GACLI,IAAO;AAAA,MACTF,KAAK,MAAQL,KAAM,IAAMK;AAAA,MACzBA,KAAK,MAAQJ,KAAM,IAAMI;AAAA,MACzBA,KAAK,MAAQH,KAAM,IAAMG;AAAA,IACrC,GACcG,IAAI,KAAO,IAAMd,IAAoB,IACrCe,IAAKD,IAAIA,IAAIA,IAAIA,GACjBE,KAAM,IAAMD,GACZE,KAAKF,IAAKf,IACZ,MAAMgB,KAAMA,KAAM,KAAK,KAAK,IAAMhB,CAAiB,GACjDkB,IAAIjB,GAAiBC,CAAe,IAAIJ,EAAW,CAAC,GACpDzB,KAAI,OAAO,KAAK,KAAK6C,CAAC,GACtBC,IAAM,QAAQ,KAAK,IAAID,GAAG,GAAG,GAC7BE,IAAMD,GACNE,IAAc;AAAA,MAChB,KAAK,IAAKJ,KAAKJ,EAAK,CAAC,IAAIP,IAAM,KAAO,IAAI;AAAA,MAC1C,KAAK,IAAKW,KAAKJ,EAAK,CAAC,IAAIN,IAAM,KAAO,IAAI;AAAA,MAC1C,KAAK,IAAKU,KAAKJ,EAAK,CAAC,IAAIL,IAAM,KAAO,IAAI;AAAA,IACtD,GACcc,IAAO;AAAA,MACR,MAAQD,EAAY,CAAC,KAAMA,EAAY,CAAC,IAAI;AAAA,MAC5C,MAAQA,EAAY,CAAC,KAAMA,EAAY,CAAC,IAAI;AAAA,MAC5C,MAAQA,EAAY,CAAC,KAAMA,EAAY,CAAC,IAAI;AAAA,IACzD,GACcE,MAAM,IAAMD,EAAK,CAAC,IAAIA,EAAK,CAAC,IAAI,OAAOA,EAAK,CAAC,KAAKH;AACxD,WAAO,IAAItB,GAAkBqB,GAAGK,IAAIJ,GAAKC,GAAKnE,GAAG2D,GAAIC,GAAMI,IAAI,KAAK,IAAIA,IAAI,IAAI,GAAG5C,EAAC;AAAA,EACvF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,YAAY6C,GAAGK,GAAIJ,GAAKC,GAAKnE,GAAG2D,GAAIC,GAAMI,GAAIO,GAAQnD,GAAG;AACrD,SAAK,IAAI6C,GACT,KAAK,KAAKK,GACV,KAAK,MAAMJ,GACX,KAAK,MAAMC,GACX,KAAK,IAAInE,GACT,KAAK,KAAK2D,GACV,KAAK,OAAOC,GACZ,KAAK,KAAKI,GACV,KAAK,SAASO,GACd,KAAK,IAAInD;AAAA,EACZ;AACL;AAEAwB,GAAkB,UAAUA,GAAkB,KAAM;ACnHpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCO,MAAM4B,GAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBf,YAAYC,GAAKC,GAAQC,GAAGC,GAAGC,GAAGC,GAAGC,GAAOC,GAAOC,GAAO;AACtD,SAAK,MAAMR,GACX,KAAK,SAASC,GACd,KAAK,IAAIC,GACT,KAAK,IAAIC,GACT,KAAK,IAAIC,GACT,KAAK,IAAIC,GACT,KAAK,QAAQC,GACb,KAAK,QAAQC,GACb,KAAK,QAAQC;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,SAASC,GAAO;AACZ,UAAMC,IAAK,KAAK,QAAQD,EAAM,OACxBE,IAAK,KAAK,QAAQF,EAAM,OACxBG,IAAK,KAAK,QAAQH,EAAM,OACxBI,IAAU,KAAK,KAAKH,IAAKA,IAAKC,IAAKA,IAAKC,IAAKA,CAAE;AAErD,WADW,OAAO,KAAK,IAAIC,GAAS,IAAI;AAAA,EAE3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO,QAAQxE,GAAM;AACjB,WAAO0D,GAAM,2BAA2B1D,GAAM8B,GAAkB,OAAO;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,OAAO,2BAA2B9B,GAAMyE,GAAmB;AACvD,UAAMlF,KAAOS,IAAO,aAAe,IAC7BR,KAASQ,IAAO,UAAe,GAC/BP,IAAQO,IAAO,KACf0E,IAAOC,GAAiBpF,CAAG,GAC3BqF,IAASD,GAAiBnF,CAAK,GAC/BqF,IAAQF,GAAiBlF,CAAI,GAC7BW,IAAI,aAAasE,IAAO,aAAaE,IAAS,aAAaC,GAC3DxE,IAAI,SAASqE,IAAO,SAASE,IAAS,SAASC,GAC/CvE,IAAI,aAAaoE,IAAO,aAAaE,IAAS,aAAaC,GAC3DC,IAAK,WAAW1E,IAAI,WAAWC,IAAI,WAAWC,GAC9CyE,IAAK,YAAY3E,IAAI,WAAWC,IAAI,WAAWC,GAC/C0E,IAAK,WAAY5E,IAAI,WAAWC,IAAI,WAAWC,GAC/C2E,IAAKR,EAAkB,KAAK,CAAC,IAAIK,GACjCI,IAAKT,EAAkB,KAAK,CAAC,IAAIM,GACjCI,KAAKV,EAAkB,KAAK,CAAC,IAAIO,GACjCI,KAAM,KAAK,IAAKX,EAAkB,KAAK,KAAK,IAAIQ,CAAE,IAAK,KAAO,IAAI,GAClEI,IAAM,KAAK,IAAKZ,EAAkB,KAAK,KAAK,IAAIS,CAAE,IAAK,KAAO,IAAI,GAClEI,KAAM,KAAK,IAAKb,EAAkB,KAAK,KAAK,IAAIU,EAAE,IAAK,KAAO,IAAI,GAClEI,IAAMC,GAAYP,CAAE,IAAI,MAAQG,MAAQA,KAAM,QAC9CK,IAAMD,GAAYN,CAAE,IAAI,MAAQG,KAAQA,IAAM,QAC9CK,IAAMF,GAAYL,EAAE,IAAI,MAAQG,MAAQA,KAAM,QAC9CK,KAAK,KAAOJ,IAAK,MAAQE,IAAKC,KAAM,IACpCzG,MAAKsG,IAAKE,IAAK,IAAMC,KAAM,GAC3BE,MAAK,KAAOL,IAAK,KAAOE,IAAK,KAAOC,KAAM,IAC1CG,MAAM,KAAON,IAAK,KAAOE,IAAKC,KAAM,IAEpCI,KADQ,KAAK,MAAM7G,IAAG0G,CAAC,IACA,MAAS,KAAK,IACrChC,KAAMmC,KAAc,IAAIA,KAAc,MACxCA,MAAe,MAAMA,KAAc,MAC/BA,IACFC,KAAcpC,KAAM,KAAK,KAAM,KAC/BqC,KAAKH,KAAKpB,EAAkB,KAC5BZ,KAAI,MACN,KAAK,IAAImC,KAAKvB,EAAkB,IAAIA,EAAkB,IAAIA,EAAkB,CAAC,GAC3EX,KAAK,IAAMW,EAAkB,IAAK,KAAK,KAAKZ,KAAI,GAAK,KACtDY,EAAkB,KAAK,KAAOA,EAAkB,QAC/CwB,KAAWtC,KAAM,QAAQA,KAAM,MAAMA,IACrCuC,KAAO,QAAQ,KAAK,IAAKD,KAAW,KAAK,KAAM,MAAQ,CAAG,IAAI,MAE9DxE,KADM,MAAU,KAAQyE,KAAOzB,EAAkB,KAAKA,EAAkB,MAC9D,KAAK,KAAKkB,IAAIA,IAAI1G,KAAIA,EAAC,KAAM2G,KAAI,QAC3CO,KAAQ,KAAK,IAAI1E,IAAG,GAAG,IACzB,KAAK,IAAI,OAAO,KAAK,IAAI,MAAMgD,EAAkB,CAAC,GAAG,IAAI,GACvDvF,KAAIiH,KAAQ,KAAK,KAAKtC,KAAI,GAAK,GAC/BE,KAAI7E,KAAIuF,EAAkB,QAC1BT,KAAI,KACN,KAAK,KAAMmC,KAAQ1B,EAAkB,KAAMA,EAAkB,KAAK,EAAI,GACpER,MAAU,IAAM,MAAQ,QAASJ,MAAM,IAAM,OAAQA,KACrDuC,KAAS,IAAM,SAAU,KAAK,IAAI,IAAM,SAASrC,EAAC,GAClDG,KAAQkC,KAAQ,KAAK,IAAIL,EAAU,GACnC5B,KAAQiC,KAAQ,KAAK,IAAIL,EAAU;AACzC,WAAO,IAAIrC,GAAMC,IAAKzE,IAAG2E,IAAGC,IAAGC,IAAGC,IAAGC,IAAOC,IAAOC,EAAK;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO,QAAQN,GAAG3E,GAAGmH,GAAG;AACpB,WAAO3C,GAAM,2BAA2BG,GAAG3E,GAAGmH,GAAGvE,GAAkB,OAAO;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,OAAO,2BAA2B+B,GAAG3E,GAAGmH,GAAG5B,GAAmB;AAC1D,UAAMX,IAAK,IAAMW,EAAkB,IAAK,KAAK,KAAKZ,IAAI,GAAK,KACtDY,EAAkB,KAAK,KAAOA,EAAkB,QAC/CV,IAAI7E,IAAIuF,EAAkB,QAC1B0B,IAAQjH,IAAI,KAAK,KAAK2E,IAAI,GAAK,GAC/BG,IAAI,KACN,KAAK,KAAMmC,IAAQ1B,EAAkB,KAAMA,EAAkB,KAAK,EAAI,GACpEsB,IAAcM,IAAI,KAAK,KAAM,KAC7BpC,KAAU,IAAM,MAAQ,QAASJ,KAAM,IAAM,OAAQA,IACrDuC,IAAS,IAAM,SAAU,KAAK,IAAI,IAAM,SAASrC,CAAC,GAClDG,IAAQkC,IAAQ,KAAK,IAAIL,CAAU,GACnC5B,IAAQiC,IAAQ,KAAK,IAAIL,CAAU;AACzC,WAAO,IAAIrC,GAAM2C,GAAGnH,GAAG2E,GAAGC,GAAGC,GAAGC,GAAGC,GAAOC,GAAOC,CAAK;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,OAAO,QAAQF,GAAOC,GAAOC,GAAO;AAChC,WAAOT,GAAM,2BAA2BO,GAAOC,GAAOC,GAAOrC,GAAkB,OAAO;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,OAAO,2BAA2BmC,GAAOC,GAAOC,GAAOM,GAAmB;AACtE,UAAMkB,IAAIzB,GACJjF,IAAIkF,GACJJ,IAAI,KAAK,KAAK4B,IAAIA,IAAI1G,IAAIA,CAAC,GAE3BC,KADK,KAAK,IAAI6E,IAAI,MAAM,IAAI,KAAO,SAC3BU,EAAkB;AAChC,QAAI4B,IAAI,KAAK,MAAMpH,GAAG0G,CAAC,KAAK,MAAQ,KAAK;AACzC,IAAIU,IAAI,MACJA,KAAK;AAET,UAAMxC,IAAII,KAAS,KAAKA,IAAQ,OAAO;AACvC,WAAOP,GAAM,2BAA2BG,GAAG3E,GAAGmH,GAAG5B,CAAiB;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,QAAQ;AACJ,WAAO,KAAK,OAAO3C,GAAkB,OAAO;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO2C,GAAmB;AACtB,UAAM0B,IAAQ,KAAK,WAAW,KAAO,KAAK,MAAM,IAC5C,IACA,KAAK,SAAS,KAAK,KAAK,KAAK,IAAI,GAAK,GACpC1E,IAAI,KAAK,IAAI0E,IAAQ,KAAK,IAAI,OAAO,KAAK,IAAI,MAAM1B,EAAkB,CAAC,GAAG,IAAI,GAAG,IAAM,GAAG,GAC1F6B,IAAQ,KAAK,MAAM,KAAK,KAAM,KAC9BJ,IAAO,QAAQ,KAAK,IAAII,IAAO,CAAG,IAAI,MACtCN,IAAKvB,EAAkB,KACzB,KAAK,IAAI,KAAK,IAAI,KAAO,IAAMA,EAAkB,IAAIA,EAAkB,CAAC,GACtE8B,IAAKL,KAAQ,MAAU,MAAQzB,EAAkB,KAAKA,EAAkB,KACxEoB,IAAKG,IAAKvB,EAAkB,KAC5B+B,IAAO,KAAK,IAAIF,CAAI,GACpBG,IAAO,KAAK,IAAIH,CAAI,GACpBI,IAAS,MAAQb,IAAK,SAASpE,KAChC,KAAO8E,IAAK,KAAO9E,IAAIgF,IAAO,MAAQhF,IAAI+E,IACzCb,IAAIe,IAAQD,GACZxH,IAAIyH,IAAQF,GACZjB,KAAM,MAAQM,IAAK,MAAQF,IAAI,MAAQ1G,KAAK,MAC5CwG,KAAM,MAAQI,IAAK,MAAQF,IAAI,MAAQ1G,KAAK,MAC5CyG,KAAM,MAAQG,IAAK,MAAQF,IAAI,OAAS1G,KAAK,MAC7C0H,KAAS,KAAK,IAAI,GAAI,QAAQ,KAAK,IAAIpB,CAAE,KAAM,MAAQ,KAAK,IAAIA,CAAE,EAAE,GACpET,KAAKU,GAAYD,CAAE,KAAK,MAAQd,EAAkB,MACpD,KAAK,IAAIkC,IAAQ,IAAM,IAAI,GACzBC,IAAS,KAAK,IAAI,GAAI,QAAQ,KAAK,IAAInB,CAAE,KAAM,MAAQ,KAAK,IAAIA,CAAE,EAAE,GACpEV,KAAKS,GAAYC,CAAE,KAAK,MAAQhB,EAAkB,MACpD,KAAK,IAAImC,GAAQ,IAAM,IAAI,GACzBC,IAAS,KAAK,IAAI,GAAI,QAAQ,KAAK,IAAInB,CAAE,KAAM,MAAQ,KAAK,IAAIA,CAAE,EAAE,GACpEV,IAAKQ,GAAYE,CAAE,KAAK,MAAQjB,EAAkB,MACpD,KAAK,IAAIoC,GAAQ,IAAM,IAAI,GACzBC,IAAKhC,KAAKL,EAAkB,KAAK,CAAC,GAClCsC,IAAKhC,KAAKN,EAAkB,KAAK,CAAC,GAClCuC,KAAKhC,IAAKP,EAAkB,KAAK,CAAC,GAClCrE,KAAI,aAAa0G,IAAK,aAAaC,IAAK,aAAaC,IACrD3G,KAAI,aAAayG,IAAK,aAAaC,IAAK,YAAaC,IACrD1G,KAAI,aAAcwG,IAAK,aAAaC,IAAK,aAAaC;AAE5D,WADaC,GAAkB7G,IAAGC,IAAGC,EAAC;AAAA,EAEzC;AAAA;AAAA;AAAA,EAGD,OAAO,2BAA2BF,GAAGC,GAAGC,GAAGmE,GAAmB;AAE1D,UAAMK,IAAK,WAAW1E,IAAI,WAAWC,IAAI,WAAWC,GAC9CyE,IAAK,YAAY3E,IAAI,WAAWC,IAAI,WAAWC,GAC/C0E,IAAK,WAAY5E,IAAI,WAAWC,IAAI,WAAWC,GAE/C2E,IAAKR,EAAkB,KAAK,CAAC,IAAIK,GACjCI,IAAKT,EAAkB,KAAK,CAAC,IAAIM,GACjCI,IAAKV,EAAkB,KAAK,CAAC,IAAIO,GAEjCI,IAAM,KAAK,IAAIX,EAAkB,KAAK,KAAK,IAAIQ,CAAE,IAAI,KAAO,IAAI,GAChEI,IAAM,KAAK,IAAIZ,EAAkB,KAAK,KAAK,IAAIS,CAAE,IAAI,KAAO,IAAI,GAChEI,IAAM,KAAK,IAAIb,EAAkB,KAAK,KAAK,IAAIU,CAAE,IAAI,KAAO,IAAI,GAChEI,IAAKC,GAAYP,CAAE,IAAI,MAAQG,KAAOA,IAAM,QAC5CK,IAAKD,GAAYN,CAAE,IAAI,MAAQG,KAAOA,IAAM,QAC5CK,IAAKF,GAAYL,CAAE,IAAI,MAAQG,KAAOA,IAAM,QAE5CK,MAAK,KAAOJ,IAAK,MAAQE,IAAKC,KAAM,IAEpCzG,MAAKsG,IAAKE,IAAK,IAAMC,KAAM,GAE3BE,KAAK,KAAOL,IAAK,KAAOE,IAAK,KAAOC,KAAM,IAC1CG,MAAM,KAAON,IAAK,KAAOE,IAAKC,KAAM,IAGpCI,IADQ,KAAK,MAAM7G,IAAG0G,EAAC,IACD,MAAQ,KAAK,IACnChC,IAAMmC,IAAc,IAAIA,IAAc,MACxCA,KAAe,MAAMA,IAAc,MAC/BA,GACFC,IAAapC,IAAM,KAAK,KAAK,KAE7BqC,KAAKH,KAAKpB,EAAkB,KAE5ByC,KAAI,MACN,KAAK,IAAIlB,KAAKvB,EAAkB,IAAIA,EAAkB,IAAIA,EAAkB,CAAC,GAC3E0C,KAAK,IAAM1C,EAAkB,IAAK,KAAK,KAAKyC,KAAI,GAAK,KACtDzC,EAAkB,KAAK,KAAQA,EAAkB,QAChDwB,KAAYtC,IAAM,QAASA,IAAM,MAAMA,GACvCuC,KAAQ,IAAM,KAAQ,KAAK,IAAID,KAAW,KAAK,KAAK,MAAQ,CAAG,IAAI,MAEnExE,KADK,MAAU,KAAOyE,KAAOzB,EAAkB,KAAKA,EAAkB,MAC7D,KAAK,KAAKkB,KAAIA,KAAI1G,KAAIA,EAAC,KAAK2G,IAAI,QACzCO,KAAQ,KAAK,IAAI1E,IAAG,GAAG,IACzB,KAAK,IAAI,OAAO,KAAK,IAAI,MAAMgD,EAAkB,CAAC,GAAG,IAAI,GAEvD2C,KAAIjB,KAAQ,KAAK,KAAKe,KAAI,GAAK,GAC/BG,KAAID,KAAI3C,EAAkB,QAC1BT,KAAI,KACN,KAAK,KAAMmC,KAAQ1B,EAAkB,KAAMA,EAAkB,KAAK,EAAI,GAEpER,MAAS,IAAM,MAAQ,QAASiD,MAAK,IAAM,OAAQA,KACnDd,KAAQ,KAAK,IAAI,IAAM,SAASiB,EAAC,IAAI,QACrCnD,KAAQkC,KAAQ,KAAK,IAAIL,CAAU,GACnC5B,KAAQiC,KAAQ,KAAK,IAAIL,CAAU;AACzC,WAAO,IAAIrC,GAAMC,GAAKyD,IAAGF,IAAGC,IAAGE,IAAGrD,IAAGC,IAAOC,IAAOC,EAAK;AAAA,EAC3D;AAAA;AAAA,EAED,uBAAuBM,GAAmB;AACtC,UAAM0B,IAAS,KAAK,WAAW,KAAO,KAAK,MAAM,IAC7C,IACA,KAAK,SAAS,KAAK,KAAK,KAAK,IAAI,GAAK,GACpC1E,IAAI,KAAK,IAAI0E,IAAQ,KAAK,IAAI,OAAO,KAAK,IAAI,MAAM1B,EAAkB,CAAC,GAAG,IAAI,GAAG,IAAM,GAAG,GAC1F6B,IAAO,KAAK,MAAM,KAAK,KAAK,KAC5BJ,IAAO,QAAQ,KAAK,IAAII,IAAO,CAAG,IAAI,MACtCN,IAAKvB,EAAkB,KACzB,KAAK,IAAI,KAAK,IAAI,KAAO,IAAMA,EAAkB,IAAIA,EAAkB,CAAC,GACtE8B,IAAKL,KAAQ,MAAU,MAAQzB,EAAkB,KAAKA,EAAkB,KACxEoB,IAAMG,IAAKvB,EAAkB,KAC7B+B,IAAO,KAAK,IAAIF,CAAI,GACpBG,IAAO,KAAK,IAAIH,CAAI,GACpBI,IAAQ,MAAQb,IAAK,SAASpE,KAC/B,KAAO8E,IAAK,KAAK9E,IAAIgF,IAAO,MAAQhF,IAAI+E,IACvCb,IAAIe,IAAQD,GACZxH,IAAIyH,IAAQF,GACZjB,KAAM,MAAQM,IAAK,MAAQF,IAAI,MAAQ1G,KAAK,MAC5CwG,KAAM,MAAQI,IAAK,MAAQF,IAAI,MAAQ1G,KAAK,MAC5CyG,KAAM,MAAQG,IAAK,MAAQF,IAAI,OAAS1G,KAAK,MAC7C0H,KAAS,KAAK,IAAI,GAAI,QAAQ,KAAK,IAAIpB,CAAE,KAAM,MAAQ,KAAK,IAAIA,CAAE,EAAE,GACpET,KAAKU,GAAYD,CAAE,KAAK,MAAQd,EAAkB,MACpD,KAAK,IAAIkC,IAAQ,IAAM,IAAI,GACzBC,IAAS,KAAK,IAAI,GAAI,QAAQ,KAAK,IAAInB,CAAE,KAAM,MAAQ,KAAK,IAAIA,CAAE,EAAE,GACpEV,KAAKS,GAAYC,CAAE,KAAK,MAAQhB,EAAkB,MACpD,KAAK,IAAImC,GAAQ,IAAM,IAAI,GACzBC,IAAS,KAAK,IAAI,GAAI,QAAQ,KAAK,IAAInB,CAAE,KAAM,MAAQ,KAAK,IAAIA,CAAE,EAAE,GACpEV,IAAKQ,GAAYE,CAAE,KAAK,MAAQjB,EAAkB,MACpD,KAAK,IAAIoC,GAAQ,IAAM,IAAI,GACzBC,IAAKhC,KAAKL,EAAkB,KAAK,CAAC,GAClCsC,IAAKhC,KAAKN,EAAkB,KAAK,CAAC,GAClCuC,KAAKhC,IAAKP,EAAkB,KAAK,CAAC,GAClCrE,KAAI,aAAa0G,IAAK,aAAaC,IAAK,aAAaC,IACrD3G,KAAI,aAAayG,IAAK,aAAaC,IAAK,YAAaC,IACrD1G,KAAI,aAAcwG,IAAK,aAAaC,IAAK,aAAaC;AAC5D,WAAO,CAAC5G,IAAGC,IAAGC,EAAC;AAAA,EAClB;AACL;ACnWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BO,MAAMgH,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnB,OAAO,gBAAgBC,GAAO;AAC1B,YAAQA,IAAQ,KAAK,KAAK,MAAM,KAAK,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,OAAO,iBAAiBlG,GAAc;AAClC,UAAMC,IAAaD,IAAe;AAClC,QAAIxB,IAAe;AACnB,WAAIyB,KAAc,WACdzB,IAAeyB,IAAa,QAG5BzB,IAAe,QAAQ,KAAK,IAAIyB,GAAY,IAAM,GAAG,IAAI,OAEtDzB,IAAe;AAAA,EACzB;AAAA,EACD,OAAO,oBAAoBmB,GAAW;AAClC,UAAMwG,IAAK,KAAK,IAAI,KAAK,IAAIxG,CAAS,GAAG,IAAI;AAC7C,WAAOyG,GAAiBzG,CAAS,IAAI,MAAQwG,KAAMA,IAAK;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,OAAO,MAAM7H,GAAQ;AACjB,UAAM+H,IAAiB9G,GAAyBjB,GAAQ2H,EAAU,2BAA2B,GACvF/B,IAAK+B,EAAU,oBAAoBI,EAAe,CAAC,CAAC,GACpDjC,IAAK6B,EAAU,oBAAoBI,EAAe,CAAC,CAAC,GACpDhC,IAAK4B,EAAU,oBAAoBI,EAAe,CAAC,CAAC,GAEpD/B,KAAK,KAAOJ,IAAK,MAAQE,IAAKC,KAAM,IAEpCzG,KAAKsG,IAAKE,IAAK,IAAMC,KAAM;AACjC,WAAO,KAAK,MAAMzG,GAAG0G,CAAC;AAAA,EACzB;AAAA,EACD,OAAO,iBAAiBA,GAAG1G,GAAGC,GAAG;AAC7B,UAAMyI,IAAUL,EAAU,gBAAgBrI,IAAI0G,CAAC,GACzCiC,IAAUN,EAAU,gBAAgBpI,IAAIyG,CAAC;AAC/C,WAAOgC,IAAUC;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,OAAO,UAAUC,GAAQC,GAAKC,GAAQ;AAClC,YAAQD,IAAMD,MAAWE,IAASF;AAAA,EACrC;AAAA,EACD,OAAO,UAAUA,GAAQpG,GAAGsG,GAAQ;AAChC,WAAO;AAAA,MACHF,EAAO,CAAC,KAAKE,EAAO,CAAC,IAAIF,EAAO,CAAC,KAAKpG;AAAA,MACtCoG,EAAO,CAAC,KAAKE,EAAO,CAAC,IAAIF,EAAO,CAAC,KAAKpG;AAAA,MACtCoG,EAAO,CAAC,KAAKE,EAAO,CAAC,IAAIF,EAAO,CAAC,KAAKpG;AAAA,IAClD;AAAA,EACK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYD,OAAO,cAAcoG,GAAQG,GAAYD,GAAQE,GAAM;AACnD,UAAMxG,IAAI6F,EAAU,UAAUO,EAAOI,CAAI,GAAGD,GAAYD,EAAOE,CAAI,CAAC;AACpE,WAAOX,EAAU,UAAUO,GAAQpG,GAAGsG,CAAM;AAAA,EAC/C;AAAA,EACD,OAAO,UAAU3H,GAAG;AAChB,WAAO,KAAOA,KAAKA,KAAK;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWD,OAAO,UAAUC,GAAG8C,GAAG;AACnB,UAAM+E,IAAKZ,EAAU,cAAc,CAAC,GAC9Ba,IAAKb,EAAU,cAAc,CAAC,GAC9Bc,IAAKd,EAAU,cAAc,CAAC,GAC9Be,IAASlF,IAAI,KAAK,IAAI,IAAM,KAC5BmF,IAASnF,IAAI,MAAM,IAAI,IAAM;AACnC,QAAIA,IAAI,GAAG;AACP,YAAMrD,IAAIuI,GACJpJ,IAAIqJ,GACJ1I,KAAKS,IAAIP,IAAIqI,IAAKlJ,IAAImJ,KAAMF;AAClC,aAAIZ,EAAU,UAAU1H,CAAC,IACd,CAACA,GAAGE,GAAGb,CAAC,IAGR,CAAC,IAAM,IAAM,EAAI;AAAA,IAE/B,WACQkE,IAAI,GAAG;AACZ,YAAMlE,IAAIoJ,GACJzI,IAAI0I,GACJxI,KAAKO,IAAIT,IAAIsI,IAAKjJ,IAAImJ,KAAMD;AAClC,aAAIb,EAAU,UAAUxH,CAAC,IACd,CAACF,GAAGE,GAAGb,CAAC,IAGR,CAAC,IAAM,IAAM,EAAI;AAAA,IAE/B,OACI;AACD,YAAMW,IAAIyI,GACJvI,IAAIwI,GACJrJ,KAAKoB,IAAIT,IAAIsI,IAAKpI,IAAIqI,KAAMC;AAClC,aAAId,EAAU,UAAUrI,CAAC,IACd,CAACW,GAAGE,GAAGb,CAAC,IAGR,CAAC,IAAM,IAAM,EAAI;AAAA,IAE/B;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,OAAO,gBAAgBoB,GAAGkI,GAAW;AACjC,QAAIC,IAAO,CAAC,IAAM,IAAM,EAAI,GACxBC,IAAQD,GACRE,IAAU,GACVC,IAAW,GACXC,IAAc,IACdC,IAAQ;AACZ,aAAS1F,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,YAAM2E,IAAMR,EAAU,UAAUjH,GAAG8C,CAAC;AACpC,UAAI2E,EAAI,CAAC,IAAI;AACT;AAEJ,YAAMgB,IAASxB,EAAU,MAAMQ,CAAG;AAClC,UAAI,CAACc,GAAa;AACd,QAAAJ,IAAOV,GACPW,IAAQX,GACRY,IAAUI,GACVH,IAAWG,GACXF,IAAc;AACd;AAAA,MACH;AACD,OAAIC,KAASvB,EAAU,iBAAiBoB,GAASI,GAAQH,CAAQ,OAC7DE,IAAQ,IACJvB,EAAU,iBAAiBoB,GAASH,GAAWO,CAAM,KACrDL,IAAQX,GACRa,IAAWG,MAGXN,IAAOV,GACPY,IAAUI;AAAA,IAGrB;AACD,WAAO,CAACN,GAAMC,CAAK;AAAA,EACtB;AAAA,EACD,OAAO,SAAS9C,GAAG1G,GAAG;AAClB,WAAO;AAAA,OACF0G,EAAE,CAAC,IAAI1G,EAAE,CAAC,KAAK;AAAA,OACf0G,EAAE,CAAC,IAAI1G,EAAE,CAAC,KAAK;AAAA,OACf0G,EAAE,CAAC,IAAI1G,EAAE,CAAC,KAAK;AAAA,IAC5B;AAAA,EACK;AAAA,EACD,OAAO,mBAAmBmB,GAAG;AACzB,WAAO,KAAK,MAAMA,IAAI,GAAG;AAAA,EAC5B;AAAA,EACD,OAAO,mBAAmBA,GAAG;AACzB,WAAO,KAAK,KAAKA,IAAI,GAAG;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,OAAO,cAAcC,GAAGkI,GAAW;AAC/B,UAAMQ,IAAUzB,EAAU,gBAAgBjH,GAAGkI,CAAS;AACtD,QAAIC,IAAOO,EAAQ,CAAC,GAChBL,IAAUpB,EAAU,MAAMkB,CAAI,GAC9BC,IAAQM,EAAQ,CAAC;AACrB,aAASd,IAAO,GAAGA,IAAO,GAAGA;AACzB,UAAIO,EAAKP,CAAI,MAAMQ,EAAMR,CAAI,GAAG;AAC5B,YAAIe,IAAS,IACTC,IAAS;AACb,QAAIT,EAAKP,CAAI,IAAIQ,EAAMR,CAAI,KACvBe,IAAS1B,EAAU,mBAAmBA,EAAU,iBAAiBkB,EAAKP,CAAI,CAAC,CAAC,GAC5EgB,IAAS3B,EAAU,mBAAmBA,EAAU,iBAAiBmB,EAAMR,CAAI,CAAC,CAAC,MAG7Ee,IAAS1B,EAAU,mBAAmBA,EAAU,iBAAiBkB,EAAKP,CAAI,CAAC,CAAC,GAC5EgB,IAAS3B,EAAU,mBAAmBA,EAAU,iBAAiBmB,EAAMR,CAAI,CAAC,CAAC;AAEjF,iBAASiB,IAAI,GAAGA,IAAI,KACZ,OAAK,IAAID,IAASD,CAAM,KAAK,IADdE,KAId;AACD,gBAAMC,IAAS,KAAK,OAAOH,IAASC,KAAU,CAAG,GAC3CG,IAAqB9B,EAAU,gBAAgB6B,CAAM,GACrDrB,IAAMR,EAAU,cAAckB,GAAMY,GAAoBX,GAAOR,CAAI,GACnEa,IAASxB,EAAU,MAAMQ,CAAG;AAClC,UAAIR,EAAU,iBAAiBoB,GAASH,GAAWO,CAAM,KACrDL,IAAQX,GACRmB,IAASE,MAGTX,IAAOV,GACPY,IAAUI,GACVE,IAASG;AAAA,QAEhB;AAAA,MAER;AAEL,WAAO7B,EAAU,SAASkB,GAAMC,CAAK;AAAA,EACxC;AAAA,EACD,OAAO,2BAA2BY,GAAS;AACvC,UAAMC,IAAa,KAAK,IAAID,CAAO,GAC7BE,IAAO,KAAK,IAAI,GAAG,QAAQD,KAAc,MAAQA,EAAW;AAClE,WAAO7B,GAAiB4B,CAAO,IAAI,KAAK,IAAIE,GAAM,IAAM,IAAI;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,OAAO,cAAcxD,GAAYnC,GAAQvD,GAAG;AAExC,QAAIwD,IAAI,KAAK,KAAKxD,CAAC,IAAI;AAIvB,UAAMoE,IAAoB3C,GAAkB,SACtC0H,IAAc,IAAI,KAAK,IAAI,OAAO,KAAK,IAAI,MAAM/E,EAAkB,CAAC,GAAG,IAAI,GAE3E8B,IADO,QAAQ,KAAK,IAAIR,IAAa,CAAG,IAAI,QAC/B,MAAU,MAAQtB,EAAkB,KAAKA,EAAkB,KACxE+B,IAAO,KAAK,IAAIT,CAAU,GAC1BU,IAAO,KAAK,IAAIV,CAAU;AAChC,aAAS0D,IAAiB,GAAGA,IAAiB,GAAGA,KAAkB;AAI/D,YAAMC,IAAc7F,IAAI,KAClBsC,IAAQvC,MAAW,KAAOC,MAAM,IAAM,IAAMD,IAAS,KAAK,KAAK8F,CAAW,GAC1EjI,IAAI,KAAK,IAAI0E,IAAQqD,GAAa,IAAM,GAAG,GAG3C3D,IAFKpB,EAAkB,KACzB,KAAK,IAAIiF,GAAa,IAAMjF,EAAkB,IAAIA,EAAkB,CAAC,IACzDA,EAAkB,KAC5BiC,KAAQ,MAAQb,IAAK,SAASpE,KAC/B,KAAO8E,IAAK,KAAK9E,IAAIgF,IAAO,MAAQhF,IAAI+E,IACvCb,KAAIe,KAAQD,GACZxH,IAAIyH,KAAQF,GACZjB,MAAM,MAAQM,IAAK,MAAQF,KAAI,MAAQ1G,KAAK,MAC5CwG,KAAM,MAAQI,IAAK,MAAQF,KAAI,MAAQ1G,KAAK,MAC5CyG,KAAM,MAAQG,IAAK,MAAQF,KAAI,OAAS1G,KAAK,MAC7C0K,IAAWrC,EAAU,2BAA2B/B,EAAE,GAClDqE,IAAWtC,EAAU,2BAA2B7B,CAAE,GAClDoE,KAAWvC,EAAU,2BAA2B5B,CAAE,GAClD/F,KAASiB,GAAyB,CAAC+I,GAAUC,GAAUC,EAAQ,GAAGvC,EAAU,2BAA2B;AAI7G,UAAI3H,GAAO,CAAC,IAAI,KAAKA,GAAO,CAAC,IAAI,KAAKA,GAAO,CAAC,IAAI;AAC9C,eAAO;AAEX,YAAMuI,KAAKZ,EAAU,cAAc,CAAC,GAC9Ba,KAAKb,EAAU,cAAc,CAAC,GAC9Bc,KAAKd,EAAU,cAAc,CAAC,GAC9BwC,KAAM5B,KAAKvI,GAAO,CAAC,IAAIwI,KAAKxI,GAAO,CAAC,IAAIyI,KAAKzI,GAAO,CAAC;AAC3D,UAAImK,MAAO;AACP,eAAO;AAEX,UAAIL,MAAmB,KAAK,KAAK,IAAIK,KAAMzJ,CAAC,IAAI;AAC5C,eAAIV,GAAO,CAAC,IAAI,UAAUA,GAAO,CAAC,IAAI,UAAUA,GAAO,CAAC,IAAI,SACjD,IAEJoK,GAA0BpK,EAAM;AAI3C,MAAAkE,IAAIA,KAAKiG,KAAMzJ,KAAKwD,KAAK,IAAIiG;AAAA,IAChC;AACD,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaD,OAAO,WAAWE,GAAYpG,GAAQ9C,GAAO;AACzC,QAAI8C,IAAS,QAAU9C,IAAQ,QAAUA,IAAQ;AAC7C,aAAOmJ,GAAyBnJ,CAAK;AAEzC,IAAAkJ,IAAaE,GAAgCF,CAAU;AACvD,UAAMjE,IAAaiE,IAAa,MAAM,KAAK,IACrC3J,IAAI8J,GAAsBrJ,CAAK,GAC/BsJ,IAAc9C,EAAU,cAAcvB,GAAYnC,GAAQvD,CAAC;AACjE,QAAI+J,MAAgB;AAChB,aAAOA;AAEX,UAAMzK,IAAS2H,EAAU,cAAcjH,GAAG0F,CAAU;AACpD,WAAOgE,GAA0BpK,CAAM;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaD,OAAO,WAAWqK,GAAYpG,GAAQ9C,GAAO;AACzC,WAAO4C,GAAM,QAAQ4D,EAAU,WAAW0C,GAAYpG,GAAQ9C,CAAK,CAAC;AAAA,EACvE;AACL;AACAwG,EAAU,8BAA8B;AAAA,EACpC;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AAAA,EACD;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AAAA,EACD;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AACL;AACAA,EAAU,8BAA8B;AAAA,EACpC;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AAAA,EACD;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AAAA,EACD;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACH;AACL;AACAA,EAAU,gBAAgB,CAAC,QAAQ,QAAQ,MAAM;AACjDA,EAAU,kBAAkB;AAAA,EACxB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAC5C;AAAA,EAAqB;AAAA,EAAqB;AAAA,EAC1C;AAAA,EAAqB;AAAA,EAAoB;AAAA,EACzC;AAAA,EAAqB;AAAA,EAAoB;AAAA,EACzC;AAAA,EAAoB;AAAA,EAAqB;AAAA,EACzC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAkB;AAAA,EAAoB;AAAA,EACtC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAkB;AAAA,EACrC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAkB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAkB;AAAA,EAAoB;AAAA,EACtC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAoB;AAAA,EAAoB;AAAA,EACxC;AAAA,EAAmB;AAAA,EAAoB;AAAA,EACvC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAmB;AAAA,EAAmB;AAAA,EACtC;AAAA,EAAkB;AAAA,EAAkB;AAAA,EACpC;AAAA,EAAoB;AAAA,EAAmB;AAAA,EACvC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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]} \ No newline at end of file diff --git a/packages/theme/lib/theme.umd.js b/packages/theme/lib/theme.umd.js new file mode 100644 index 0000000..8fff979 --- /dev/null +++ b/packages/theme/lib/theme.umd.js @@ -0,0 +1,267 @@ +(function(cr,hr){typeof exports=="object"&&typeof module<"u"?hr(exports):typeof define=="function"&&define.amd?define(["exports"],hr):(cr=typeof globalThis<"u"?globalThis:cr||self,hr(cr.theme={}))})(this,function(cr){"use strict";/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function hr(r){return r<0?-1:r===0?0:1}function vt(r,t,a){return(1-a)*r+a*t}function Yn(r,t,a){return at?t:a}function Ct(r,t,a){return at?t:a}function Vn(r){return r=r%360,r<0&&(r=r+360),r}function Xt(r,t){const a=r[0]*t[0][0]+r[1]*t[0][1]+r[2]*t[0][2],o=r[0]*t[1][0]+r[1]*t[1][1]+r[2]*t[1][2],s=r[0]*t[2][0]+r[1]*t[2][1]+r[2]*t[2][2];return[a,o,s]}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */const jn=[[.41233895,.35762064,.18051042],[.2126,.7152,.0722],[.01932141,.11916382,.95034478]],Hn=[[3.2413774792388685,-1.5376652402851851,-.49885366846268053],[-.9691452513005321,1.8758853451067872,.04156585616912061],[.05562093689691305,-.20395524564742123,1.0571799111220335]],Wn=[95.047,100,108.883];function Kt(r,t,a){return(255<<24|(r&255)<<16|(t&255)<<8|a&255)>>>0}function Ye(r){const t=Yr(r[0]),a=Yr(r[1]),o=Yr(r[2]);return Kt(t,a,o)}function Ve(r){return r>>16&255}function je(r){return r>>8&255}function He(r){return r&255}function Jn(r,t,a){const o=Hn,s=o[0][0]*r+o[0][1]*t+o[0][2]*a,l=o[1][0]*r+o[1][1]*t+o[1][2]*a,u=o[2][0]*r+o[2][1]*t+o[2][2]*a,g=Yr(s),d=Yr(l),k=Yr(u);return Kt(g,d,k)}function Zn(r){const t=Zr(Ve(r)),a=Zr(je(r)),o=Zr(He(r));return Xt([t,a,o],jn)}function Qn(r){const t=Br(r),a=Yr(t);return Kt(a,a,a)}function We(r){const t=Zn(r)[1];return 116*Je(t/100)-16}function Br(r){return 100*Kn((r+16)/116)}function re(r){return Je(r/100)*116-16}function Zr(r){const t=r/255;return t<=.040449936?t/12.92*100:Math.pow((t+.055)/1.055,2.4)*100}function Yr(r){const t=r/100;let a=0;return t<=.0031308?a=t*12.92:a=1.055*Math.pow(t,1/2.4)-.055,Yn(0,255,Math.round(a*255))}function Xn(){return Wn}function Je(r){const t=.008856451679035631,a=24389/27;return r>t?Math.pow(r,1/3):(a*r+16)/116}function Kn(r){const t=.008856451679035631,a=24389/27,o=r*r*r;return o>t?o:(116*r-16)/a}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Cr{static make(t=Xn(),a=200/Math.PI*Br(50)/100,o=50,s=2,l=!1){const u=t,g=u[0]*.401288+u[1]*.650173+u[2]*-.051461,d=u[0]*-.250268+u[1]*1.204414+u[2]*.045854,k=u[0]*-.002079+u[1]*.048952+u[2]*.953127,_=.8+s/10,x=_>=.9?vt(.59,.69,(_-.9)*10):vt(.525,.59,(_-.8)*10);let O=l?1:_*(1-1/3.6*Math.exp((-a-42)/92));O=O>1?1:O<0?0:O;const B=_,L=[O*(100/g)+1-O,O*(100/d)+1-O,O*(100/k)+1-O],w=1/(5*a+1),R=w*w*w*w,or=1-R,tr=R*a+.1*or*or*Math.cbrt(5*a),G=Br(o)/t[1],ar=1.48+Math.sqrt(G),Y=.725/Math.pow(G,.2),I=Y,Z=[Math.pow(tr*L[0]*g/100,.42),Math.pow(tr*L[1]*d/100,.42),Math.pow(tr*L[2]*k/100,.42)],S=[400*Z[0]/(Z[0]+27.13),400*Z[1]/(Z[1]+27.13),400*Z[2]/(Z[2]+27.13)],fr=(2*S[0]+S[1]+.05*S[2])*Y;return new Cr(G,fr,Y,I,x,B,L,tr,Math.pow(tr,.25),ar)}constructor(t,a,o,s,l,u,g,d,k,_){this.n=t,this.aw=a,this.nbb=o,this.ncb=s,this.c=l,this.nc=u,this.rgbD=g,this.fl=d,this.fLRoot=k,this.z=_}}Cr.DEFAULT=Cr.make();/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class wr{constructor(t,a,o,s,l,u,g,d,k){this.hue=t,this.chroma=a,this.j=o,this.q=s,this.m=l,this.s=u,this.jstar=g,this.astar=d,this.bstar=k}distance(t){const a=this.jstar-t.jstar,o=this.astar-t.astar,s=this.bstar-t.bstar,l=Math.sqrt(a*a+o*o+s*s);return 1.41*Math.pow(l,.63)}static fromInt(t){return wr.fromIntInViewingConditions(t,Cr.DEFAULT)}static fromIntInViewingConditions(t,a){const o=(t&16711680)>>16,s=(t&65280)>>8,l=t&255,u=Zr(o),g=Zr(s),d=Zr(l),k=.41233895*u+.35762064*g+.18051042*d,_=.2126*u+.7152*g+.0722*d,x=.01932141*u+.11916382*g+.95034478*d,O=.401288*k+.650173*_-.051461*x,B=-.250268*k+1.204414*_+.045854*x,L=-.002079*k+.048952*_+.953127*x,w=a.rgbD[0]*O,R=a.rgbD[1]*B,or=a.rgbD[2]*L,tr=Math.pow(a.fl*Math.abs(w)/100,.42),G=Math.pow(a.fl*Math.abs(R)/100,.42),ar=Math.pow(a.fl*Math.abs(or)/100,.42),Y=hr(w)*400*tr/(tr+27.13),I=hr(R)*400*G/(G+27.13),Z=hr(or)*400*ar/(ar+27.13),S=(11*Y+-12*I+Z)/11,fr=(Y+I-2*Z)/9,nr=(20*Y+20*I+21*Z)/20,xr=(40*Y+20*I+Z)/20,Fr=Math.atan2(fr,S)*180/Math.PI,_r=Fr<0?Fr+360:Fr>=360?Fr-360:Fr,rt=_r*Math.PI/180,tt=xr*a.nbb,Tr=100*Math.pow(tt/a.aw,a.c*a.z),jr=4/a.c*Math.sqrt(Tr/100)*(a.aw+4)*a.fLRoot,kt=_r<20.14?_r+360:_r,wt=.25*(Math.cos(kt*Math.PI/180+2)+3.8),Pt=5e4/13*wt*a.nc*a.ncb*Math.sqrt(S*S+fr*fr)/(nr+.305),et=Math.pow(Pt,.9)*Math.pow(1.64-Math.pow(.29,a.n),.73),at=et*Math.sqrt(Tr/100),zt=at*a.fLRoot,he=50*Math.sqrt(et*a.c/(a.aw+4)),ge=(1+100*.007)*Tr/(1+.007*Tr),qt=1/.0228*Math.log(1+.0228*zt),Gt=qt*Math.cos(rt),ve=qt*Math.sin(rt);return new wr(_r,at,Tr,jr,zt,he,ge,Gt,ve)}static fromJch(t,a,o){return wr.fromJchInViewingConditions(t,a,o,Cr.DEFAULT)}static fromJchInViewingConditions(t,a,o,s){const l=4/s.c*Math.sqrt(t/100)*(s.aw+4)*s.fLRoot,u=a*s.fLRoot,g=a/Math.sqrt(t/100),d=50*Math.sqrt(g*s.c/(s.aw+4)),k=o*Math.PI/180,_=(1+100*.007)*t/(1+.007*t),x=1/.0228*Math.log(1+.0228*u),O=x*Math.cos(k),B=x*Math.sin(k);return new wr(o,a,t,l,u,d,_,O,B)}static fromUcs(t,a,o){return wr.fromUcsInViewingConditions(t,a,o,Cr.DEFAULT)}static fromUcsInViewingConditions(t,a,o,s){const l=a,u=o,g=Math.sqrt(l*l+u*u),k=(Math.exp(g*.0228)-1)/.0228/s.fLRoot;let _=Math.atan2(u,l)*(180/Math.PI);_<0&&(_+=360);const x=t/(1-(t-100)*.007);return wr.fromJchInViewingConditions(x,k,_,s)}toInt(){return this.viewed(Cr.DEFAULT)}viewed(t){const a=this.chroma===0||this.j===0?0:this.chroma/Math.sqrt(this.j/100),o=Math.pow(a/Math.pow(1.64-Math.pow(.29,t.n),.73),1/.9),s=this.hue*Math.PI/180,l=.25*(Math.cos(s+2)+3.8),u=t.aw*Math.pow(this.j/100,1/t.c/t.z),g=l*(5e4/13)*t.nc*t.ncb,d=u/t.nbb,k=Math.sin(s),_=Math.cos(s),x=23*(d+.305)*o/(23*g+11*o*_+108*o*k),O=x*_,B=x*k,L=(460*d+451*O+288*B)/1403,w=(460*d-891*O-261*B)/1403,R=(460*d-220*O-6300*B)/1403,or=Math.max(0,27.13*Math.abs(L)/(400-Math.abs(L))),tr=hr(L)*(100/t.fl)*Math.pow(or,1/.42),G=Math.max(0,27.13*Math.abs(w)/(400-Math.abs(w))),ar=hr(w)*(100/t.fl)*Math.pow(G,1/.42),Y=Math.max(0,27.13*Math.abs(R)/(400-Math.abs(R))),I=hr(R)*(100/t.fl)*Math.pow(Y,1/.42),Z=tr/t.rgbD[0],S=ar/t.rgbD[1],fr=I/t.rgbD[2],nr=1.86206786*Z-1.01125463*S+.14918677*fr,xr=.38752654*Z+.62144744*S-.00897398*fr,Nr=-.0158415*Z-.03412294*S+1.04996444*fr;return Jn(nr,xr,Nr)}static fromXyzInViewingConditions(t,a,o,s){const l=.401288*t+.650173*a-.051461*o,u=-.250268*t+1.204414*a+.045854*o,g=-.002079*t+.048952*a+.953127*o,d=s.rgbD[0]*l,k=s.rgbD[1]*u,_=s.rgbD[2]*g,x=Math.pow(s.fl*Math.abs(d)/100,.42),O=Math.pow(s.fl*Math.abs(k)/100,.42),B=Math.pow(s.fl*Math.abs(_)/100,.42),L=hr(d)*400*x/(x+27.13),w=hr(k)*400*O/(O+27.13),R=hr(_)*400*B/(B+27.13),or=(11*L+-12*w+R)/11,tr=(L+w-2*R)/9,G=(20*L+20*w+21*R)/20,ar=(40*L+20*w+R)/20,I=Math.atan2(tr,or)*180/Math.PI,Z=I<0?I+360:I>=360?I-360:I,S=Z*Math.PI/180,fr=ar*s.nbb,nr=100*Math.pow(fr/s.aw,s.c*s.z),xr=4/s.c*Math.sqrt(nr/100)*(s.aw+4)*s.fLRoot,Nr=Z<20.14?Z+360:Z,Fr=1/4*(Math.cos(Nr*Math.PI/180+2)+3.8),rt=5e4/13*Fr*s.nc*s.ncb*Math.sqrt(or*or+tr*tr)/(G+.305),tt=Math.pow(rt,.9)*Math.pow(1.64-Math.pow(.29,s.n),.73),Tr=tt*Math.sqrt(nr/100),jr=Tr*s.fLRoot,kt=50*Math.sqrt(tt*s.c/(s.aw+4)),wt=(1+100*.007)*nr/(1+.007*nr),Mt=Math.log(1+.0228*jr)/.0228,Pt=Mt*Math.cos(S),et=Mt*Math.sin(S);return new wr(Z,Tr,nr,xr,jr,kt,wt,Pt,et)}xyzInViewingConditions(t){const a=this.chroma===0||this.j===0?0:this.chroma/Math.sqrt(this.j/100),o=Math.pow(a/Math.pow(1.64-Math.pow(.29,t.n),.73),1/.9),s=this.hue*Math.PI/180,l=.25*(Math.cos(s+2)+3.8),u=t.aw*Math.pow(this.j/100,1/t.c/t.z),g=l*(5e4/13)*t.nc*t.ncb,d=u/t.nbb,k=Math.sin(s),_=Math.cos(s),x=23*(d+.305)*o/(23*g+11*o*_+108*o*k),O=x*_,B=x*k,L=(460*d+451*O+288*B)/1403,w=(460*d-891*O-261*B)/1403,R=(460*d-220*O-6300*B)/1403,or=Math.max(0,27.13*Math.abs(L)/(400-Math.abs(L))),tr=hr(L)*(100/t.fl)*Math.pow(or,1/.42),G=Math.max(0,27.13*Math.abs(w)/(400-Math.abs(w))),ar=hr(w)*(100/t.fl)*Math.pow(G,1/.42),Y=Math.max(0,27.13*Math.abs(R)/(400-Math.abs(R))),I=hr(R)*(100/t.fl)*Math.pow(Y,1/.42),Z=tr/t.rgbD[0],S=ar/t.rgbD[1],fr=I/t.rgbD[2],nr=1.86206786*Z-1.01125463*S+.14918677*fr,xr=.38752654*Z+.62144744*S-.00897398*fr,Nr=-.0158415*Z-.03412294*S+1.04996444*fr;return[nr,xr,Nr]}}/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class E{static sanitizeRadians(t){return(t+Math.PI*8)%(Math.PI*2)}static trueDelinearized(t){const a=t/100;let o=0;return a<=.0031308?o=a*12.92:o=1.055*Math.pow(a,1/2.4)-.055,o*255}static chromaticAdaptation(t){const a=Math.pow(Math.abs(t),.42);return hr(t)*400*a/(a+27.13)}static hueOf(t){const a=Xt(t,E.SCALED_DISCOUNT_FROM_LINRGB),o=E.chromaticAdaptation(a[0]),s=E.chromaticAdaptation(a[1]),l=E.chromaticAdaptation(a[2]),u=(11*o+-12*s+l)/11,g=(o+s-2*l)/9;return Math.atan2(g,u)}static areInCyclicOrder(t,a,o){const s=E.sanitizeRadians(a-t),l=E.sanitizeRadians(o-t);return s100.01||nr[1]>100.01||nr[2]>100.01?0:Ye(nr);s=s-(_r-o)*s/(2*_r)}return 0}static solveToInt(t,a,o){if(a<1e-4||o<1e-4||o>99.9999)return Qn(o);t=Vn(t);const s=t/180*Math.PI,l=Br(o),u=E.findResultByJ(s,a,l);if(u!==0)return u;const g=E.bisectToLimit(l,s);return Ye(g)}static solveToCam(t,a,o){return wr.fromInt(E.solveToInt(t,a,o))}}E.SCALED_DISCOUNT_FROM_LINRGB=[[.001200833568784504,.002389694492170889,.0002795742885861124],[.0005891086651375999,.0029785502573438758,.0003270666104008398],[.00010146692491640572,.0005364214359186694,.0032979401770712076]],E.LINRGB_FROM_SCALED_DISCOUNT=[[1373.2198709594231,-1100.4251190754821,-7.278681089101213],[-271.815969077903,559.6580465940733,-32.46047482791194],[1.9622899599665666,-57.173814538844006,308.7233197812385]],E.Y_FROM_LINRGB=[.2126,.7152,.0722],E.CRITICAL_PLANES=[.015176349177441876,.045529047532325624,.07588174588720938,.10623444424209313,.13658714259697685,.16693984095186062,.19729253930674434,.2276452376616281,.2579979360165119,.28835063437139563,.3188300904430532,.350925934958123,.3848314933096426,.42057480301049466,.458183274052838,.4976837250274023,.5391024159806381,.5824650784040898,.6277969426914107,.6751227633498623,.7244668422128921,.775853049866786,.829304845476233,.8848452951698498,.942497089126609,1.0022825574869039,1.0642236851973577,1.1283421258858297,1.1946592148522128,1.2631959812511864,1.3339731595349034,1.407011200216447,1.4823302800086415,1.5599503113873272,1.6398909516233677,1.7221716113234105,1.8068114625156377,1.8938294463134073,1.9832442801866852,2.075074464868551,2.1693382909216234,2.2660538449872063,2.36523901573795,2.4669114995532007,2.5710888059345764,2.6777882626779785,2.7870270208169257,2.898822059350997,3.0131901897720907,3.1301480604002863,3.2497121605402226,3.3718988244681087,3.4967242352587946,3.624204428461639,3.754355295633311,3.887192587735158,4.022731918402185,4.160988767090289,4.301978482107941,4.445716283538092,4.592217266055746,4.741496401646282,4.893568542229298,5.048448422192488,5.20615066083972,5.3666897647573375,5.5300801301023865,5.696336044816294,5.865471690767354,6.037501145825082,6.212438385869475,6.390297286737924,6.571091626112461,6.7548350853498045,6.941541251256611,7.131223617812143,7.323895587840543,7.5195704746346665,7.7182615035334345,7.919981813454504,8.124744458384042,8.332562408825165,8.543448553206703,8.757415699253682,8.974476575321063,9.194643831691977,9.417930041841839,9.644347703669503,9.873909240696694,10.106627003236781,10.342513269534024,10.58158024687427,10.8238400726681,11.069304815507364,11.317986476196008,11.569896988756009,11.825048221409341,12.083451977536606,12.345119996613247,12.610063955123938,12.878295467455942,13.149826086772048,13.42466730586372,13.702830557985108,13.984327217668513,14.269168601521828,14.55736596900856,14.848930523210871,15.143873411576273,15.44220572664832,15.743938506781891,16.04908273684337,16.35764934889634,16.66964922287304,16.985093187232053,17.30399201960269,17.62635644741625,17.95219714852476,18.281524751807332,18.614349837764564,18.95068293910138,19.290534541298456,19.633915083172692,19.98083495742689,20.331304511189067,20.685334046541502,21.042933821039977,21.404114048223256,21.76888489811322,22.137256497705877,22.50923893145328,22.884842241736916,23.264076429332462,23.6469514538663,24.033477234264016,24.42366364919083,24.817520537484558,25.21505769858089,25.61628489293138,26.021211842414342,26.429848230738664,26.842203703840827,27.258287870275353,27.678110301598522,28.10168053274597,28.529008062403893,28.96010235337422,29.39497283293396,29.83362889318845,30.276079891419332,30.722335150426627,31.172403958865512,31.62629557157785,32.08401920991837,32.54558406207592,33.010999283389665,33.4802739966603,33.953417292456834,34.430438229418264,34.911345834551085,35.39614910352207,35.88485700094671,36.37747846067349,36.87402238606382,37.37449765026789,37.87891309649659,38.38727753828926,38.89959975977785,39.41588851594697,39.93615253289054,40.460400508064545,40.98864111053629,41.520882981230194,42.05713473317016,42.597404951718396,43.141702194811224,43.6900349931913,44.24241185063697,44.798841244188324,45.35933162437017,45.92389141541209,46.49252901546552,47.065252796817916,47.64207110610409,48.22299226451468,48.808024568002054,49.3971762874833,49.9904556690408,50.587870934119984,51.189430279724725,51.79514187861014,52.40501387947288,53.0190544071392,53.637271562750364,54.259673423945976,54.88626804504493,55.517063457223934,56.15206766869424,56.79128866487574,57.43473440856916,58.08241284012621,58.734331877617365,59.39049941699807,60.05092333227251,60.715611475655585,61.38457167773311,62.057811747619894,62.7353394731159,63.417162620860914,64.10328893648692,64.79372614476921,65.48848194977529,66.18756403501224,66.89098006357258,67.59873767827808,68.31084450182222,69.02730813691093,69.74813616640164,70.47333615344107,71.20291564160104,71.93688215501312,72.67524319850172,73.41800625771542,74.16517879925733,74.9167682708136,75.67278210128072,76.43322770089146,77.1981124613393,77.96744375590167,78.74122893956174,79.51947534912904,80.30219030335869,81.08938110306934,81.88105503125999,82.67721935322541,83.4778813166706,84.28304815182372,85.09272707154808,85.90692527145302,86.72564993000343,87.54890820862819,88.3767072518277,89.2090541872801,90.04595612594655,90.88742016217518,91.73345337380438,92.58406282226491,93.43925555268066,94.29903859396902,95.16341895893969,96.03240364439274,96.9059996312159,97.78421388448044,98.6670533535366,99.55452497210776];/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class Er{static from(t,a,o){return new Er(E.solveToInt(t,a,o))}static fromInt(t){return new Er(t)}toInt(){return this.argb}get hue(){return this.internalHue}set hue(t){this.setInternalState(E.solveToInt(t,this.internalChroma,this.internalTone))}get chroma(){return this.internalChroma}set chroma(t){this.setInternalState(E.solveToInt(this.internalHue,t,this.internalTone))}get tone(){return this.internalTone}set tone(t){this.setInternalState(E.solveToInt(this.internalHue,this.internalChroma,t))}constructor(t){this.argb=t;const a=wr.fromInt(t);this.internalHue=a.hue,this.internalChroma=a.chroma,this.internalTone=We(t),this.argb=t}setInternalState(t){const a=wr.fromInt(t);this.internalHue=a.hue,this.internalChroma=a.chroma,this.internalTone=We(t),this.argb=t}inViewingConditions(t){const o=wr.fromInt(this.toInt()).xyzInViewingConditions(t),s=wr.fromXyzInViewingConditions(o[0],o[1],o[2],Cr.make());return Er.from(s.hue,s.chroma,re(o[1]))}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class gr{static ratioOfTones(t,a){return t=Ct(0,100,t),a=Ct(0,100,a),gr.ratioOfYs(Br(t),Br(a))}static ratioOfYs(t,a){const o=t>a?t:a,s=o===a?t:a;return(o+5)/(s+5)}static lighter(t,a){if(t<0||t>100)return-1;const o=Br(t),s=a*(o+5)-5,l=gr.ratioOfYs(s,o),u=Math.abs(l-a);if(l.04)return-1;const g=re(s)+.4;return g<0||g>100?-1:g}static darker(t,a){if(t<0||t>100)return-1;const o=Br(t),s=(o+5)/a-5,l=gr.ratioOfYs(o,s),u=Math.abs(l-a);if(l.04)return-1;const g=re(s)-.4;return g<0||g>100?-1:g}static lighterUnsafe(t,a){const o=gr.lighter(t,a);return o<0?100:o}static darkerUnsafe(t,a){const o=gr.darker(t,a);return o<0?0:o}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class te{static isDisliked(t){const a=Math.round(t.hue)>=90&&Math.round(t.hue)<=111,o=Math.round(t.chroma)>16,s=Math.round(t.tone)<65;return a&&o&&s}static fixIfDisliked(t){return te.isDisliked(t)?Er.from(t.hue,t.chroma,70):t}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class F{static fromPalette(t){return new F(t.name??"",t.palette,t.tone,t.isBackground??!1,t.background,t.secondBackground,t.contrastCurve,t.toneDeltaPair)}constructor(t,a,o,s,l,u,g,d){if(this.name=t,this.palette=a,this.tone=o,this.isBackground=s,this.background=l,this.secondBackground=u,this.contrastCurve=g,this.toneDeltaPair=d,this.hctCache=new Map,!l&&u)throw new Error(`Color ${t} has secondBackgrounddefined, but background is not defined.`);if(!l&&g)throw new Error(`Color ${t} has contrastCurvedefined, but background is not defined.`);if(l&&!g)throw new Error(`Color ${t} has backgrounddefined, but contrastCurve is not defined.`)}getArgb(t){return this.getHct(t).toInt()}getHct(t){const a=this.hctCache.get(t);if(a!=null)return a;const o=this.getTone(t),s=this.palette(t).getHct(o);return this.hctCache.size>4&&this.hctCache.clear(),this.hctCache.set(t,s),s}getTone(t){const a=t.contrastLevel<0;if(this.toneDeltaPair){const o=this.toneDeltaPair(t),s=o.roleA,l=o.roleB,u=o.delta,g=o.polarity,d=o.stayTogether,_=this.background(t).getTone(t),x=g==="nearer"||g==="lighter"&&!t.isDark||g==="darker"&&t.isDark,O=x?s:l,B=x?l:s,L=this.name===O.name,w=t.isDark?1:-1,R=O.contrastCurve.getContrast(t.contrastLevel),or=B.contrastCurve.getContrast(t.contrastLevel),tr=O.tone(t);let G=gr.ratioOfTones(_,tr)>=R?tr:F.foregroundTone(_,R);const ar=B.tone(t);let Y=gr.ratioOfTones(_,ar)>=or?ar:F.foregroundTone(_,or);return a&&(G=F.foregroundTone(_,R),Y=F.foregroundTone(_,or)),(Y-G)*w>=u||(Y=Ct(0,100,G+u*w),(Y-G)*w>=u||(G=Ct(0,100,Y-u*w))),50<=G&&G<60?w>0?(G=60,Y=Math.max(Y,G+u*w)):(G=49,Y=Math.min(Y,G+u*w)):50<=Y&&Y<60&&(d?w>0?(G=60,Y=Math.max(Y,G+u*w)):(G=49,Y=Math.min(Y,G+u*w)):w>0?Y=60:Y=49),L?G:Y}else{let o=this.tone(t);if(this.background==null)return o;const s=this.background(t).getTone(t),l=this.contrastCurve.getContrast(t.contrastLevel);if(gr.ratioOfTones(s,o)>=l||(o=F.foregroundTone(s,l)),a&&(o=F.foregroundTone(s,l)),this.isBackground&&50<=o&&o<60&&(gr.ratioOfTones(49,s)>=l?o=49:o=60),this.secondBackground){const[u,g]=[this.background,this.secondBackground],[d,k]=[u(t).getTone(t),g(t).getTone(t)],[_,x]=[Math.max(d,k),Math.min(d,k)];if(gr.ratioOfTones(_,o)>=l&&gr.ratioOfTones(x,o)>=l)return o;const O=gr.lighter(_,l),B=gr.darker(x,l),L=[];return O!==-1&&L.push(O),B!==-1&&L.push(B),F.tonePrefersLightForeground(d)||F.tonePrefersLightForeground(k)?O<0?100:O:L.length===1?L[0]:B<0?0:B}return o}}static foregroundTone(t,a){const o=gr.lighterUnsafe(t,a),s=gr.darkerUnsafe(t,a),l=gr.ratioOfTones(o,t),u=gr.ratioOfTones(s,t);if(F.tonePrefersLightForeground(t)){const d=Math.abs(l-u)<.1&&l=a||l>=u||d?o:s}else return u>=a||u>=l?s:o}static tonePrefersLightForeground(t){return Math.round(t)<60}static toneAllowsLightForeground(t){return Math.round(t)<=49}static enableLightForeground(t){return F.tonePrefersLightForeground(t)&&!F.toneAllowsLightForeground(t)?49:t}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */var dt;(function(r){r[r.MONOCHROME=0]="MONOCHROME",r[r.NEUTRAL=1]="NEUTRAL",r[r.TONAL_SPOT=2]="TONAL_SPOT",r[r.VIBRANT=3]="VIBRANT",r[r.EXPRESSIVE=4]="EXPRESSIVE",r[r.FIDELITY=5]="FIDELITY",r[r.CONTENT=6]="CONTENT",r[r.RAINBOW=7]="RAINBOW",r[r.FRUIT_SALAD=8]="FRUIT_SALAD"})(dt||(dt={}));/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class j{constructor(t,a,o,s){this.low=t,this.normal=a,this.medium=o,this.high=s}getContrast(t){return t<=-1?this.low:t<0?vt(this.low,this.normal,(t- -1)/1):t<.5?vt(this.normal,this.medium,(t-0)/.5):t<1?vt(this.medium,this.high,(t-.5)/.5):this.high}}/** + * @license + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */class yr{constructor(t,a,o,s,l){this.roleA=t,this.roleB=a,this.delta=o,this.polarity=s,this.stayTogether=l}}/** + * @license + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function Qr(r){return r.variant===dt.FIDELITY||r.variant===dt.CONTENT}function lr(r){return r.variant===dt.MONOCHROME}function r0(r,t,a,o){let s=a,l=Er.from(r,t,a);if(l.chromag.chroma||Math.abs(g.chroma-t)<.4)break;const d=Math.abs(g.chroma-t),k=Math.abs(l.chroma-t);dr.primaryPalette,tone:r=>r.primaryPalette.keyColor.tone}),m.secondaryPaletteKeyColor=F.fromPalette({name:"secondary_palette_key_color",palette:r=>r.secondaryPalette,tone:r=>r.secondaryPalette.keyColor.tone}),m.tertiaryPaletteKeyColor=F.fromPalette({name:"tertiary_palette_key_color",palette:r=>r.tertiaryPalette,tone:r=>r.tertiaryPalette.keyColor.tone}),m.neutralPaletteKeyColor=F.fromPalette({name:"neutral_palette_key_color",palette:r=>r.neutralPalette,tone:r=>r.neutralPalette.keyColor.tone}),m.neutralVariantPaletteKeyColor=F.fromPalette({name:"neutral_variant_palette_key_color",palette:r=>r.neutralVariantPalette,tone:r=>r.neutralVariantPalette.keyColor.tone}),m.background=F.fromPalette({name:"background",palette:r=>r.neutralPalette,tone:r=>r.isDark?6:98,isBackground:!0}),m.onBackground=F.fromPalette({name:"on_background",palette:r=>r.neutralPalette,tone:r=>r.isDark?90:10,background:r=>m.background,contrastCurve:new j(3,3,4.5,7)}),m.surface=F.fromPalette({name:"surface",palette:r=>r.neutralPalette,tone:r=>r.isDark?6:98,isBackground:!0}),m.surfaceDim=F.fromPalette({name:"surface_dim",palette:r=>r.neutralPalette,tone:r=>r.isDark?6:87,isBackground:!0}),m.surfaceBright=F.fromPalette({name:"surface_bright",palette:r=>r.neutralPalette,tone:r=>r.isDark?24:98,isBackground:!0}),m.surfaceContainerLowest=F.fromPalette({name:"surface_container_lowest",palette:r=>r.neutralPalette,tone:r=>r.isDark?4:100,isBackground:!0}),m.surfaceContainerLow=F.fromPalette({name:"surface_container_low",palette:r=>r.neutralPalette,tone:r=>r.isDark?10:96,isBackground:!0}),m.surfaceContainer=F.fromPalette({name:"surface_container",palette:r=>r.neutralPalette,tone:r=>r.isDark?12:94,isBackground:!0}),m.surfaceContainerHigh=F.fromPalette({name:"surface_container_high",palette:r=>r.neutralPalette,tone:r=>r.isDark?17:92,isBackground:!0}),m.surfaceContainerHighest=F.fromPalette({name:"surface_container_highest",palette:r=>r.neutralPalette,tone:r=>r.isDark?22:90,isBackground:!0}),m.onSurface=F.fromPalette({name:"on_surface",palette:r=>r.neutralPalette,tone:r=>r.isDark?90:10,background:r=>m.highestSurface(r),contrastCurve:new j(4.5,7,11,21)}),m.surfaceVariant=F.fromPalette({name:"surface_variant",palette:r=>r.neutralVariantPalette,tone:r=>r.isDark?30:90,isBackground:!0}),m.onSurfaceVariant=F.fromPalette({name:"on_surface_variant",palette:r=>r.neutralVariantPalette,tone:r=>r.isDark?80:30,background:r=>m.highestSurface(r),contrastCurve:new j(3,4.5,7,11)}),m.inverseSurface=F.fromPalette({name:"inverse_surface",palette:r=>r.neutralPalette,tone:r=>r.isDark?90:20}),m.inverseOnSurface=F.fromPalette({name:"inverse_on_surface",palette:r=>r.neutralPalette,tone:r=>r.isDark?20:95,background:r=>m.inverseSurface,contrastCurve:new j(4.5,7,11,21)}),m.outline=F.fromPalette({name:"outline",palette:r=>r.neutralVariantPalette,tone:r=>r.isDark?60:50,background:r=>m.highestSurface(r),contrastCurve:new j(1.5,3,4.5,7)}),m.outlineVariant=F.fromPalette({name:"outline_variant",palette:r=>r.neutralVariantPalette,tone:r=>r.isDark?30:80,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7)}),m.shadow=F.fromPalette({name:"shadow",palette:r=>r.neutralPalette,tone:r=>0}),m.scrim=F.fromPalette({name:"scrim",palette:r=>r.neutralPalette,tone:r=>0}),m.surfaceTint=F.fromPalette({name:"surface_tint",palette:r=>r.primaryPalette,tone:r=>r.isDark?80:40,isBackground:!0}),m.primary=F.fromPalette({name:"primary",palette:r=>r.primaryPalette,tone:r=>lr(r)?r.isDark?100:0:r.isDark?80:40,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(3,4.5,7,11),toneDeltaPair:r=>new yr(m.primaryContainer,m.primary,15,"nearer",!1)}),m.onPrimary=F.fromPalette({name:"on_primary",palette:r=>r.primaryPalette,tone:r=>lr(r)?r.isDark?10:90:r.isDark?20:100,background:r=>m.primary,contrastCurve:new j(4.5,7,11,21)}),m.primaryContainer=F.fromPalette({name:"primary_container",palette:r=>r.primaryPalette,tone:r=>Qr(r)?ee(r.sourceColorHct,r):lr(r)?r.isDark?85:25:r.isDark?30:90,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.primaryContainer,m.primary,15,"nearer",!1)}),m.onPrimaryContainer=F.fromPalette({name:"on_primary_container",palette:r=>r.primaryPalette,tone:r=>Qr(r)?F.foregroundTone(m.primaryContainer.tone(r),4.5):lr(r)?r.isDark?0:100:r.isDark?90:10,background:r=>m.primaryContainer,contrastCurve:new j(4.5,7,11,21)}),m.inversePrimary=F.fromPalette({name:"inverse_primary",palette:r=>r.primaryPalette,tone:r=>r.isDark?40:80,background:r=>m.inverseSurface,contrastCurve:new j(3,4.5,7,11)}),m.secondary=F.fromPalette({name:"secondary",palette:r=>r.secondaryPalette,tone:r=>r.isDark?80:40,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(3,4.5,7,11),toneDeltaPair:r=>new yr(m.secondaryContainer,m.secondary,15,"nearer",!1)}),m.onSecondary=F.fromPalette({name:"on_secondary",palette:r=>r.secondaryPalette,tone:r=>lr(r)?r.isDark?10:100:r.isDark?20:100,background:r=>m.secondary,contrastCurve:new j(4.5,7,11,21)}),m.secondaryContainer=F.fromPalette({name:"secondary_container",palette:r=>r.secondaryPalette,tone:r=>{const t=r.isDark?30:90;if(lr(r))return r.isDark?30:85;if(!Qr(r))return t;let a=r0(r.secondaryPalette.hue,r.secondaryPalette.chroma,t,!r.isDark);return a=ee(r.secondaryPalette.getHct(a),r),a},isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.secondaryContainer,m.secondary,15,"nearer",!1)}),m.onSecondaryContainer=F.fromPalette({name:"on_secondary_container",palette:r=>r.secondaryPalette,tone:r=>Qr(r)?F.foregroundTone(m.secondaryContainer.tone(r),4.5):r.isDark?90:10,background:r=>m.secondaryContainer,contrastCurve:new j(4.5,7,11,21)}),m.tertiary=F.fromPalette({name:"tertiary",palette:r=>r.tertiaryPalette,tone:r=>lr(r)?r.isDark?90:25:r.isDark?80:40,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(3,4.5,7,11),toneDeltaPair:r=>new yr(m.tertiaryContainer,m.tertiary,15,"nearer",!1)}),m.onTertiary=F.fromPalette({name:"on_tertiary",palette:r=>r.tertiaryPalette,tone:r=>lr(r)?r.isDark?10:90:r.isDark?20:100,background:r=>m.tertiary,contrastCurve:new j(4.5,7,11,21)}),m.tertiaryContainer=F.fromPalette({name:"tertiary_container",palette:r=>r.tertiaryPalette,tone:r=>{if(lr(r))return r.isDark?60:49;if(!Qr(r))return r.isDark?30:90;const t=ee(r.tertiaryPalette.getHct(r.sourceColorHct.tone),r),a=r.tertiaryPalette.getHct(t);return te.fixIfDisliked(a).tone},isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.tertiaryContainer,m.tertiary,15,"nearer",!1)}),m.onTertiaryContainer=F.fromPalette({name:"on_tertiary_container",palette:r=>r.tertiaryPalette,tone:r=>lr(r)?r.isDark?0:100:Qr(r)?F.foregroundTone(m.tertiaryContainer.tone(r),4.5):r.isDark?90:10,background:r=>m.tertiaryContainer,contrastCurve:new j(4.5,7,11,21)}),m.error=F.fromPalette({name:"error",palette:r=>r.errorPalette,tone:r=>r.isDark?80:40,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(3,4.5,7,11),toneDeltaPair:r=>new yr(m.errorContainer,m.error,15,"nearer",!1)}),m.onError=F.fromPalette({name:"on_error",palette:r=>r.errorPalette,tone:r=>r.isDark?20:100,background:r=>m.error,contrastCurve:new j(4.5,7,11,21)}),m.errorContainer=F.fromPalette({name:"error_container",palette:r=>r.errorPalette,tone:r=>r.isDark?30:90,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.errorContainer,m.error,15,"nearer",!1)}),m.onErrorContainer=F.fromPalette({name:"on_error_container",palette:r=>r.errorPalette,tone:r=>r.isDark?90:10,background:r=>m.errorContainer,contrastCurve:new j(4.5,7,11,21)}),m.primaryFixed=F.fromPalette({name:"primary_fixed",palette:r=>r.primaryPalette,tone:r=>lr(r)?40:90,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.primaryFixed,m.primaryFixedDim,10,"lighter",!0)}),m.primaryFixedDim=F.fromPalette({name:"primary_fixed_dim",palette:r=>r.primaryPalette,tone:r=>lr(r)?30:80,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.primaryFixed,m.primaryFixedDim,10,"lighter",!0)}),m.onPrimaryFixed=F.fromPalette({name:"on_primary_fixed",palette:r=>r.primaryPalette,tone:r=>lr(r)?100:10,background:r=>m.primaryFixedDim,secondBackground:r=>m.primaryFixed,contrastCurve:new j(4.5,7,11,21)}),m.onPrimaryFixedVariant=F.fromPalette({name:"on_primary_fixed_variant",palette:r=>r.primaryPalette,tone:r=>lr(r)?90:30,background:r=>m.primaryFixedDim,secondBackground:r=>m.primaryFixed,contrastCurve:new j(3,4.5,7,11)}),m.secondaryFixed=F.fromPalette({name:"secondary_fixed",palette:r=>r.secondaryPalette,tone:r=>lr(r)?80:90,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.secondaryFixed,m.secondaryFixedDim,10,"lighter",!0)}),m.secondaryFixedDim=F.fromPalette({name:"secondary_fixed_dim",palette:r=>r.secondaryPalette,tone:r=>lr(r)?70:80,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.secondaryFixed,m.secondaryFixedDim,10,"lighter",!0)}),m.onSecondaryFixed=F.fromPalette({name:"on_secondary_fixed",palette:r=>r.secondaryPalette,tone:r=>10,background:r=>m.secondaryFixedDim,secondBackground:r=>m.secondaryFixed,contrastCurve:new j(4.5,7,11,21)}),m.onSecondaryFixedVariant=F.fromPalette({name:"on_secondary_fixed_variant",palette:r=>r.secondaryPalette,tone:r=>lr(r)?25:30,background:r=>m.secondaryFixedDim,secondBackground:r=>m.secondaryFixed,contrastCurve:new j(3,4.5,7,11)}),m.tertiaryFixed=F.fromPalette({name:"tertiary_fixed",palette:r=>r.tertiaryPalette,tone:r=>lr(r)?40:90,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.tertiaryFixed,m.tertiaryFixedDim,10,"lighter",!0)}),m.tertiaryFixedDim=F.fromPalette({name:"tertiary_fixed_dim",palette:r=>r.tertiaryPalette,tone:r=>lr(r)?30:80,isBackground:!0,background:r=>m.highestSurface(r),contrastCurve:new j(1,1,3,7),toneDeltaPair:r=>new yr(m.tertiaryFixed,m.tertiaryFixedDim,10,"lighter",!0)}),m.onTertiaryFixed=F.fromPalette({name:"on_tertiary_fixed",palette:r=>r.tertiaryPalette,tone:r=>lr(r)?100:10,background:r=>m.tertiaryFixedDim,secondBackground:r=>m.tertiaryFixed,contrastCurve:new j(4.5,7,11,21)}),m.onTertiaryFixedVariant=F.fromPalette({name:"on_tertiary_fixed_variant",palette:r=>r.tertiaryPalette,tone:r=>lr(r)?90:30,background:r=>m.tertiaryFixedDim,secondBackground:r=>m.tertiaryFixed,contrastCurve:new j(3,4.5,7,11)});/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */function e0(r){const t=Ve(r),a=je(r),o=He(r),s=[t.toString(16),a.toString(16),o.toString(16)];for(const[l,u]of s.entries())u.length===1&&(s[l]="0"+u);return"#"+s.join("")}function Ze(r){r=r.replace("#","");const t=r.length===3,a=r.length===6,o=r.length===8;if(!t&&!a&&!o)throw new Error("unexpected hex "+r);let s=0,l=0,u=0;return t?(s=Or(r.slice(0,1).repeat(2)),l=Or(r.slice(1,2).repeat(2)),u=Or(r.slice(2,3).repeat(2))):a?(s=Or(r.slice(0,2)),l=Or(r.slice(2,4)),u=Or(r.slice(4,6))):o&&(s=Or(r.slice(2,4)),l=Or(r.slice(4,6)),u=Or(r.slice(6,8))),(255<<24|(s&255)<<16|(l&255)<<8|u&255)>>>0}function Or(r){return parseInt(r,16)}var a0=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ae(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Qe={exports:{}};/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */(function(r,t){(function(a,o){r.exports=o()})(a0,function(){for(var a=function(e,n,c){return n===void 0&&(n=0),c===void 0&&(c=1),ec?c:e},o=a,s=function(e){e._clipped=!1,e._unclipped=e.slice(0);for(var n=0;n<=3;n++)n<3?((e[n]<0||e[n]>255)&&(e._clipped=!0),e[n]=o(e[n],0,255)):n===3&&(e[n]=o(e[n],0,1));return e},l={},u=0,g=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];u=3?Array.prototype.slice.call(e):_(e[0])=="object"&&n?n.split("").filter(function(c){return e[0][c]!==void 0}).map(function(c){return e[0][c]}):e[0]},O=k,B=function(e){if(e.length<2)return null;var n=e.length-1;return O(e[n])=="string"?e[n].toLowerCase():null},L=Math.PI,w={clip_rgb:s,limit:a,type:k,unpack:x,last:B,PI:L,TWOPI:L*2,PITHIRD:L/3,DEG2RAD:L/180,RAD2DEG:180/L},R={format:{},autodetect:[]},or=w.last,tr=w.clip_rgb,G=w.type,ar=R,Y=function(){for(var n=[],c=arguments.length;c--;)n[c]=arguments[c];var i=this;if(G(n[0])==="object"&&n[0].constructor&&n[0].constructor===this.constructor)return n[0];var h=or(n),v=!1;if(!h){v=!0,ar.sorted||(ar.autodetect=ar.autodetect.sort(function(M,C){return C.p-M.p}),ar.sorted=!0);for(var f=0,b=ar.autodetect;f4?e[4]:1;return v===1?[0,0,0,f]:[c>=1?0:255*(1-c)*(1-v),i>=1?0:255*(1-i)*(1-v),h>=1?0:255*(1-h)*(1-v),f]},rt=_r,tt=S,Tr=I,jr=R,kt=w.unpack,wt=w.type,Mt=Nr;Tr.prototype.cmyk=function(){return Mt(this._rgb)},tt.cmyk=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Tr,[null].concat(e,["cmyk"])))},jr.format.cmyk=rt,jr.autodetect.push({p:2,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=kt(e,"cmyk"),wt(e)==="array"&&e.length===4)return"cmyk"}});var Pt=w.unpack,et=w.last,at=function(e){return Math.round(e*100)/100},zt=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=Pt(e,"hsla"),i=et(e)||"lsa";return c[0]=at(c[0]||0),c[1]=at(c[1]*100)+"%",c[2]=at(c[2]*100)+"%",i==="hsla"||c.length>3&&c[3]<1?(c[3]=c.length>3?c[3]:1,i="hsla"):c.length=3,i+"("+c.join(",")+")"},he=zt,ge=w.unpack,qt=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];e=ge(e,"rgba");var c=e[0],i=e[1],h=e[2];c/=255,i/=255,h/=255;var v=Math.min(c,i,h),f=Math.max(c,i,h),b=(f+v)/2,p,y;return f===v?(p=0,y=Number.NaN):p=b<.5?(f-v)/(f+v):(f-v)/(2-f-v),c==f?y=(i-h)/(f-v):i==f?y=2+(h-c)/(f-v):h==f&&(y=4+(c-i)/(f-v)),y*=60,y<0&&(y+=360),e.length>3&&e[3]!==void 0?[y,p,b,e[3]]:[y,p,b]},Gt=qt,ve=w.unpack,z0=w.last,q0=he,G0=Gt,de=Math.round,U0=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=ve(e,"rgba"),i=z0(e)||"rgb";return i.substr(0,3)=="hsl"?q0(G0(c),i):(c[0]=de(c[0]),c[1]=de(c[1]),c[2]=de(c[2]),(i==="rgba"||c.length>3&&c[3]<1)&&(c[3]=c.length>3?c[3]:1,i="rgba"),i+"("+c.slice(0,i==="rgb"?3:4).join(",")+")")},Y0=U0,V0=w.unpack,be=Math.round,j0=function(){for(var e,n=[],c=arguments.length;c--;)n[c]=arguments[c];n=V0(n,"hsl");var i=n[0],h=n[1],v=n[2],f,b,p;if(h===0)f=b=p=v*255;else{var y=[0,0,0],M=[0,0,0],C=v<.5?v*(1+h):v+h-v*h,P=2*v-C,D=i/360;y[0]=D+1/3,y[1]=D,y[2]=D-1/3;for(var T=0;T<3;T++)y[T]<0&&(y[T]+=1),y[T]>1&&(y[T]-=1),6*y[T]<1?M[T]=P+(C-P)*6*y[T]:2*y[T]<1?M[T]=C:3*y[T]<2?M[T]=P+(C-P)*(2/3-y[T])*6:M[T]=P;e=[be(M[0]*255),be(M[1]*255),be(M[2]*255)],f=e[0],b=e[1],p=e[2]}return n.length>3?[f,b,p,n[3]]:[f,b,p,1]},ba=j0,pa=ba,ma=R,ya=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,ka=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,wa=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Ma=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Pa=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,_a=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,$a=Math.round,Fa=function(e){e=e.toLowerCase().trim();var n;if(ma.format.named)try{return ma.format.named(e)}catch{}if(n=e.match(ya)){for(var c=n.slice(1,4),i=0;i<3;i++)c[i]=+c[i];return c[3]=1,c}if(n=e.match(ka)){for(var h=n.slice(1,5),v=0;v<4;v++)h[v]=+h[v];return h}if(n=e.match(wa)){for(var f=n.slice(1,4),b=0;b<3;b++)f[b]=$a(f[b]*2.55);return f[3]=1,f}if(n=e.match(Ma)){for(var p=n.slice(1,5),y=0;y<3;y++)p[y]=$a(p[y]*2.55);return p[3]=+p[3],p}if(n=e.match(Pa)){var M=n.slice(1,4);M[1]*=.01,M[2]*=.01;var C=pa(M);return C[3]=1,C}if(n=e.match(_a)){var P=n.slice(1,4);P[1]*=.01,P[2]*=.01;var D=pa(P);return D[3]=+n[4],D}};Fa.test=function(e){return ya.test(e)||ka.test(e)||wa.test(e)||Ma.test(e)||Pa.test(e)||_a.test(e)};var H0=Fa,W0=S,Ca=I,xa=R,J0=w.type,Z0=Y0,Ta=H0;Ca.prototype.css=function(e){return Z0(this._rgb,e)},W0.css=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Ca,[null].concat(e,["css"])))},xa.format.css=Ta,xa.autodetect.push({p:5,test:function(e){for(var n=[],c=arguments.length-1;c-- >0;)n[c]=arguments[c+1];if(!n.length&&J0(e)==="string"&&Ta.test(e))return"css"}});var Da=I,Q0=S,X0=R,K0=w.unpack;X0.format.gl=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=K0(e,"rgba");return c[0]*=255,c[1]*=255,c[2]*=255,c},Q0.gl=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Da,[null].concat(e,["gl"])))},Da.prototype.gl=function(){var e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]};var ro=w.unpack,to=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=ro(e,"rgb"),i=c[0],h=c[1],v=c[2],f=Math.min(i,h,v),b=Math.max(i,h,v),p=b-f,y=p*100/255,M=f/(255-p)*100,C;return p===0?C=Number.NaN:(i===b&&(C=(h-v)/p),h===b&&(C=2+(v-i)/p),v===b&&(C=4+(i-h)/p),C*=60,C<0&&(C+=360)),[C,y,M]},eo=to,ao=w.unpack,no=Math.floor,oo=function(){for(var e,n,c,i,h,v,f=[],b=arguments.length;b--;)f[b]=arguments[b];f=ao(f,"hcg");var p=f[0],y=f[1],M=f[2],C,P,D;M=M*255;var T=y*255;if(y===0)C=P=D=M;else{p===360&&(p=0),p>360&&(p-=360),p<0&&(p+=360),p/=60;var z=no(p),V=p-z,W=M*(1-y),Q=W+T*(1-V),pr=W+T*V,br=W+T;switch(z){case 0:e=[br,pr,W],C=e[0],P=e[1],D=e[2];break;case 1:n=[Q,br,W],C=n[0],P=n[1],D=n[2];break;case 2:c=[W,br,pr],C=c[0],P=c[1],D=c[2];break;case 3:i=[W,Q,br],C=i[0],P=i[1],D=i[2];break;case 4:h=[pr,W,br],C=h[0],P=h[1],D=h[2];break;case 5:v=[br,W,Q],C=v[0],P=v[1],D=v[2];break}}return[C,P,D,f.length>3?f[3]:1]},so=oo,co=w.unpack,lo=w.type,io=S,Aa=I,Ia=R,uo=eo;Aa.prototype.hcg=function(){return uo(this._rgb)},io.hcg=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Aa,[null].concat(e,["hcg"])))},Ia.format.hcg=so,Ia.autodetect.push({p:1,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=co(e,"hcg"),lo(e)==="array"&&e.length===3)return"hcg"}});var fo=w.unpack,ho=w.last,Ut=Math.round,go=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=fo(e,"rgba"),i=c[0],h=c[1],v=c[2],f=c[3],b=ho(e)||"auto";f===void 0&&(f=1),b==="auto"&&(b=f<1?"rgba":"rgb"),i=Ut(i),h=Ut(h),v=Ut(v);var p=i<<16|h<<8|v,y="000000"+p.toString(16);y=y.substr(y.length-6);var M="0"+Ut(f*255).toString(16);switch(M=M.substr(M.length-2),b.toLowerCase()){case"rgba":return"#"+y+M;case"argb":return"#"+M+y;default:return"#"+y}},Ea=go,vo=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,bo=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,po=function(e){if(e.match(vo)){(e.length===4||e.length===7)&&(e=e.substr(1)),e.length===3&&(e=e.split(""),e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var n=parseInt(e,16),c=n>>16,i=n>>8&255,h=n&255;return[c,i,h,1]}if(e.match(bo)){(e.length===5||e.length===9)&&(e=e.substr(1)),e.length===4&&(e=e.split(""),e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);var v=parseInt(e,16),f=v>>24&255,b=v>>16&255,p=v>>8&255,y=Math.round((v&255)/255*100)/100;return[f,b,p,y]}throw new Error("unknown hex color: "+e)},Na=po,mo=S,Oa=I,yo=w.type,Ra=R,ko=Ea;Oa.prototype.hex=function(e){return ko(this._rgb,e)},mo.hex=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Oa,[null].concat(e,["hex"])))},Ra.format.hex=Na,Ra.autodetect.push({p:4,test:function(e){for(var n=[],c=arguments.length-1;c-- >0;)n[c]=arguments[c+1];if(!n.length&&yo(e)==="string"&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});var wo=w.unpack,La=w.TWOPI,Mo=Math.min,Po=Math.sqrt,_o=Math.acos,$o=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=wo(e,"rgb"),i=c[0],h=c[1],v=c[2];i/=255,h/=255,v/=255;var f,b=Mo(i,h,v),p=(i+h+v)/3,y=p>0?1-b/p:0;return y===0?f=NaN:(f=(i-h+(i-v))/2,f/=Po((i-h)*(i-h)+(i-v)*(h-v)),f=_o(f),v>h&&(f=La-f),f/=La),[f*360,y,p]},Fo=$o,Co=w.unpack,pe=w.limit,nt=w.TWOPI,me=w.PITHIRD,ot=Math.cos,xo=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];e=Co(e,"hsi");var c=e[0],i=e[1],h=e[2],v,f,b;return isNaN(c)&&(c=0),isNaN(i)&&(i=0),c>360&&(c-=360),c<0&&(c+=360),c/=360,c<1/3?(b=(1-i)/3,v=(1+i*ot(nt*c)/ot(me-nt*c))/3,f=1-(b+v)):c<2/3?(c-=1/3,v=(1-i)/3,f=(1+i*ot(nt*c)/ot(me-nt*c))/3,b=1-(v+f)):(c-=2/3,f=(1-i)/3,b=(1+i*ot(nt*c)/ot(me-nt*c))/3,v=1-(f+b)),v=pe(h*v*3),f=pe(h*f*3),b=pe(h*b*3),[v*255,f*255,b*255,e.length>3?e[3]:1]},To=xo,Do=w.unpack,Ao=w.type,Io=S,Ba=I,Sa=R,Eo=Fo;Ba.prototype.hsi=function(){return Eo(this._rgb)},Io.hsi=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Ba,[null].concat(e,["hsi"])))},Sa.format.hsi=To,Sa.autodetect.push({p:2,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=Do(e,"hsi"),Ao(e)==="array"&&e.length===3)return"hsi"}});var No=w.unpack,Oo=w.type,Ro=S,za=I,qa=R,Lo=Gt;za.prototype.hsl=function(){return Lo(this._rgb)},Ro.hsl=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(za,[null].concat(e,["hsl"])))},qa.format.hsl=ba,qa.autodetect.push({p:2,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=No(e,"hsl"),Oo(e)==="array"&&e.length===3)return"hsl"}});var Bo=w.unpack,So=Math.min,zo=Math.max,qo=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];e=Bo(e,"rgb");var c=e[0],i=e[1],h=e[2],v=So(c,i,h),f=zo(c,i,h),b=f-v,p,y,M;return M=f/255,f===0?(p=Number.NaN,y=0):(y=b/f,c===f&&(p=(i-h)/b),i===f&&(p=2+(h-c)/b),h===f&&(p=4+(c-i)/b),p*=60,p<0&&(p+=360)),[p,y,M]},Go=qo,Uo=w.unpack,Yo=Math.floor,Vo=function(){for(var e,n,c,i,h,v,f=[],b=arguments.length;b--;)f[b]=arguments[b];f=Uo(f,"hsv");var p=f[0],y=f[1],M=f[2],C,P,D;if(M*=255,y===0)C=P=D=M;else{p===360&&(p=0),p>360&&(p-=360),p<0&&(p+=360),p/=60;var T=Yo(p),z=p-T,V=M*(1-y),W=M*(1-y*z),Q=M*(1-y*(1-z));switch(T){case 0:e=[M,Q,V],C=e[0],P=e[1],D=e[2];break;case 1:n=[W,M,V],C=n[0],P=n[1],D=n[2];break;case 2:c=[V,M,Q],C=c[0],P=c[1],D=c[2];break;case 3:i=[V,W,M],C=i[0],P=i[1],D=i[2];break;case 4:h=[Q,V,M],C=h[0],P=h[1],D=h[2];break;case 5:v=[M,V,W],C=v[0],P=v[1],D=v[2];break}}return[C,P,D,f.length>3?f[3]:1]},jo=Vo,Ho=w.unpack,Wo=w.type,Jo=S,Ga=I,Ua=R,Zo=Go;Ga.prototype.hsv=function(){return Zo(this._rgb)},Jo.hsv=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Ga,[null].concat(e,["hsv"])))},Ua.format.hsv=jo,Ua.autodetect.push({p:2,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=Ho(e,"hsv"),Wo(e)==="array"&&e.length===3)return"hsv"}});var Yt={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},st=Yt,Qo=w.unpack,Ya=Math.pow,Xo=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=Qo(e,"rgb"),i=c[0],h=c[1],v=c[2],f=Ko(i,h,v),b=f[0],p=f[1],y=f[2],M=116*p-16;return[M<0?0:M,500*(b-p),200*(p-y)]},ye=function(e){return(e/=255)<=.04045?e/12.92:Ya((e+.055)/1.055,2.4)},ke=function(e){return e>st.t3?Ya(e,1/3):e/st.t2+st.t0},Ko=function(e,n,c){e=ye(e),n=ye(n),c=ye(c);var i=ke((.4124564*e+.3575761*n+.1804375*c)/st.Xn),h=ke((.2126729*e+.7151522*n+.072175*c)/st.Yn),v=ke((.0193339*e+.119192*n+.9503041*c)/st.Zn);return[i,h,v]},Va=Xo,ct=Yt,rs=w.unpack,ts=Math.pow,es=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];e=rs(e,"lab");var c=e[0],i=e[1],h=e[2],v,f,b,p,y,M;return f=(c+16)/116,v=isNaN(i)?f:f+i/500,b=isNaN(h)?f:f-h/200,f=ct.Yn*Me(f),v=ct.Xn*Me(v),b=ct.Zn*Me(b),p=we(3.2404542*v-1.5371385*f-.4985314*b),y=we(-.969266*v+1.8760108*f+.041556*b),M=we(.0556434*v-.2040259*f+1.0572252*b),[p,y,M,e.length>3?e[3]:1]},we=function(e){return 255*(e<=.00304?12.92*e:1.055*ts(e,1/2.4)-.055)},Me=function(e){return e>ct.t1?e*e*e:ct.t2*(e-ct.t0)},ja=es,as=w.unpack,ns=w.type,os=S,Ha=I,Wa=R,ss=Va;Ha.prototype.lab=function(){return ss(this._rgb)},os.lab=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Ha,[null].concat(e,["lab"])))},Wa.format.lab=ja,Wa.autodetect.push({p:2,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=as(e,"lab"),ns(e)==="array"&&e.length===3)return"lab"}});var cs=w.unpack,ls=w.RAD2DEG,is=Math.sqrt,us=Math.atan2,fs=Math.round,hs=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=cs(e,"lab"),i=c[0],h=c[1],v=c[2],f=is(h*h+v*v),b=(us(v,h)*ls+360)%360;return fs(f*1e4)===0&&(b=Number.NaN),[i,f,b]},Ja=hs,gs=w.unpack,vs=Va,ds=Ja,bs=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=gs(e,"rgb"),i=c[0],h=c[1],v=c[2],f=vs(i,h,v),b=f[0],p=f[1],y=f[2];return ds(b,p,y)},ps=bs,ms=w.unpack,ys=w.DEG2RAD,ks=Math.sin,ws=Math.cos,Ms=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=ms(e,"lch"),i=c[0],h=c[1],v=c[2];return isNaN(v)&&(v=0),v=v*ys,[i,ws(v)*h,ks(v)*h]},Za=Ms,Ps=w.unpack,_s=Za,$s=ja,Fs=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];e=Ps(e,"lch");var c=e[0],i=e[1],h=e[2],v=_s(c,i,h),f=v[0],b=v[1],p=v[2],y=$s(f,b,p),M=y[0],C=y[1],P=y[2];return[M,C,P,e.length>3?e[3]:1]},Qa=Fs,Cs=w.unpack,xs=Qa,Ts=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=Cs(e,"hcl").reverse();return xs.apply(void 0,c)},Ds=Ts,As=w.unpack,Is=w.type,Xa=S,Vt=I,Pe=R,Ka=ps;Vt.prototype.lch=function(){return Ka(this._rgb)},Vt.prototype.hcl=function(){return Ka(this._rgb).reverse()},Xa.lch=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Vt,[null].concat(e,["lch"])))},Xa.hcl=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Vt,[null].concat(e,["hcl"])))},Pe.format.lch=Qa,Pe.format.hcl=Ds,["lch","hcl"].forEach(function(e){return Pe.autodetect.push({p:2,test:function(){for(var n=[],c=arguments.length;c--;)n[c]=arguments[c];if(n=As(n,e),Is(n)==="array"&&n.length===3)return e}})});var Es={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},rn=Es,Ns=I,tn=R,Os=w.type,_t=rn,Rs=Na,Ls=Ea;Ns.prototype.name=function(){for(var e=Ls(this._rgb,"rgb"),n=0,c=Object.keys(_t);n0;)n[c]=arguments[c+1];if(!n.length&&Os(e)==="string"&&_t[e.toLowerCase()])return"named"}});var Bs=w.unpack,Ss=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=Bs(e,"rgb"),i=c[0],h=c[1],v=c[2];return(i<<16)+(h<<8)+v},zs=Ss,qs=w.type,Gs=function(e){if(qs(e)=="number"&&e>=0&&e<=16777215){var n=e>>16,c=e>>8&255,i=e&255;return[n,c,i,1]}throw new Error("unknown num color: "+e)},Us=Gs,Ys=S,en=I,an=R,Vs=w.type,js=zs;en.prototype.num=function(){return js(this._rgb)},Ys.num=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(en,[null].concat(e,["num"])))},an.format.num=Us,an.autodetect.push({p:5,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e.length===1&&Vs(e[0])==="number"&&e[0]>=0&&e[0]<=16777215)return"num"}});var Hs=S,_e=I,nn=R,on=w.unpack,sn=w.type,cn=Math.round;_e.prototype.rgb=function(e){return e===void 0&&(e=!0),e===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(cn)},_e.prototype.rgba=function(e){return e===void 0&&(e=!0),this._rgb.slice(0,4).map(function(n,c){return c<3?e===!1?n:cn(n):n})},Hs.rgb=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(_e,[null].concat(e,["rgb"])))},nn.format.rgb=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=on(e,"rgba");return c[3]===void 0&&(c[3]=1),c},nn.autodetect.push({p:3,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=on(e,"rgba"),sn(e)==="array"&&(e.length===3||e.length===4&&sn(e[3])=="number"&&e[3]>=0&&e[3]<=1))return"rgb"}});var jt=Math.log,Ws=function(e){var n=e/100,c,i,h;return n<66?(c=255,i=n<6?0:-155.25485562709179-.44596950469579133*(i=n-2)+104.49216199393888*jt(i),h=n<20?0:-254.76935184120902+.8274096064007395*(h=n-10)+115.67994401066147*jt(h)):(c=351.97690566805693+.114206453784165*(c=n-55)-40.25366309332127*jt(c),i=325.4494125711974+.07943456536662342*(i=n-50)-28.0852963507957*jt(i),h=255),[c,i,h,1]},ln=Ws,Js=ln,Zs=w.unpack,Qs=Math.round,Xs=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];for(var c=Zs(e,"rgb"),i=c[0],h=c[2],v=1e3,f=4e4,b=.4,p;f-v>b;){p=(f+v)*.5;var y=Js(p);y[2]/y[0]>=h/i?f=p:v=p}return Qs(p)},Ks=Xs,$e=S,Ht=I,Fe=R,r1=Ks;Ht.prototype.temp=Ht.prototype.kelvin=Ht.prototype.temperature=function(){return r1(this._rgb)},$e.temp=$e.kelvin=$e.temperature=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(Ht,[null].concat(e,["temp"])))},Fe.format.temp=Fe.format.kelvin=Fe.format.temperature=ln;var t1=w.unpack,Ce=Math.cbrt,e1=Math.pow,a1=Math.sign,n1=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=t1(e,"rgb"),i=c[0],h=c[1],v=c[2],f=[xe(i/255),xe(h/255),xe(v/255)],b=f[0],p=f[1],y=f[2],M=Ce(.4122214708*b+.5363325363*p+.0514459929*y),C=Ce(.2119034982*b+.6806995451*p+.1073969566*y),P=Ce(.0883024619*b+.2817188376*p+.6299787005*y);return[.2104542553*M+.793617785*C-.0040720468*P,1.9779984951*M-2.428592205*C+.4505937099*P,.0259040371*M+.7827717662*C-.808675766*P]},un=n1;function xe(e){var n=Math.abs(e);return n<.04045?e/12.92:(a1(e)||1)*e1((n+.055)/1.055,2.4)}var o1=w.unpack,Wt=Math.pow,s1=Math.sign,c1=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];e=o1(e,"lab");var c=e[0],i=e[1],h=e[2],v=Wt(c+.3963377774*i+.2158037573*h,3),f=Wt(c-.1055613458*i-.0638541728*h,3),b=Wt(c-.0894841775*i-1.291485548*h,3);return[255*Te(4.0767416621*v-3.3077115913*f+.2309699292*b),255*Te(-1.2684380046*v+2.6097574011*f-.3413193965*b),255*Te(-.0041960863*v-.7034186147*f+1.707614701*b),e.length>3?e[3]:1]},fn=c1;function Te(e){var n=Math.abs(e);return n>.0031308?(s1(e)||1)*(1.055*Wt(n,1/2.4)-.055):e*12.92}var l1=w.unpack,i1=w.type,u1=S,hn=I,gn=R,f1=un;hn.prototype.oklab=function(){return f1(this._rgb)},u1.oklab=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(hn,[null].concat(e,["oklab"])))},gn.format.oklab=fn,gn.autodetect.push({p:3,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=l1(e,"oklab"),i1(e)==="array"&&e.length===3)return"oklab"}});var h1=w.unpack,g1=un,v1=Ja,d1=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var c=h1(e,"rgb"),i=c[0],h=c[1],v=c[2],f=g1(i,h,v),b=f[0],p=f[1],y=f[2];return v1(b,p,y)},b1=d1,p1=w.unpack,m1=Za,y1=fn,k1=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];e=p1(e,"lch");var c=e[0],i=e[1],h=e[2],v=m1(c,i,h),f=v[0],b=v[1],p=v[2],y=y1(f,b,p),M=y[0],C=y[1],P=y[2];return[M,C,P,e.length>3?e[3]:1]},w1=k1,M1=w.unpack,P1=w.type,_1=S,vn=I,dn=R,$1=b1;vn.prototype.oklch=function(){return $1(this._rgb)},_1.oklch=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return new(Function.prototype.bind.apply(vn,[null].concat(e,["oklch"])))},dn.format.oklch=w1,dn.autodetect.push({p:3,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=M1(e,"oklch"),P1(e)==="array"&&e.length===3)return"oklch"}});var bn=I,F1=w.type;bn.prototype.alpha=function(e,n){return n===void 0&&(n=!1),e!==void 0&&F1(e)==="number"?n?(this._rgb[3]=e,this):new bn([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]};var C1=I;C1.prototype.clipped=function(){return this._rgb._clipped||!1};var Hr=I,x1=Yt;Hr.prototype.darken=function(e){e===void 0&&(e=1);var n=this,c=n.lab();return c[0]-=x1.Kn*e,new Hr(c,"lab").alpha(n.alpha(),!0)},Hr.prototype.brighten=function(e){return e===void 0&&(e=1),this.darken(-e)},Hr.prototype.darker=Hr.prototype.darken,Hr.prototype.brighter=Hr.prototype.brighten;var T1=I;T1.prototype.get=function(e){var n=e.split("."),c=n[0],i=n[1],h=this[c]();if(i){var v=c.indexOf(i)-(c.substr(0,2)==="ok"?2:0);if(v>-1)return h[v];throw new Error("unknown channel "+i+" in mode "+c)}else return h};var lt=I,D1=w.type,A1=Math.pow,I1=1e-7,E1=20;lt.prototype.luminance=function(e){if(e!==void 0&&D1(e)==="number"){if(e===0)return new lt([0,0,0,this._rgb[3]],"rgb");if(e===1)return new lt([255,255,255,this._rgb[3]],"rgb");var n=this.luminance(),c="rgb",i=E1,h=function(f,b){var p=f.interpolate(b,.5,c),y=p.luminance();return Math.abs(e-y)e?h(f,p):h(p,b)},v=(n>e?h(new lt([0,0,0]),this):h(this,new lt([255,255,255]))).rgb();return new lt(v.concat([this._rgb[3]]))}return N1.apply(void 0,this._rgb.slice(0,3))};var N1=function(e,n,c){return e=De(e),n=De(n),c=De(c),.2126*e+.7152*n+.0722*c},De=function(e){return e/=255,e<=.03928?e/12.92:A1((e+.055)/1.055,2.4)},$r={},pn=I,mn=w.type,Jt=$r,yn=function(e,n,c){c===void 0&&(c=.5);for(var i=[],h=arguments.length-3;h-- >0;)i[h]=arguments[h+3];var v=i[0]||"lrgb";if(!Jt[v]&&!i.length&&(v=Object.keys(Jt)[0]),!Jt[v])throw new Error("interpolation mode "+v+" is not defined");return mn(e)!=="object"&&(e=new pn(e)),mn(n)!=="object"&&(n=new pn(n)),Jt[v](e,n,c).alpha(e.alpha()+c*(n.alpha()-e.alpha()))},kn=I,O1=yn;kn.prototype.mix=kn.prototype.interpolate=function(e,n){n===void 0&&(n=.5);for(var c=[],i=arguments.length-2;i-- >0;)c[i]=arguments[i+2];return O1.apply(void 0,[this,e,n].concat(c))};var wn=I;wn.prototype.premultiply=function(e){e===void 0&&(e=!1);var n=this._rgb,c=n[3];return e?(this._rgb=[n[0]*c,n[1]*c,n[2]*c,c],this):new wn([n[0]*c,n[1]*c,n[2]*c,c],"rgb")};var Ae=I,R1=Yt;Ae.prototype.saturate=function(e){e===void 0&&(e=1);var n=this,c=n.lch();return c[1]+=R1.Kn*e,c[1]<0&&(c[1]=0),new Ae(c,"lch").alpha(n.alpha(),!0)},Ae.prototype.desaturate=function(e){return e===void 0&&(e=1),this.saturate(-e)};var Mn=I,Pn=w.type;Mn.prototype.set=function(e,n,c){c===void 0&&(c=!1);var i=e.split("."),h=i[0],v=i[1],f=this[h]();if(v){var b=h.indexOf(v)-(h.substr(0,2)==="ok"?2:0);if(b>-1){if(Pn(n)=="string")switch(n.charAt(0)){case"+":f[b]+=+n;break;case"-":f[b]+=+n;break;case"*":f[b]*=+n.substr(1);break;case"/":f[b]/=+n.substr(1);break;default:f[b]=+n}else if(Pn(n)==="number")f[b]=n;else throw new Error("unsupported value for Color.set");var p=new Mn(f,h);return c?(this._rgb=p._rgb,this):p}throw new Error("unknown channel "+v+" in mode "+h)}else return f};var L1=I,B1=function(e,n,c){var i=e._rgb,h=n._rgb;return new L1(i[0]+c*(h[0]-i[0]),i[1]+c*(h[1]-i[1]),i[2]+c*(h[2]-i[2]),"rgb")};$r.rgb=B1;var S1=I,Ie=Math.sqrt,it=Math.pow,z1=function(e,n,c){var i=e._rgb,h=i[0],v=i[1],f=i[2],b=n._rgb,p=b[0],y=b[1],M=b[2];return new S1(Ie(it(h,2)*(1-c)+it(p,2)*c),Ie(it(v,2)*(1-c)+it(y,2)*c),Ie(it(f,2)*(1-c)+it(M,2)*c),"rgb")};$r.lrgb=z1;var q1=I,G1=function(e,n,c){var i=e.lab(),h=n.lab();return new q1(i[0]+c*(h[0]-i[0]),i[1]+c*(h[1]-i[1]),i[2]+c*(h[2]-i[2]),"lab")};$r.lab=G1;var _n=I,ut=function(e,n,c,i){var h,v,f,b;i==="hsl"?(f=e.hsl(),b=n.hsl()):i==="hsv"?(f=e.hsv(),b=n.hsv()):i==="hcg"?(f=e.hcg(),b=n.hcg()):i==="hsi"?(f=e.hsi(),b=n.hsi()):i==="lch"||i==="hcl"?(i="hcl",f=e.hcl(),b=n.hcl()):i==="oklch"&&(f=e.oklch().reverse(),b=n.oklch().reverse());var p,y,M,C,P,D;(i.substr(0,1)==="h"||i==="oklch")&&(h=f,p=h[0],M=h[1],P=h[2],v=b,y=v[0],C=v[1],D=v[2]);var T,z,V,W;return!isNaN(p)&&!isNaN(y)?(y>p&&y-p>180?W=y-(p+360):y180?W=y+360-p:W=y-p,z=p+c*W):isNaN(p)?isNaN(y)?z=Number.NaN:(z=y,(P==1||P==0)&&i!="hsv"&&(T=C)):(z=p,(D==1||D==0)&&i!="hsv"&&(T=M)),T===void 0&&(T=M+c*(C-M)),V=P+c*(D-P),i==="oklch"?new _n([V,T,z],i):new _n([z,T,V],i)},U1=ut,$n=function(e,n,c){return U1(e,n,c,"lch")};$r.lch=$n,$r.hcl=$n;var Y1=I,V1=function(e,n,c){var i=e.num(),h=n.num();return new Y1(i+c*(h-i),"num")};$r.num=V1;var j1=ut,H1=function(e,n,c){return j1(e,n,c,"hcg")};$r.hcg=H1;var W1=ut,J1=function(e,n,c){return W1(e,n,c,"hsi")};$r.hsi=J1;var Z1=ut,Q1=function(e,n,c){return Z1(e,n,c,"hsl")};$r.hsl=Q1;var X1=ut,K1=function(e,n,c){return X1(e,n,c,"hsv")};$r.hsv=K1;var rc=I,tc=function(e,n,c){var i=e.oklab(),h=n.oklab();return new rc(i[0]+c*(h[0]-i[0]),i[1]+c*(h[1]-i[1]),i[2]+c*(h[2]-i[2]),"oklab")};$r.oklab=tc;var ec=ut,ac=function(e,n,c){return ec(e,n,c,"oklch")};$r.oklch=ac;var Ee=I,nc=w.clip_rgb,Ne=Math.pow,Oe=Math.sqrt,Re=Math.PI,Fn=Math.cos,Cn=Math.sin,oc=Math.atan2,sc=function(e,n,c){n===void 0&&(n="lrgb"),c===void 0&&(c=null);var i=e.length;c||(c=Array.from(new Array(i)).map(function(){return 1}));var h=i/c.reduce(function(z,V){return z+V});if(c.forEach(function(z,V){c[V]*=h}),e=e.map(function(z){return new Ee(z)}),n==="lrgb")return cc(e,c);for(var v=e.shift(),f=v.get(n),b=[],p=0,y=0,M=0;M=360;)T-=360;f[D]=T}else f[D]=f[D]/b[D];return P/=i,new Ee(f,n).alpha(P>.99999?1:P,!0)},cc=function(e,n){for(var c=e.length,i=[0,0,0,0],h=0;h.9999999&&(i[3]=1),new Ee(nc(i))},Dr=S,ft=w.type,lc=Math.pow,Le=function(e){var n="rgb",c=Dr("#ccc"),i=0,h=[0,1],v=[],f=[0,0],b=!1,p=[],y=!1,M=0,C=1,P=!1,D={},T=!0,z=1,V=function($){if($=$||["#fff","#000"],$&&ft($)==="string"&&Dr.brewer&&Dr.brewer[$.toLowerCase()]&&($=Dr.brewer[$.toLowerCase()]),ft($)==="array"){$.length===1&&($=[$[0],$[0]]),$=$.slice(0);for(var N=0;N<$.length;N++)$[N]=Dr($[N]);v.length=0;for(var U=0;U<$.length;U++)v.push(U/($.length-1))}return kr(),p=$},W=function($){if(b!=null){for(var N=b.length-1,U=0;U=b[U];)U++;return U-1}return 0},Q=function($){return $},pr=function($){return $},br=function($,N){var U,q;if(N==null&&(N=!1),isNaN($)||$===null)return c;if(N)q=$;else if(b&&b.length>2){var mr=W($);q=mr/(b.length-2)}else C!==M?q=($-M)/(C-M):q=1;q=pr(q),N||(q=Q(q)),z!==1&&(q=lc(q,z)),q=f[0]+q*(1-f[0]-f[1]),q=Math.min(1,Math.max(0,q));var er=Math.floor(q*1e4);if(T&&D[er])U=D[er];else{if(ft(p)==="array")for(var J=0;J=X&&J===v.length-1){U=p[J];break}if(q>X&&q2){var J=$.map(function(K,rr){return rr/($.length-1)}),X=$.map(function(K){return(K-M)/(C-M)});X.every(function(K,rr){return J[rr]===K})||(pr=function(K){if(K<=0||K>=1)return K;for(var rr=0;K>=X[rr+1];)rr++;var Ir=(K-X[rr])/(X[rr+1]-X[rr]),Gr=J[rr]+Ir*(J[rr+1]-J[rr]);return Gr})}}return h=[M,C],H},H.mode=function($){return arguments.length?(n=$,kr(),H):n},H.range=function($,N){return V($),H},H.out=function($){return y=$,H},H.spread=function($){return arguments.length?(i=$,H):i},H.correctLightness=function($){return $==null&&($=!0),P=$,kr(),P?Q=function(N){for(var U=br(0,!0).lab()[0],q=br(1,!0).lab()[0],mr=U>q,er=br(N,!0).lab()[0],J=U+(q-U)*N,X=er-J,K=0,rr=1,Ir=20;Math.abs(X)>.01&&Ir-- >0;)(function(){return mr&&(X*=-1),X<0?(K=N,N+=(rr-N)*.5):(rr=N,N+=(K-N)*.5),er=br(N,!0).lab()[0],X=er-J})();return N}:Q=function(N){return N},H},H.padding=function($){return $!=null?(ft($)==="number"&&($=[$,$]),f=$,H):f},H.colors=function($,N){arguments.length<2&&(N="hex");var U=[];if(arguments.length===0)U=p.slice(0);else if($===1)U=[H(.5)];else if($>1){var q=h[0],mr=h[1]-q;U=ic(0,$,!1).map(function(rr){return H(q+rr/($-1)*mr)})}else{e=[];var er=[];if(b&&b.length>2)for(var J=1,X=b.length,K=1<=X;K?JX;K?J++:J--)er.push((b[J-1]+b[J])*.5);else er=h;U=er.map(function(rr){return H(rr)})}return Dr[N]&&(U=U.map(function(rr){return rr[N]()})),U},H.cache=function($){return $!=null?(T=$,H):T},H.gamma=function($){return $!=null?(z=$,H):z},H.nodata=function($){return $!=null?(c=Dr($),H):c},H};function ic(e,n,c){for(var i=[],h=ev;h?f++:f--)i.push(f);return i}var $t=I,uc=Le,fc=function(e){for(var n=[1,1],c=1;c=5){var y,M,C;y=e.map(function(P){return P.lab()}),C=e.length-1,M=fc(C),h=function(P){var D=1-P,T=[0,1,2].map(function(z){return y.reduce(function(V,W,Q){return V+M[Q]*Math.pow(D,C-Q)*Math.pow(P,Q)*W[z]},0)});return new $t(T,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return h},gc=function(e){var n=hc(e);return n.scale=function(){return uc(n)},n},Be=S,Ar=function(e,n,c){if(!Ar[c])throw new Error("unknown blend mode "+c);return Ar[c](e,n)},zr=function(e){return function(n,c){var i=Be(c).rgb(),h=Be(n).rgb();return Be.rgb(e(i,h))}},qr=function(e){return function(n,c){var i=[];return i[0]=e(n[0],c[0]),i[1]=e(n[1],c[1]),i[2]=e(n[2],c[2]),i}},vc=function(e){return e},dc=function(e,n){return e*n/255},bc=function(e,n){return e>n?n:e},pc=function(e,n){return e>n?e:n},mc=function(e,n){return 255*(1-(1-e/255)*(1-n/255))},yc=function(e,n){return n<128?2*e*n/255:255*(1-2*(1-e/255)*(1-n/255))},kc=function(e,n){return 255*(1-(1-n/255)/(e/255))},wc=function(e,n){return e===255?255:(e=255*(n/255)/(1-e/255),e>255?255:e)};Ar.normal=zr(qr(vc)),Ar.multiply=zr(qr(dc)),Ar.screen=zr(qr(mc)),Ar.overlay=zr(qr(yc)),Ar.darken=zr(qr(bc)),Ar.lighten=zr(qr(pc)),Ar.dodge=zr(qr(wc)),Ar.burn=zr(qr(kc));for(var Mc=Ar,Se=w.type,Pc=w.clip_rgb,_c=w.TWOPI,$c=Math.pow,Fc=Math.sin,Cc=Math.cos,xn=S,xc=function(e,n,c,i,h){e===void 0&&(e=300),n===void 0&&(n=-1.5),c===void 0&&(c=1),i===void 0&&(i=1),h===void 0&&(h=[0,1]);var v=0,f;Se(h)==="array"?f=h[1]-h[0]:(f=0,h=[h,h]);var b=function(p){var y=_c*((e+120)/360+n*p),M=$c(h[0]+f*p,i),C=v!==0?c[0]+p*v:c,P=C*M*(1-M)/2,D=Cc(y),T=Fc(y),z=M+P*(-.14861*D+1.78277*T),V=M+P*(-.29227*D-.90649*T),W=M+P*(1.97294*D);return xn(Pc([z*255,V*255,W*255,1]))};return b.start=function(p){return p==null?e:(e=p,b)},b.rotations=function(p){return p==null?n:(n=p,b)},b.gamma=function(p){return p==null?i:(i=p,b)},b.hue=function(p){return p==null?c:(c=p,Se(c)==="array"?(v=c[1]-c[0],v===0&&(c=c[1])):v=0,b)},b.lightness=function(p){return p==null?h:(Se(p)==="array"?(h=p,f=p[1]-p[0]):(h=[p,p],f=0),b)},b.scale=function(){return xn.scale(b)},b.hue(c),b},Tc=I,Dc="0123456789abcdef",Ac=Math.floor,Ic=Math.random,Ec=function(){for(var e="#",n=0;n<6;n++)e+=Dc.charAt(Ac(Ic()*16));return new Tc(e,"hex")},ze=k,Tn=Math.log,Nc=Math.pow,Oc=Math.floor,Rc=Math.abs,Dn=function(e,n){n===void 0&&(n=null);var c={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return ze(e)==="object"&&(e=Object.values(e)),e.forEach(function(i){n&&ze(i)==="object"&&(i=i[n]),i!=null&&!isNaN(i)&&(c.values.push(i),c.sum+=i,ic.max&&(c.max=i),c.count+=1)}),c.domain=[c.min,c.max],c.limits=function(i,h){return An(c,i,h)},c},An=function(e,n,c){n===void 0&&(n="equal"),c===void 0&&(c=7),ze(e)=="array"&&(e=Dn(e));var i=e.min,h=e.max,v=e.values.sort(function(Ge,Ue){return Ge-Ue});if(c===1)return[i,h];var f=[];if(n.substr(0,1)==="c"&&(f.push(i),f.push(h)),n.substr(0,1)==="e"){f.push(i);for(var b=1;b 0");var p=Math.LOG10E*Tn(i),y=Math.LOG10E*Tn(h);f.push(i);for(var M=1;M200&&(pr=!1)}for(var Ur={},ht=0;hti?(c+.05)/(i+.05):(i+.05)/(c+.05)},Nn=I,Rr=Math.sqrt,ir=Math.pow,Bc=Math.min,Sc=Math.max,On=Math.atan2,Rn=Math.abs,Zt=Math.cos,Ln=Math.sin,zc=Math.exp,Bn=Math.PI,qc=function(e,n,c,i,h){c===void 0&&(c=1),i===void 0&&(i=1),h===void 0&&(h=1);var v=function(Jr){return 360*Jr/(2*Bn)},f=function(Jr){return 2*Bn*Jr/360};e=new Nn(e),n=new Nn(n);var b=Array.from(e.lab()),p=b[0],y=b[1],M=b[2],C=Array.from(n.lab()),P=C[0],D=C[1],T=C[2],z=(p+P)/2,V=Rr(ir(y,2)+ir(M,2)),W=Rr(ir(D,2)+ir(T,2)),Q=(V+W)/2,pr=.5*(1-Rr(ir(Q,7)/(ir(Q,7)+ir(25,7)))),br=y*(1+pr),kr=D*(1+pr),H=Rr(ir(br,2)+ir(M,2)),$=Rr(ir(kr,2)+ir(T,2)),N=(H+$)/2,U=v(On(M,br)),q=v(On(T,kr)),mr=U>=0?U:U+360,er=q>=0?q:q+360,J=Rn(mr-er)>180?(mr+er+360)/2:(mr+er)/2,X=1-.17*Zt(f(J-30))+.24*Zt(f(2*J))+.32*Zt(f(3*J+6))-.2*Zt(f(4*J-63)),K=er-mr;K=Rn(K)<=180?K:er<=mr?K+360:K-360,K=2*Rr(H*$)*Ln(f(K)/2);var rr=P-p,Ir=$-H,Gr=1+.015*ir(z-50,2)/Rr(20+ir(z-50,2)),Ur=1+.045*N,ht=1+.015*N*X,gt=30*zc(-ir((J-275)/25,2)),Lr=2*Rr(ir(N,7)/(ir(N,7)+ir(25,7))),Wr=-Lr*Ln(2*f(gt)),Ft=Rr(ir(rr/(c*Gr),2)+ir(Ir/(i*Ur),2)+ir(K/(h*ht),2)+Wr*(Ir/(i*Ur))*(K/(h*ht)));return Sc(0,Bc(100,Ft))},Sn=I,Gc=function(e,n,c){c===void 0&&(c="lab"),e=new Sn(e),n=new Sn(n);var i=e.get(c),h=n.get(c),v=0;for(var f in i){var b=(i[f]||0)-(h[f]||0);v+=b*b}return Math.sqrt(v)},Uc=I,Yc=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];try{return new(Function.prototype.bind.apply(Uc,[null].concat(e))),!0}catch{return!1}},zn=S,qn=Le,Vc={cool:function(){return qn([zn.hsl(180,1,.9),zn.hsl(250,.7,.4)])},hot:function(){return qn(["#000","#f00","#ff0","#fff"]).mode("rgb")}},Qt={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},qe=0,Gn=Object.keys(Qt);qe0?a=u:t=u;while(Math.abs(l)>c0&&++g=s0?f0(d,B,t,o):L===0?B:u0(d,k,k+xt,t,o)}return function(k){return k===0?0:k===1?1:Tt(g(k),a,s)}};const Dt=ae(g0);var ea={exports:{}},aa={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},na={exports:{}},v0=function(t){return!t||typeof t=="string"?!1:t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&t.constructor.name!=="String")},d0=v0,b0=Array.prototype.concat,p0=Array.prototype.slice,oa=na.exports=function(t){for(var a=[],o=0,s=t.length;o=4&&r[3]!==1&&(t=", "+r[3]),"hwb("+r[0]+", "+r[1]+"%, "+r[2]+"%"+t+")"},Mr.to.keyword=function(r){return ca[r.slice(0,3)]};function Sr(r,t,a){return Math.min(Math.max(t,r),a)}function At(r){var t=Math.round(r).toString(16).toUpperCase();return t.length<2?"0"+t:t}var y0=ea.exports;const yt=aa,la={};for(const r of Object.keys(yt))la[yt[r]]=r;const A={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};var ia=A;for(const r of Object.keys(A)){if(!("channels"in A[r]))throw new Error("missing channels property: "+r);if(!("labels"in A[r]))throw new Error("missing channel labels property: "+r);if(A[r].labels.length!==A[r].channels)throw new Error("channel and label counts mismatch: "+r);const{channels:t,labels:a}=A[r];delete A[r].channels,delete A[r].labels,Object.defineProperty(A[r],"channels",{value:t}),Object.defineProperty(A[r],"labels",{value:a})}A.rgb.hsl=function(r){const t=r[0]/255,a=r[1]/255,o=r[2]/255,s=Math.min(t,a,o),l=Math.max(t,a,o),u=l-s;let g,d;l===s?g=0:t===l?g=(a-o)/u:a===l?g=2+(o-t)/u:o===l&&(g=4+(t-a)/u),g=Math.min(g*60,360),g<0&&(g+=360);const k=(s+l)/2;return l===s?d=0:k<=.5?d=u/(l+s):d=u/(2-l-s),[g,d*100,k*100]},A.rgb.hsv=function(r){let t,a,o,s,l;const u=r[0]/255,g=r[1]/255,d=r[2]/255,k=Math.max(u,g,d),_=k-Math.min(u,g,d),x=function(O){return(k-O)/6/_+1/2};return _===0?(s=0,l=0):(l=_/k,t=x(u),a=x(g),o=x(d),u===k?s=o-a:g===k?s=1/3+t-o:d===k&&(s=2/3+a-t),s<0?s+=1:s>1&&(s-=1)),[s*360,l*100,k*100]},A.rgb.hwb=function(r){const t=r[0],a=r[1];let o=r[2];const s=A.rgb.hsl(r)[0],l=1/255*Math.min(t,Math.min(a,o));return o=1-1/255*Math.max(t,Math.max(a,o)),[s,l*100,o*100]},A.rgb.cmyk=function(r){const t=r[0]/255,a=r[1]/255,o=r[2]/255,s=Math.min(1-t,1-a,1-o),l=(1-t-s)/(1-s)||0,u=(1-a-s)/(1-s)||0,g=(1-o-s)/(1-s)||0;return[l*100,u*100,g*100,s*100]};function k0(r,t){return(r[0]-t[0])**2+(r[1]-t[1])**2+(r[2]-t[2])**2}A.rgb.keyword=function(r){const t=la[r];if(t)return t;let a=1/0,o;for(const s of Object.keys(yt)){const l=yt[s],u=k0(r,l);u.04045?((t+.055)/1.055)**2.4:t/12.92,a=a>.04045?((a+.055)/1.055)**2.4:a/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;const s=t*.4124+a*.3576+o*.1805,l=t*.2126+a*.7152+o*.0722,u=t*.0193+a*.1192+o*.9505;return[s*100,l*100,u*100]},A.rgb.lab=function(r){const t=A.rgb.xyz(r);let a=t[0],o=t[1],s=t[2];a/=95.047,o/=100,s/=108.883,a=a>.008856?a**(1/3):7.787*a+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;const l=116*o-16,u=500*(a-o),g=200*(o-s);return[l,u,g]},A.hsl.rgb=function(r){const t=r[0]/360,a=r[1]/100,o=r[2]/100;let s,l,u;if(a===0)return u=o*255,[u,u,u];o<.5?s=o*(1+a):s=o+a-o*a;const g=2*o-s,d=[0,0,0];for(let k=0;k<3;k++)l=t+1/3*-(k-1),l<0&&l++,l>1&&l--,6*l<1?u=g+(s-g)*6*l:2*l<1?u=s:3*l<2?u=g+(s-g)*(2/3-l)*6:u=g,d[k]=u*255;return d},A.hsl.hsv=function(r){const t=r[0];let a=r[1]/100,o=r[2]/100,s=a;const l=Math.max(o,.01);o*=2,a*=o<=1?o:2-o,s*=l<=1?l:2-l;const u=(o+a)/2,g=o===0?2*s/(l+s):2*a/(o+a);return[t,g*100,u*100]},A.hsv.rgb=function(r){const t=r[0]/60,a=r[1]/100;let o=r[2]/100;const s=Math.floor(t)%6,l=t-Math.floor(t),u=255*o*(1-a),g=255*o*(1-a*l),d=255*o*(1-a*(1-l));switch(o*=255,s){case 0:return[o,d,u];case 1:return[g,o,u];case 2:return[u,o,d];case 3:return[u,g,o];case 4:return[d,u,o];case 5:return[o,u,g]}},A.hsv.hsl=function(r){const t=r[0],a=r[1]/100,o=r[2]/100,s=Math.max(o,.01);let l,u;u=(2-a)*o;const g=(2-a)*s;return l=a*s,l/=g<=1?g:2-g,l=l||0,u/=2,[t,l*100,u*100]},A.hwb.rgb=function(r){const t=r[0]/360;let a=r[1]/100,o=r[2]/100;const s=a+o;let l;s>1&&(a/=s,o/=s);const u=Math.floor(6*t),g=1-o;l=6*t-u,u&1&&(l=1-l);const d=a+l*(g-a);let k,_,x;switch(u){default:case 6:case 0:k=g,_=d,x=a;break;case 1:k=d,_=g,x=a;break;case 2:k=a,_=g,x=d;break;case 3:k=a,_=d,x=g;break;case 4:k=d,_=a,x=g;break;case 5:k=g,_=a,x=d;break}return[k*255,_*255,x*255]},A.cmyk.rgb=function(r){const t=r[0]/100,a=r[1]/100,o=r[2]/100,s=r[3]/100,l=1-Math.min(1,t*(1-s)+s),u=1-Math.min(1,a*(1-s)+s),g=1-Math.min(1,o*(1-s)+s);return[l*255,u*255,g*255]},A.xyz.rgb=function(r){const t=r[0]/100,a=r[1]/100,o=r[2]/100;let s,l,u;return s=t*3.2406+a*-1.5372+o*-.4986,l=t*-.9689+a*1.8758+o*.0415,u=t*.0557+a*-.204+o*1.057,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,l=l>.0031308?1.055*l**(1/2.4)-.055:l*12.92,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,s=Math.min(Math.max(0,s),1),l=Math.min(Math.max(0,l),1),u=Math.min(Math.max(0,u),1),[s*255,l*255,u*255]},A.xyz.lab=function(r){let t=r[0],a=r[1],o=r[2];t/=95.047,a/=100,o/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,a=a>.008856?a**(1/3):7.787*a+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;const s=116*a-16,l=500*(t-a),u=200*(a-o);return[s,l,u]},A.lab.xyz=function(r){const t=r[0],a=r[1],o=r[2];let s,l,u;l=(t+16)/116,s=a/500+l,u=l-o/200;const g=l**3,d=s**3,k=u**3;return l=g>.008856?g:(l-16/116)/7.787,s=d>.008856?d:(s-16/116)/7.787,u=k>.008856?k:(u-16/116)/7.787,s*=95.047,l*=100,u*=108.883,[s,l,u]},A.lab.lch=function(r){const t=r[0],a=r[1],o=r[2];let s;s=Math.atan2(o,a)*360/2/Math.PI,s<0&&(s+=360);const u=Math.sqrt(a*a+o*o);return[t,u,s]},A.lch.lab=function(r){const t=r[0],a=r[1],s=r[2]/360*2*Math.PI,l=a*Math.cos(s),u=a*Math.sin(s);return[t,l,u]},A.rgb.ansi16=function(r,t=null){const[a,o,s]=r;let l=t===null?A.rgb.hsv(r)[2]:t;if(l=Math.round(l/50),l===0)return 30;let u=30+(Math.round(s/255)<<2|Math.round(o/255)<<1|Math.round(a/255));return l===2&&(u+=60),u},A.hsv.ansi16=function(r){return A.rgb.ansi16(A.hsv.rgb(r),r[2])},A.rgb.ansi256=function(r){const t=r[0],a=r[1],o=r[2];return t===a&&a===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(a/255*5)+Math.round(o/255*5)},A.ansi16.rgb=function(r){let t=r%10;if(t===0||t===7)return r>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const a=(~~(r>50)+1)*.5,o=(t&1)*a*255,s=(t>>1&1)*a*255,l=(t>>2&1)*a*255;return[o,s,l]},A.ansi256.rgb=function(r){if(r>=232){const l=(r-232)*10+8;return[l,l,l]}r-=16;let t;const a=Math.floor(r/36)/5*255,o=Math.floor((t=r%36)/6)/5*255,s=t%6/5*255;return[a,o,s]},A.rgb.hex=function(r){const a=(((Math.round(r[0])&255)<<16)+((Math.round(r[1])&255)<<8)+(Math.round(r[2])&255)).toString(16).toUpperCase();return"000000".substring(a.length)+a},A.hex.rgb=function(r){const t=r.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let a=t[0];t[0].length===3&&(a=a.split("").map(g=>g+g).join(""));const o=parseInt(a,16),s=o>>16&255,l=o>>8&255,u=o&255;return[s,l,u]},A.rgb.hcg=function(r){const t=r[0]/255,a=r[1]/255,o=r[2]/255,s=Math.max(Math.max(t,a),o),l=Math.min(Math.min(t,a),o),u=s-l;let g,d;return u<1?g=l/(1-u):g=0,u<=0?d=0:s===t?d=(a-o)/u%6:s===a?d=2+(o-t)/u:d=4+(t-a)/u,d/=6,d%=1,[d*360,u*100,g*100]},A.hsl.hcg=function(r){const t=r[1]/100,a=r[2]/100,o=a<.5?2*t*a:2*t*(1-a);let s=0;return o<1&&(s=(a-.5*o)/(1-o)),[r[0],o*100,s*100]},A.hsv.hcg=function(r){const t=r[1]/100,a=r[2]/100,o=t*a;let s=0;return o<1&&(s=(a-o)/(1-o)),[r[0],o*100,s*100]},A.hcg.rgb=function(r){const t=r[0]/360,a=r[1]/100,o=r[2]/100;if(a===0)return[o*255,o*255,o*255];const s=[0,0,0],l=t%1*6,u=l%1,g=1-u;let d=0;switch(Math.floor(l)){case 0:s[0]=1,s[1]=u,s[2]=0;break;case 1:s[0]=g,s[1]=1,s[2]=0;break;case 2:s[0]=0,s[1]=1,s[2]=u;break;case 3:s[0]=0,s[1]=g,s[2]=1;break;case 4:s[0]=u,s[1]=0,s[2]=1;break;default:s[0]=1,s[1]=0,s[2]=g}return d=(1-a)*o,[(a*s[0]+d)*255,(a*s[1]+d)*255,(a*s[2]+d)*255]},A.hcg.hsv=function(r){const t=r[1]/100,a=r[2]/100,o=t+a*(1-t);let s=0;return o>0&&(s=t/o),[r[0],s*100,o*100]},A.hcg.hsl=function(r){const t=r[1]/100,o=r[2]/100*(1-t)+.5*t;let s=0;return o>0&&o<.5?s=t/(2*o):o>=.5&&o<1&&(s=t/(2*(1-o))),[r[0],s*100,o*100]},A.hcg.hwb=function(r){const t=r[1]/100,a=r[2]/100,o=t+a*(1-t);return[r[0],(o-t)*100,(1-o)*100]},A.hwb.hcg=function(r){const t=r[1]/100,o=1-r[2]/100,s=o-t;let l=0;return s<1&&(l=(o-s)/(1-s)),[r[0],s*100,l*100]},A.apple.rgb=function(r){return[r[0]/65535*255,r[1]/65535*255,r[2]/65535*255]},A.rgb.apple=function(r){return[r[0]/255*65535,r[1]/255*65535,r[2]/255*65535]},A.gray.rgb=function(r){return[r[0]/100*255,r[0]/100*255,r[0]/100*255]},A.gray.hsl=function(r){return[0,0,r[0]]},A.gray.hsv=A.gray.hsl,A.gray.hwb=function(r){return[0,100,r[0]]},A.gray.cmyk=function(r){return[0,0,0,r[0]]},A.gray.lab=function(r){return[r[0],0,0]},A.gray.hex=function(r){const t=Math.round(r[0]/100*255)&255,o=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(o.length)+o},A.rgb.gray=function(r){return[(r[0]+r[1]+r[2])/3/255*100]};const It=ia;function w0(){const r={},t=Object.keys(It);for(let a=t.length,o=0;o1&&(a=o),r(a))};return"conversion"in r&&(t.conversion=r.conversion),t}function T0(r){const t=function(...a){const o=a[0];if(o==null)return o;o.length>1&&(a=o);const s=r(a);if(typeof s=="object")for(let l=s.length,u=0;u{Xr[r]={},Object.defineProperty(Xr[r],"channels",{value:oe[r].channels}),Object.defineProperty(Xr[r],"labels",{value:oe[r].labels});const t=F0(r);Object.keys(t).forEach(o=>{const s=t[o];Xr[r][o]=T0(s),Xr[r][o].raw=x0(s)})});var D0=Xr;const Kr=y0,Pr=D0,ua=["keyword","gray","hex"],se={};for(const r of Object.keys(Pr))se[[...Pr[r].labels].sort().join("")]=r;const Et={};function vr(r,t){if(!(this instanceof vr))return new vr(r,t);if(t&&t in ua&&(t=null),t&&!(t in Pr))throw new Error("Unknown model: "+t);let a,o;if(r==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(r instanceof vr)this.model=r.model,this.color=[...r.color],this.valpha=r.valpha;else if(typeof r=="string"){const s=Kr.get(r);if(s===null)throw new Error("Unable to parse color from string: "+r);this.model=s.model,o=Pr[this.model].channels,this.color=s.value.slice(0,o),this.valpha=typeof s.value[o]=="number"?s.value[o]:1}else if(r.length>0){this.model=t||"rgb",o=Pr[this.model].channels;const s=Array.prototype.slice.call(r,0,o);this.color=ce(s,o),this.valpha=typeof r[o]=="number"?r[o]:1}else if(typeof r=="number")this.model="rgb",this.color=[r>>16&255,r>>8&255,r&255],this.valpha=1;else{this.valpha=1;const s=Object.keys(r);"alpha"in r&&(s.splice(s.indexOf("alpha"),1),this.valpha=typeof r.alpha=="number"?r.alpha:0);const l=s.sort().join("");if(!(l in se))throw new Error("Unable to parse color from object: "+JSON.stringify(r));this.model=se[l];const{labels:u}=Pr[this.model],g=[];for(a=0;a(r%360+360)%360),saturationl:sr("hsl",1,ur(100)),lightness:sr("hsl",2,ur(100)),saturationv:sr("hsv",1,ur(100)),value:sr("hsv",2,ur(100)),chroma:sr("hcg",1,ur(100)),gray:sr("hcg",2,ur(100)),white:sr("hwb",1,ur(100)),wblack:sr("hwb",2,ur(100)),cyan:sr("cmyk",0,ur(100)),magenta:sr("cmyk",1,ur(100)),yellow:sr("cmyk",2,ur(100)),black:sr("cmyk",3,ur(100)),x:sr("xyz",0,ur(95.047)),y:sr("xyz",1,ur(100)),z:sr("xyz",2,ur(108.833)),l:sr("lab",0,ur(100)),a:sr("lab",1),b:sr("lab",2),keyword(r){return r!==void 0?new vr(r):Pr[this.model].keyword(this.color)},hex(r){return r!==void 0?new vr(r):Kr.to.hex(this.rgb().round().color)},hexa(r){if(r!==void 0)return new vr(r);const t=this.rgb().round().color;let a=Math.round(this.valpha*255).toString(16).toUpperCase();return a.length===1&&(a="0"+a),Kr.to.hex(t)+a},rgbNumber(){const r=this.rgb().color;return(r[0]&255)<<16|(r[1]&255)<<8|r[2]&255},luminosity(){const r=this.rgb().color,t=[];for(const[a,o]of r.entries()){const s=o/255;t[a]=s<=.04045?s/12.92:((s+.055)/1.055)**2.4}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(r){const t=this.luminosity(),a=r.luminosity();return t>a?(t+.05)/(a+.05):(a+.05)/(t+.05)},level(r){const t=this.contrast(r);return t>=7?"AAA":t>=4.5?"AA":""},isDark(){const r=this.rgb().color;return(r[0]*2126+r[1]*7152+r[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const r=this.rgb();for(let t=0;t<3;t++)r.color[t]=255-r.color[t];return r},lighten(r){const t=this.hsl();return t.color[2]+=t.color[2]*r,t},darken(r){const t=this.hsl();return t.color[2]-=t.color[2]*r,t},saturate(r){const t=this.hsl();return t.color[1]+=t.color[1]*r,t},desaturate(r){const t=this.hsl();return t.color[1]-=t.color[1]*r,t},whiten(r){const t=this.hwb();return t.color[1]+=t.color[1]*r,t},blacken(r){const t=this.hwb();return t.color[2]+=t.color[2]*r,t},grayscale(){const r=this.rgb().color,t=r[0]*.3+r[1]*.59+r[2]*.11;return vr.rgb(t,t,t)},fade(r){return this.alpha(this.valpha-this.valpha*r)},opaquer(r){return this.alpha(this.valpha+this.valpha*r)},rotate(r){const t=this.hsl();let a=t.color[0];return a=(a+r)%360,a=a<0?360+a:a,t.color[0]=a,t},mix(r,t){if(!r||!r.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof r);const a=r.rgb(),o=this.rgb(),s=t===void 0?.5:t,l=2*s-1,u=a.alpha()-o.alpha(),g=((l*u===-1?l:(l+u)/(1+l*u))+1)/2,d=1-g;return vr.rgb(g*a.red()+d*o.red(),g*a.green()+d*o.green(),g*a.blue()+d*o.blue(),a.alpha()*s+o.alpha()*(1-s))}};for(const r of Object.keys(Pr)){if(ua.includes(r))continue;const{channels:t}=Pr[r];vr.prototype[r]=function(...a){return this.model===r?new vr(this):a.length>0?new vr(a,r):new vr([...E0(Pr[this.model][r].raw(this.color)),this.valpha],r)},vr[r]=function(...a){let o=a[0];return typeof o=="number"&&(o=ce(a,t)),new vr(o,r)}}function A0(r,t){return Number(r.toFixed(t))}function I0(r){return function(t){return A0(t,r)}}function sr(r,t,a){r=Array.isArray(r)?r:[r];for(const o of r)(Et[o]||(Et[o]=[]))[t]=a;return r=r[0],function(o){let s;return o!==void 0?(a&&(o=a(o)),s=this[r](),s.color[t]=o,s):(s=this[r]().color[t],a&&(s=a(s)),s)}}function ur(r){return function(t){return Math.max(0,Math.min(r,t))}}function E0(r){return Array.isArray(r)?r:[r]}function ce(r,t){for(let a=0;a{const t=Er.fromInt(Ze(r));return[t.hue,t.chroma,t.tone]};function Nt(r){const t=Er.from(r[0],r[1],r[2]);return e0(t.toInt())}function fa(r,t){if(t){const[a,o,s,l]=Vr(r).rgba(),u=Vr.rgb(a,o,s).hex();return`hcta(${le(u).map(d=>Math.round(d)).join(",")},${l})`}else return`hct(${le(r).map(o=>Math.round(o)).join(",")})`}function Ot(r,t){let a=r;const o=Vr(r).alpha()!==1,s=O0(r);switch(t){case"hex":{a=o?s.hexa().toString():s.hex().toString();break}case"hct":{a=fa(r,o);break}case"rgb":{a=s.rgb().string();break}case"hsv":{a=s.hsv().string();break}}return a}function Rt({hRotate:r,cTarget:t,tStart:a,tTarget:o,tEasing:s,i:l,steps:u}){if(!l||!u)return Nt([r,t,a]);const g=l/u,d=Dt(...s),k=a+(o-a)*d(g);return Nt([r,t,k])}function ie(r,{hRotate:t,hEasing:a,cTarget:o,cEasing:s,tTarget:l,tEasing:u},g,d,k){const _=Er.fromInt(Ze(r)),[x,O,B]=[_.hue,_.chroma,_.tone],L=d/k,w=Dt(...a),R=Dt(...s),or=Dt(...u),tr=x+ha(x,t*w(L),g),G=O+(o-O)*R(L),ar=B+(l-B)*or(L);return Nt([tr,G,ar])}function ha(r,t,a){const{segment:o,multiply:s}=a;return ga(o[0],o[1],t,s)(r)}function ga(r,t,a,o){const s=Math.PI/180,l=360/(t-r),u=-1*l*s*(3*r+t)/4,g=a*o,d=(a+g)/2,k=(a-g)/2;return _=>{const x=_*s;return k*Math.sin(l*x+u)+d}}function ue(r){return r>=0&&r<=255}function va(r){return r.length<4?`rgb(${r.join(",")})`:`rgba(${r.join(",")})`}function Lt(r,t){const[a,o,s]=Vr(r).rgb(),[l,u,g]=Vr(t).rgb();for(let d=.01;d<=1;d+=.01){const k=Math.round((a-l*(1-d))/d),_=Math.round((o-u*(1-d))/d),x=Math.round((s-g*(1-d))/d);if(ue(k)&&ue(_)&&ue(x))return Vr(va([k,_,x,Math.round(d*100)/100])).hex()}return Vr(va([a,o,s,1])).hex()}function fe(r,{up:t,down:a,upSteps:o,downSteps:s,hue:l}){const u=[];for(let g=o;g>=1;g--)u.push(ie(r,t,l,g,o));u.push(r);for(let g=1;g<=s;g++)u.push(ie(r,a,l,g,s));return u}function da({up:r,down:t,upSteps:a,downSteps:o}){const s=[];for(let l=a;l>=1;l--)s.push(Rt({...r,i:l,steps:a}));s.push(Rt(r));for(let l=1;l<=o;l++)s.push(Rt({...t,i:l,steps:o}));return s}function R0(r){for(const t in r)document.documentElement.style.setProperty(t,r[t])}const Bt={data:{colorList:[{color:"#409eff",darkColor:"#589ffe",id:"Primary",title:"Brand",type:"normal"},{color:"#e6202a",darkColor:"#ff5d55",id:"Red",title:"Red",type:"normal"},{color:"#ff832b",darkColor:"#ffa366",id:"65c1",title:"Orange",type:"normal"},{color:"#ffcc00",darkColor:"#ffd668",id:"Yellow",title:"Yellow",type:"normal"},{color:"#1db84c",darkColor:"#65ca67",id:"Green",title:"Green",type:"normal"},{color:"#00b3af",darkColor:"#56c6c4",id:"Sky",title:"Teal",type:"normal"},{color:"#1fa5ff",darkColor:"#67baff",id:"f38c",title:"Cyan",type:"normal"},{color:"#176cff",darkColor:"#5792ff",id:"116bd",title:"Blue",type:"normal"},{color:"#8a3ffc",darkColor:"#a275ff",id:"Purple",title:"Purple",type:"normal"},{color:"#ea3c8e",darkColor:"#ff6ba3",id:"17d81",title:"Magenta",type:"normal"}],generate:{dark:{down:{cTarget:20,hRotate:-20,tTarget:96,tEasing:[0,0,.5,.7],cEasing:[0,0,1,1],hEasing:[0,0,1,1]},up:{cTarget:50,hRotate:20,tTarget:10,tEasing:[0,0,1,1],cEasing:[0,0,1,1],hEasing:[0,0,1,1]},neutral:{cTarget:1,hRotate:1,tTarget:43,down:{tTarget:98,tEasing:[0,0,.53,.72]},up:{tTarget:6,tEasing:[.29,0,.65,1]}}},hue:{palettes:{multiply:-.5,segment:[50,200]},neutral:{multiply:1,segment:[0,360]}},light:{down:{cTarget:50,hRotate:20,tTarget:10,tEasing:[0,0,1,1],cEasing:[0,0,1,1],hEasing:[0,0,1,1]},up:{cTarget:20,hRotate:-20,tTarget:96,tEasing:[0,0,.5,.7],cEasing:[0,0,1,1],hEasing:[0,0,1,1]},neutral:{cTarget:2,hRotate:209,tTarget:73,down:{tTarget:10,tEasing:[0,0,.6,.29]},up:{tTarget:97,tEasing:[.15,.05,.1,.82]}}},step:{down:4,up:5}},stepFliter:[],system:{edit:{isolateEdit:!1},pattern:{displayFliterStep:!1,isFliterStep:!1,isolateDark:!1}}},name:"element-plus"};function L0(r=null){const t=r||Bt.data.generate,a=St(t,!0);return{light:St(t),dark:a}}function B0(r=null,t="rgb"){const a=r||Bt.data.generate,o=St(a,!0);return{light:St(a).map(l=>Ot(Lt(l,"#fff"),t)),dark:o.map(l=>Ot(Lt(l,"#000"),t))}}function S0({light:r,dark:t,generate:a,format:o}){const s=a||Bt.data.generate,{up:l,down:u}=s.step,{up:g,down:d}=s.light,{up:k,down:_}=s.dark,x=s.hue.palettes,O=fe(t,{up:k,down:_,upSteps:l,downSteps:u,hue:x});return{light:fe(r,{up:g,down:d,upSteps:l,downSteps:u,hue:x}),dark:O.map(B=>Ot(Lt(B,"#000"),o))}}function St(r,t=!1){const{up:a,down:o}=r.step,{cTarget:s,hRotate:l,up:u,down:g,tTarget:d}=r[t?"dark":"light"].neutral;return da({up:{...u,cTarget:s,hRotate:l,tStart:d},down:{...g,cTarget:s,hRotate:l,tStart:d},upSteps:a,downSteps:o})}cr.ELEMENT_PLUS_CONSTANTS=Bt,cr.adjustHex=ie,cr.adjustNeutralHex=Rt,cr.calcHueRotate=ha,cr.changeThemeByCssvars=R0,cr.colorTypeFormat=Ot,cr.genCalcHueVaule=ga,cr.getAlphaColor=Lt,cr.getLadderColors=fe,cr.getNeutral=L0,cr.getNeutralAlpha=B0,cr.getNeutualColors=da,cr.getPalette=S0,cr.hctToHex=Nt,cr.hexToHct=le,cr.toHctString=fa,Object.defineProperty(cr,Symbol.toStringTag,{value:"Module"})}); +//# sourceMappingURL=theme.umd.js.map diff --git a/packages/theme/lib/theme.umd.js.map b/packages/theme/lib/theme.umd.js.map new file mode 100644 index 0000000..411a798 --- /dev/null +++ b/packages/theme/lib/theme.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"theme.umd.js","sources":["../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/utils/math_utils.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/utils/color_utils.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/hct/viewing_conditions.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/hct/cam16.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/hct/hct_solver.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/hct/hct.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/contrast/contrast.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dislike/dislike_analyzer.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dynamiccolor/dynamic_color.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/scheme/variant.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dynamiccolor/contrast_curve.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dynamiccolor/tone_delta_pair.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/dynamiccolor/material_dynamic_colors.js","../../../node_modules/.pnpm/@material+material-color-utilities@0.2.7/node_modules/@material/material-color-utilities/utils/string_utils.js","../../../node_modules/.pnpm/chroma-js@2.4.2/node_modules/chroma-js/chroma.js","../../../node_modules/.pnpm/bezier-easing@2.1.0/node_modules/bezier-easing/src/index.js","../../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../../../node_modules/.pnpm/is-arrayish@0.3.2/node_modules/is-arrayish/index.js","../../../node_modules/.pnpm/simple-swizzle@0.2.2/node_modules/simple-swizzle/index.js","../../../node_modules/.pnpm/color-string@1.9.1/node_modules/color-string/index.js","../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js","../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js","../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js","../../../node_modules/.pnpm/color@4.2.3/node_modules/color/index.js","../src/utils/format.ts","../src/utils/adjust.ts","../src/utils/colorTools.ts","../src/dom.ts","../src/constants/element-plus.ts","../src/palettes.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// This file is automatically generated. Do not modify it.\n/**\n * Utility methods for mathematical operations.\n */\n/**\n * The signum function.\n *\n * @return 1 if num > 0, -1 if num < 0, and 0 if num = 0\n */\nexport function signum(num) {\n if (num < 0) {\n return -1;\n }\n else if (num === 0) {\n return 0;\n }\n else {\n return 1;\n }\n}\n/**\n * The linear interpolation function.\n *\n * @return start if amount = 0 and stop if amount = 1\n */\nexport function lerp(start, stop, amount) {\n return (1.0 - amount) * start + amount * stop;\n}\n/**\n * Clamps an integer between two integers.\n *\n * @return input when min <= input <= max, and either min or max\n * otherwise.\n */\nexport function clampInt(min, max, input) {\n if (input < min) {\n return min;\n }\n else if (input > max) {\n return max;\n }\n return input;\n}\n/**\n * Clamps an integer between two floating-point numbers.\n *\n * @return input when min <= input <= max, and either min or max\n * otherwise.\n */\nexport function clampDouble(min, max, input) {\n if (input < min) {\n return min;\n }\n else if (input > max) {\n return max;\n }\n return input;\n}\n/**\n * Sanitizes a degree measure as an integer.\n *\n * @return a degree measure between 0 (inclusive) and 360\n * (exclusive).\n */\nexport function sanitizeDegreesInt(degrees) {\n degrees = degrees % 360;\n if (degrees < 0) {\n degrees = degrees + 360;\n }\n return degrees;\n}\n/**\n * Sanitizes a degree measure as a floating-point number.\n *\n * @return a degree measure between 0.0 (inclusive) and 360.0\n * (exclusive).\n */\nexport function sanitizeDegreesDouble(degrees) {\n degrees = degrees % 360.0;\n if (degrees < 0) {\n degrees = degrees + 360.0;\n }\n return degrees;\n}\n/**\n * Sign of direction change needed to travel from one angle to\n * another.\n *\n * For angles that are 180 degrees apart from each other, both\n * directions have the same travel distance, so either direction is\n * shortest. The value 1.0 is returned in this case.\n *\n * @param from The angle travel starts from, in degrees.\n * @param to The angle travel ends at, in degrees.\n * @return -1 if decreasing from leads to the shortest travel\n * distance, 1 if increasing from leads to the shortest travel\n * distance.\n */\nexport function rotationDirection(from, to) {\n const increasingDifference = sanitizeDegreesDouble(to - from);\n return increasingDifference <= 180.0 ? 1.0 : -1.0;\n}\n/**\n * Distance of two points on a circle, represented using degrees.\n */\nexport function differenceDegrees(a, b) {\n return 180.0 - Math.abs(Math.abs(a - b) - 180.0);\n}\n/**\n * Multiplies a 1x3 row vector with a 3x3 matrix.\n */\nexport function matrixMultiply(row, matrix) {\n const a = row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2];\n const b = row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2];\n const c = row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2];\n return [a, b, c];\n}\n//# sourceMappingURL=math_utils.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// This file is automatically generated. Do not modify it.\nimport * as mathUtils from './math_utils.js';\n/**\n * Color science utilities.\n *\n * Utility methods for color science constants and color space\n * conversions that aren't HCT or CAM16.\n */\nconst SRGB_TO_XYZ = [\n [0.41233895, 0.35762064, 0.18051042],\n [0.2126, 0.7152, 0.0722],\n [0.01932141, 0.11916382, 0.95034478],\n];\nconst XYZ_TO_SRGB = [\n [\n 3.2413774792388685,\n -1.5376652402851851,\n -0.49885366846268053,\n ],\n [\n -0.9691452513005321,\n 1.8758853451067872,\n 0.04156585616912061,\n ],\n [\n 0.05562093689691305,\n -0.20395524564742123,\n 1.0571799111220335,\n ],\n];\nconst WHITE_POINT_D65 = [95.047, 100.0, 108.883];\n/**\n * Converts a color from RGB components to ARGB format.\n */\nexport function argbFromRgb(red, green, blue) {\n return (255 << 24 | (red & 255) << 16 | (green & 255) << 8 | blue & 255) >>>\n 0;\n}\n/**\n * Converts a color from linear RGB components to ARGB format.\n */\nexport function argbFromLinrgb(linrgb) {\n const r = delinearized(linrgb[0]);\n const g = delinearized(linrgb[1]);\n const b = delinearized(linrgb[2]);\n return argbFromRgb(r, g, b);\n}\n/**\n * Returns the alpha component of a color in ARGB format.\n */\nexport function alphaFromArgb(argb) {\n return argb >> 24 & 255;\n}\n/**\n * Returns the red component of a color in ARGB format.\n */\nexport function redFromArgb(argb) {\n return argb >> 16 & 255;\n}\n/**\n * Returns the green component of a color in ARGB format.\n */\nexport function greenFromArgb(argb) {\n return argb >> 8 & 255;\n}\n/**\n * Returns the blue component of a color in ARGB format.\n */\nexport function blueFromArgb(argb) {\n return argb & 255;\n}\n/**\n * Returns whether a color in ARGB format is opaque.\n */\nexport function isOpaque(argb) {\n return alphaFromArgb(argb) >= 255;\n}\n/**\n * Converts a color from ARGB to XYZ.\n */\nexport function argbFromXyz(x, y, z) {\n const matrix = XYZ_TO_SRGB;\n const linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z;\n const linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z;\n const linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n const r = delinearized(linearR);\n const g = delinearized(linearG);\n const b = delinearized(linearB);\n return argbFromRgb(r, g, b);\n}\n/**\n * Converts a color from XYZ to ARGB.\n */\nexport function xyzFromArgb(argb) {\n const r = linearized(redFromArgb(argb));\n const g = linearized(greenFromArgb(argb));\n const b = linearized(blueFromArgb(argb));\n return mathUtils.matrixMultiply([r, g, b], SRGB_TO_XYZ);\n}\n/**\n * Converts a color represented in Lab color space into an ARGB\n * integer.\n */\nexport function argbFromLab(l, a, b) {\n const whitePoint = WHITE_POINT_D65;\n const fy = (l + 16.0) / 116.0;\n const fx = a / 500.0 + fy;\n const fz = fy - b / 200.0;\n const xNormalized = labInvf(fx);\n const yNormalized = labInvf(fy);\n const zNormalized = labInvf(fz);\n const x = xNormalized * whitePoint[0];\n const y = yNormalized * whitePoint[1];\n const z = zNormalized * whitePoint[2];\n return argbFromXyz(x, y, z);\n}\n/**\n * Converts a color from ARGB representation to L*a*b*\n * representation.\n *\n * @param argb the ARGB representation of a color\n * @return a Lab object representing the color\n */\nexport function labFromArgb(argb) {\n const linearR = linearized(redFromArgb(argb));\n const linearG = linearized(greenFromArgb(argb));\n const linearB = linearized(blueFromArgb(argb));\n const matrix = SRGB_TO_XYZ;\n const x = matrix[0][0] * linearR + matrix[0][1] * linearG + matrix[0][2] * linearB;\n const y = matrix[1][0] * linearR + matrix[1][1] * linearG + matrix[1][2] * linearB;\n const z = matrix[2][0] * linearR + matrix[2][1] * linearG + matrix[2][2] * linearB;\n const whitePoint = WHITE_POINT_D65;\n const xNormalized = x / whitePoint[0];\n const yNormalized = y / whitePoint[1];\n const zNormalized = z / whitePoint[2];\n const fx = labF(xNormalized);\n const fy = labF(yNormalized);\n const fz = labF(zNormalized);\n const l = 116.0 * fy - 16;\n const a = 500.0 * (fx - fy);\n const b = 200.0 * (fy - fz);\n return [l, a, b];\n}\n/**\n * Converts an L* value to an ARGB representation.\n *\n * @param lstar L* in L*a*b*\n * @return ARGB representation of grayscale color with lightness\n * matching L*\n */\nexport function argbFromLstar(lstar) {\n const y = yFromLstar(lstar);\n const component = delinearized(y);\n return argbFromRgb(component, component, component);\n}\n/**\n * Computes the L* value of a color in ARGB representation.\n *\n * @param argb ARGB representation of a color\n * @return L*, from L*a*b*, coordinate of the color\n */\nexport function lstarFromArgb(argb) {\n const y = xyzFromArgb(argb)[1];\n return 116.0 * labF(y / 100.0) - 16.0;\n}\n/**\n * Converts an L* value to a Y value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param lstar L* in L*a*b*\n * @return Y in XYZ\n */\nexport function yFromLstar(lstar) {\n return 100.0 * labInvf((lstar + 16.0) / 116.0);\n}\n/**\n * Converts a Y value to an L* value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param y Y in XYZ\n * @return L* in L*a*b*\n */\nexport function lstarFromY(y) {\n return labF(y / 100.0) * 116.0 - 16.0;\n}\n/**\n * Linearizes an RGB component.\n *\n * @param rgbComponent 0 <= rgb_component <= 255, represents R/G/B\n * channel\n * @return 0.0 <= output <= 100.0, color channel converted to\n * linear RGB space\n */\nexport function linearized(rgbComponent) {\n const normalized = rgbComponent / 255.0;\n if (normalized <= 0.040449936) {\n return normalized / 12.92 * 100.0;\n }\n else {\n return Math.pow((normalized + 0.055) / 1.055, 2.4) * 100.0;\n }\n}\n/**\n * Delinearizes an RGB component.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0 <= output <= 255, color channel converted to regular\n * RGB space\n */\nexport function delinearized(rgbComponent) {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n }\n else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return mathUtils.clampInt(0, 255, Math.round(delinearized * 255.0));\n}\n/**\n * Returns the standard white point; white on a sunny day.\n *\n * @return The white point\n */\nexport function whitePointD65() {\n return WHITE_POINT_D65;\n}\n/**\n * Return RGBA from a given int32 color\n *\n * @param argb ARGB representation of a int32 color.\n * @return RGBA representation of a int32 color.\n */\nexport function rgbaFromArgb(argb) {\n const r = redFromArgb(argb);\n const g = greenFromArgb(argb);\n const b = blueFromArgb(argb);\n const a = alphaFromArgb(argb);\n return { r, g, b, a };\n}\n/**\n * Return int32 color from a given RGBA component\n *\n * @param rgba RGBA representation of a int32 color.\n * @returns ARGB representation of a int32 color.\n */\nexport function argbFromRgba({ r, g, b, a }) {\n const rValue = clampComponent(r);\n const gValue = clampComponent(g);\n const bValue = clampComponent(b);\n const aValue = clampComponent(a);\n return (aValue << 24) | (rValue << 16) | (gValue << 8) | bValue;\n}\nfunction clampComponent(value) {\n if (value < 0)\n return 0;\n if (value > 255)\n return 255;\n return value;\n}\nfunction labF(t) {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n if (t > e) {\n return Math.pow(t, 1.0 / 3.0);\n }\n else {\n return (kappa * t + 16) / 116;\n }\n}\nfunction labInvf(ft) {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n const ft3 = ft * ft * ft;\n if (ft3 > e) {\n return ft3;\n }\n else {\n return (116 * ft - 16) / kappa;\n }\n}\n//# sourceMappingURL=color_utils.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n/**\n * In traditional color spaces, a color can be identified solely by the\n * observer's measurement of the color. Color appearance models such as CAM16\n * also use information about the environment where the color was\n * observed, known as the viewing conditions.\n *\n * For example, white under the traditional assumption of a midday sun white\n * point is accurately measured as a slightly chromatic blue by CAM16. (roughly,\n * hue 203, chroma 3, lightness 100)\n *\n * This class caches intermediate values of the CAM16 conversion process that\n * depend only on viewing conditions, enabling speed ups.\n */\nexport class ViewingConditions {\n /**\n * Create ViewingConditions from a simple, physically relevant, set of\n * parameters.\n *\n * @param whitePoint White point, measured in the XYZ color space.\n * default = D65, or sunny day afternoon\n * @param adaptingLuminance The luminance of the adapting field. Informally,\n * how bright it is in the room where the color is viewed. Can be\n * calculated from lux by multiplying lux by 0.0586. default = 11.72,\n * or 200 lux.\n * @param backgroundLstar The lightness of the area surrounding the color.\n * measured by L* in L*a*b*. default = 50.0\n * @param surround A general description of the lighting surrounding the\n * color. 0 is pitch dark, like watching a movie in a theater. 1.0 is a\n * dimly light room, like watching TV at home at night. 2.0 means there\n * is no difference between the lighting on the color and around it.\n * default = 2.0\n * @param discountingIlluminant Whether the eye accounts for the tint of the\n * ambient lighting, such as knowing an apple is still red in green light.\n * default = false, the eye does not perform this process on\n * self-luminous objects like displays.\n */\n static make(whitePoint = utils.whitePointD65(), adaptingLuminance = (200.0 / Math.PI) * utils.yFromLstar(50.0) / 100.0, backgroundLstar = 50.0, surround = 2.0, discountingIlluminant = false) {\n const xyz = whitePoint;\n const rW = xyz[0] * 0.401288 + xyz[1] * 0.650173 + xyz[2] * -0.051461;\n const gW = xyz[0] * -0.250268 + xyz[1] * 1.204414 + xyz[2] * 0.045854;\n const bW = xyz[0] * -0.002079 + xyz[1] * 0.048952 + xyz[2] * 0.953127;\n const f = 0.8 + surround / 10.0;\n const c = f >= 0.9 ? math.lerp(0.59, 0.69, (f - 0.9) * 10.0) :\n math.lerp(0.525, 0.59, (f - 0.8) * 10.0);\n let d = discountingIlluminant ?\n 1.0 :\n f * (1.0 - (1.0 / 3.6) * Math.exp((-adaptingLuminance - 42.0) / 92.0));\n d = d > 1.0 ? 1.0 : d < 0.0 ? 0.0 : d;\n const nc = f;\n const rgbD = [\n d * (100.0 / rW) + 1.0 - d,\n d * (100.0 / gW) + 1.0 - d,\n d * (100.0 / bW) + 1.0 - d,\n ];\n const k = 1.0 / (5.0 * adaptingLuminance + 1.0);\n const k4 = k * k * k * k;\n const k4F = 1.0 - k4;\n const fl = k4 * adaptingLuminance +\n 0.1 * k4F * k4F * Math.cbrt(5.0 * adaptingLuminance);\n const n = utils.yFromLstar(backgroundLstar) / whitePoint[1];\n const z = 1.48 + Math.sqrt(n);\n const nbb = 0.725 / Math.pow(n, 0.2);\n const ncb = nbb;\n const rgbAFactors = [\n Math.pow((fl * rgbD[0] * rW) / 100.0, 0.42),\n Math.pow((fl * rgbD[1] * gW) / 100.0, 0.42),\n Math.pow((fl * rgbD[2] * bW) / 100.0, 0.42),\n ];\n const rgbA = [\n (400.0 * rgbAFactors[0]) / (rgbAFactors[0] + 27.13),\n (400.0 * rgbAFactors[1]) / (rgbAFactors[1] + 27.13),\n (400.0 * rgbAFactors[2]) / (rgbAFactors[2] + 27.13),\n ];\n const aw = (2.0 * rgbA[0] + rgbA[1] + 0.05 * rgbA[2]) * nbb;\n return new ViewingConditions(n, aw, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, 0.25), z);\n }\n /**\n * Parameters are intermediate values of the CAM16 conversion process. Their\n * names are shorthand for technical color science terminology, this class\n * would not benefit from documenting them individually. A brief overview\n * is available in the CAM16 specification, and a complete overview requires\n * a color science textbook, such as Fairchild's Color Appearance Models.\n */\n constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n this.n = n;\n this.aw = aw;\n this.nbb = nbb;\n this.ncb = ncb;\n this.c = c;\n this.nc = nc;\n this.rgbD = rgbD;\n this.fl = fl;\n this.fLRoot = fLRoot;\n this.z = z;\n }\n}\n/** sRGB-like viewing conditions. */\nViewingConditions.DEFAULT = ViewingConditions.make();\n//# sourceMappingURL=viewing_conditions.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\nimport { ViewingConditions } from './viewing_conditions.js';\n/**\n * CAM16, a color appearance model. Colors are not just defined by their hex\n * code, but rather, a hex code and viewing conditions.\n *\n * CAM16 instances also have coordinates in the CAM16-UCS space, called J*, a*,\n * b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16\n * specification, and should be used when measuring distances between colors.\n *\n * In traditional color spaces, a color can be identified solely by the\n * observer's measurement of the color. Color appearance models such as CAM16\n * also use information about the environment where the color was\n * observed, known as the viewing conditions.\n *\n * For example, white under the traditional assumption of a midday sun white\n * point is accurately measured as a slightly chromatic blue by CAM16. (roughly,\n * hue 203, chroma 3, lightness 100)\n */\nexport class Cam16 {\n /**\n * All of the CAM16 dimensions can be calculated from 3 of the dimensions, in\n * the following combinations:\n * - {j or q} and {c, m, or s} and hue\n * - jstar, astar, bstar\n * Prefer using a static method that constructs from 3 of those dimensions.\n * This constructor is intended for those methods to use to return all\n * possible dimensions.\n *\n * @param hue\n * @param chroma informally, colorfulness / color intensity. like saturation\n * in HSL, except perceptually accurate.\n * @param j lightness\n * @param q brightness; ratio of lightness to white point's lightness\n * @param m colorfulness\n * @param s saturation; ratio of chroma to white point's chroma\n * @param jstar CAM16-UCS J coordinate\n * @param astar CAM16-UCS a coordinate\n * @param bstar CAM16-UCS b coordinate\n */\n constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n this.hue = hue;\n this.chroma = chroma;\n this.j = j;\n this.q = q;\n this.m = m;\n this.s = s;\n this.jstar = jstar;\n this.astar = astar;\n this.bstar = bstar;\n }\n /**\n * CAM16 instances also have coordinates in the CAM16-UCS space, called J*,\n * a*, b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16\n * specification, and is used to measure distances between colors.\n */\n distance(other) {\n const dJ = this.jstar - other.jstar;\n const dA = this.astar - other.astar;\n const dB = this.bstar - other.bstar;\n const dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n const dE = 1.41 * Math.pow(dEPrime, 0.63);\n return dE;\n }\n /**\n * @param argb ARGB representation of a color.\n * @return CAM16 color, assuming the color was viewed in default viewing\n * conditions.\n */\n static fromInt(argb) {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n /**\n * @param argb ARGB representation of a color.\n * @param viewingConditions Information about the environment where the color\n * was observed.\n * @return CAM16 color.\n */\n static fromIntInViewingConditions(argb, viewingConditions) {\n const red = (argb & 0x00ff0000) >> 16;\n const green = (argb & 0x0000ff00) >> 8;\n const blue = (argb & 0x000000ff);\n const redL = utils.linearized(red);\n const greenL = utils.linearized(green);\n const blueL = utils.linearized(blue);\n const x = 0.41233895 * redL + 0.35762064 * greenL + 0.18051042 * blueL;\n const y = 0.2126 * redL + 0.7152 * greenL + 0.0722 * blueL;\n const z = 0.01932141 * redL + 0.11916382 * greenL + 0.95034478 * blueL;\n const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;\n const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;\n const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;\n const rD = viewingConditions.rgbD[0] * rC;\n const gD = viewingConditions.rgbD[1] * gC;\n const bD = viewingConditions.rgbD[2] * bC;\n const rAF = Math.pow((viewingConditions.fl * Math.abs(rD)) / 100.0, 0.42);\n const gAF = Math.pow((viewingConditions.fl * Math.abs(gD)) / 100.0, 0.42);\n const bAF = Math.pow((viewingConditions.fl * Math.abs(bD)) / 100.0, 0.42);\n const rA = (math.signum(rD) * 400.0 * rAF) / (rAF + 27.13);\n const gA = (math.signum(gD) * 400.0 * gAF) / (gAF + 27.13);\n const bA = (math.signum(bD) * 400.0 * bAF) / (bAF + 27.13);\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n const b = (rA + gA - 2.0 * bA) / 9.0;\n const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;\n const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;\n const atan2 = Math.atan2(b, a);\n const atanDegrees = (atan2 * 180.0) / Math.PI;\n const hue = atanDegrees < 0 ? atanDegrees + 360.0 :\n atanDegrees >= 360 ? atanDegrees - 360.0 :\n atanDegrees;\n const hueRadians = (hue * Math.PI) / 180.0;\n const ac = p2 * viewingConditions.nbb;\n const j = 100.0 *\n Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z);\n const q = (4.0 / viewingConditions.c) * Math.sqrt(j / 100.0) *\n (viewingConditions.aw + 4.0) * viewingConditions.fLRoot;\n const huePrime = hue < 20.14 ? hue + 360 : hue;\n const eHue = 0.25 * (Math.cos((huePrime * Math.PI) / 180.0 + 2.0) + 3.8);\n const p1 = (50000.0 / 13.0) * eHue * viewingConditions.nc * viewingConditions.ncb;\n const t = (p1 * Math.sqrt(a * a + b * b)) / (u + 0.305);\n const alpha = Math.pow(t, 0.9) *\n Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const c = alpha * Math.sqrt(j / 100.0);\n const m = c * viewingConditions.fLRoot;\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n const jstar = ((1.0 + 100.0 * 0.007) * j) / (1.0 + 0.007 * j);\n const mstar = (1.0 / 0.0228) * Math.log(1.0 + 0.0228 * m);\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n /**\n * @param j CAM16 lightness\n * @param c CAM16 chroma\n * @param h CAM16 hue\n */\n static fromJch(j, c, h) {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n /**\n * @param j CAM16 lightness\n * @param c CAM16 chroma\n * @param h CAM16 hue\n * @param viewingConditions Information about the environment where the color\n * was observed.\n */\n static fromJchInViewingConditions(j, c, h, viewingConditions) {\n const q = (4.0 / viewingConditions.c) * Math.sqrt(j / 100.0) *\n (viewingConditions.aw + 4.0) * viewingConditions.fLRoot;\n const m = c * viewingConditions.fLRoot;\n const alpha = c / Math.sqrt(j / 100.0);\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n const hueRadians = (h * Math.PI) / 180.0;\n const jstar = ((1.0 + 100.0 * 0.007) * j) / (1.0 + 0.007 * j);\n const mstar = (1.0 / 0.0228) * Math.log(1.0 + 0.0228 * m);\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n /**\n * @param jstar CAM16-UCS lightness.\n * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the Y axis.\n * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the X axis.\n */\n static fromUcs(jstar, astar, bstar) {\n return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n /**\n * @param jstar CAM16-UCS lightness.\n * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the Y axis.\n * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the X axis.\n * @param viewingConditions Information about the environment where the color\n * was observed.\n */\n static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n const a = astar;\n const b = bstar;\n const m = Math.sqrt(a * a + b * b);\n const M = (Math.exp(m * 0.0228) - 1.0) / 0.0228;\n const c = M / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180.0 / Math.PI);\n if (h < 0.0) {\n h += 360.0;\n }\n const j = jstar / (1 - (jstar - 100) * 0.007);\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n /**\n * @return ARGB representation of color, assuming the color was viewed in\n * default viewing conditions, which are near-identical to the default\n * viewing conditions for sRGB.\n */\n toInt() {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n /**\n * @param viewingConditions Information about the environment where the color\n * will be viewed.\n * @return ARGB representation of color\n */\n viewed(viewingConditions) {\n const alpha = this.chroma === 0.0 || this.j === 0.0 ?\n 0.0 :\n this.chroma / Math.sqrt(this.j / 100.0);\n const t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1.0 / 0.9);\n const hRad = (this.hue * Math.PI) / 180.0;\n const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);\n const ac = viewingConditions.aw *\n Math.pow(this.j / 100.0, 1.0 / viewingConditions.c / viewingConditions.z);\n const p1 = eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const p2 = ac / viewingConditions.nbb;\n const hSin = Math.sin(hRad);\n const hCos = Math.cos(hRad);\n const gamma = (23.0 * (p2 + 0.305) * t) /\n (23.0 * p1 + 11.0 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCBase = Math.max(0, (27.13 * Math.abs(rA)) / (400.0 - Math.abs(rA)));\n const rC = math.signum(rA) * (100.0 / viewingConditions.fl) *\n Math.pow(rCBase, 1.0 / 0.42);\n const gCBase = Math.max(0, (27.13 * Math.abs(gA)) / (400.0 - Math.abs(gA)));\n const gC = math.signum(gA) * (100.0 / viewingConditions.fl) *\n Math.pow(gCBase, 1.0 / 0.42);\n const bCBase = Math.max(0, (27.13 * Math.abs(bA)) / (400.0 - Math.abs(bA)));\n const bC = math.signum(bA) * (100.0 / viewingConditions.fl) *\n Math.pow(bCBase, 1.0 / 0.42);\n const rF = rC / viewingConditions.rgbD[0];\n const gF = gC / viewingConditions.rgbD[1];\n const bF = bC / viewingConditions.rgbD[2];\n const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;\n const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;\n const z = -0.01584150 * rF - 0.03412294 * gF + 1.04996444 * bF;\n const argb = utils.argbFromXyz(x, y, z);\n return argb;\n }\n /// Given color expressed in XYZ and viewed in [viewingConditions], convert to\n /// CAM16.\n static fromXyzInViewingConditions(x, y, z, viewingConditions) {\n // Transform XYZ to 'cone'/'rgb' responses\n const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;\n const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;\n const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;\n // Discount illuminant\n const rD = viewingConditions.rgbD[0] * rC;\n const gD = viewingConditions.rgbD[1] * gC;\n const bD = viewingConditions.rgbD[2] * bC;\n // chromatic adaptation\n const rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100.0, 0.42);\n const gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100.0, 0.42);\n const bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100.0, 0.42);\n const rA = math.signum(rD) * 400.0 * rAF / (rAF + 27.13);\n const gA = math.signum(gD) * 400.0 * gAF / (gAF + 27.13);\n const bA = math.signum(bD) * 400.0 * bAF / (bAF + 27.13);\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n // auxiliary components\n const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;\n const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;\n // hue\n const atan2 = Math.atan2(b, a);\n const atanDegrees = atan2 * 180.0 / Math.PI;\n const hue = atanDegrees < 0 ? atanDegrees + 360.0 :\n atanDegrees >= 360 ? atanDegrees - 360 :\n atanDegrees;\n const hueRadians = hue * Math.PI / 180.0;\n // achromatic response to color\n const ac = p2 * viewingConditions.nbb;\n // CAM16 lightness and brightness\n const J = 100.0 *\n Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z);\n const Q = (4.0 / viewingConditions.c) * Math.sqrt(J / 100.0) *\n (viewingConditions.aw + 4.0) * (viewingConditions.fLRoot);\n const huePrime = (hue < 20.14) ? hue + 360 : hue;\n const eHue = (1.0 / 4.0) * (Math.cos(huePrime * Math.PI / 180.0 + 2.0) + 3.8);\n const p1 = 50000.0 / 13.0 * eHue * viewingConditions.nc * viewingConditions.ncb;\n const t = p1 * Math.sqrt(a * a + b * b) / (u + 0.305);\n const alpha = Math.pow(t, 0.9) *\n Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n // CAM16 chroma, colorfulness, chroma\n const C = alpha * Math.sqrt(J / 100.0);\n const M = C * viewingConditions.fLRoot;\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n // CAM16-UCS components\n const jstar = (1.0 + 100.0 * 0.007) * J / (1.0 + 0.007 * J);\n const mstar = Math.log(1.0 + 0.0228 * M) / 0.0228;\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n }\n /// XYZ representation of CAM16 seen in [viewingConditions].\n xyzInViewingConditions(viewingConditions) {\n const alpha = (this.chroma === 0.0 || this.j === 0.0) ?\n 0.0 :\n this.chroma / Math.sqrt(this.j / 100.0);\n const t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1.0 / 0.9);\n const hRad = this.hue * Math.PI / 180.0;\n const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);\n const ac = viewingConditions.aw *\n Math.pow(this.j / 100.0, 1.0 / viewingConditions.c / viewingConditions.z);\n const p1 = eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const p2 = (ac / viewingConditions.nbb);\n const hSin = Math.sin(hRad);\n const hCos = Math.cos(hRad);\n const gamma = 23.0 * (p2 + 0.305) * t /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCBase = Math.max(0, (27.13 * Math.abs(rA)) / (400.0 - Math.abs(rA)));\n const rC = math.signum(rA) * (100.0 / viewingConditions.fl) *\n Math.pow(rCBase, 1.0 / 0.42);\n const gCBase = Math.max(0, (27.13 * Math.abs(gA)) / (400.0 - Math.abs(gA)));\n const gC = math.signum(gA) * (100.0 / viewingConditions.fl) *\n Math.pow(gCBase, 1.0 / 0.42);\n const bCBase = Math.max(0, (27.13 * Math.abs(bA)) / (400.0 - Math.abs(bA)));\n const bC = math.signum(bA) * (100.0 / viewingConditions.fl) *\n Math.pow(bCBase, 1.0 / 0.42);\n const rF = rC / viewingConditions.rgbD[0];\n const gF = gC / viewingConditions.rgbD[1];\n const bF = bC / viewingConditions.rgbD[2];\n const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;\n const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;\n const z = -0.01584150 * rF - 0.03412294 * gF + 1.04996444 * bF;\n return [x, y, z];\n }\n}\n//# sourceMappingURL=cam16.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// This file is automatically generated. Do not modify it.\nimport * as colorUtils from '../utils/color_utils.js';\nimport * as mathUtils from '../utils/math_utils.js';\nimport { Cam16 } from './cam16.js';\nimport { ViewingConditions } from './viewing_conditions.js';\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n/**\n * A class that solves the HCT equation.\n */\nexport class HctSolver {\n /**\n * Sanitizes a small enough angle in radians.\n *\n * @param angle An angle in radians; must not deviate too much\n * from 0.\n * @return A coterminal angle between 0 and 2pi.\n */\n static sanitizeRadians(angle) {\n return (angle + Math.PI * 8) % (Math.PI * 2);\n }\n /**\n * Delinearizes an RGB component, returning a floating-point\n * number.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0.0 <= output <= 255.0, color channel converted to\n * regular RGB space\n */\n static trueDelinearized(rgbComponent) {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n }\n else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return delinearized * 255.0;\n }\n static chromaticAdaptation(component) {\n const af = Math.pow(Math.abs(component), 0.42);\n return mathUtils.signum(component) * 400.0 * af / (af + 27.13);\n }\n /**\n * Returns the hue of a linear RGB color in CAM16.\n *\n * @param linrgb The linear RGB coordinates of a color.\n * @return The hue of the color in CAM16, in radians.\n */\n static hueOf(linrgb) {\n const scaledDiscount = mathUtils.matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB);\n const rA = HctSolver.chromaticAdaptation(scaledDiscount[0]);\n const gA = HctSolver.chromaticAdaptation(scaledDiscount[1]);\n const bA = HctSolver.chromaticAdaptation(scaledDiscount[2]);\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n return Math.atan2(b, a);\n }\n static areInCyclicOrder(a, b, c) {\n const deltaAB = HctSolver.sanitizeRadians(b - a);\n const deltaAC = HctSolver.sanitizeRadians(c - a);\n return deltaAB < deltaAC;\n }\n /**\n * Solves the lerp equation.\n *\n * @param source The starting number.\n * @param mid The number in the middle.\n * @param target The ending number.\n * @return A number t such that lerp(source, target, t) = mid.\n */\n static intercept(source, mid, target) {\n return (mid - source) / (target - source);\n }\n static lerpPoint(source, t, target) {\n return [\n source[0] + (target[0] - source[0]) * t,\n source[1] + (target[1] - source[1]) * t,\n source[2] + (target[2] - source[2]) * t,\n ];\n }\n /**\n * Intersects a segment with a plane.\n *\n * @param source The coordinates of point A.\n * @param coordinate The R-, G-, or B-coordinate of the plane.\n * @param target The coordinates of point B.\n * @param axis The axis the plane is perpendicular with. (0: R, 1:\n * G, 2: B)\n * @return The intersection point of the segment AB with the plane\n * R=coordinate, G=coordinate, or B=coordinate\n */\n static setCoordinate(source, coordinate, target, axis) {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n static isBounded(x) {\n return 0.0 <= x && x <= 100.0;\n }\n /**\n * Returns the nth possible vertex of the polygonal intersection.\n *\n * @param y The Y value of the plane.\n * @param n The zero-based index of the point. 0 <= n <= 11.\n * @return The nth possible vertex of the polygonal intersection\n * of the y plane and the RGB cube, in linear RGB coordinates, if\n * it exists. If this possible vertex lies outside of the cube,\n * [-1.0, -1.0, -1.0] is returned.\n */\n static nthVertex(y, n) {\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const coordA = n % 4 <= 1 ? 0.0 : 100.0;\n const coordB = n % 2 === 0 ? 0.0 : 100.0;\n if (n < 4) {\n const g = coordA;\n const b = coordB;\n const r = (y - g * kG - b * kB) / kR;\n if (HctSolver.isBounded(r)) {\n return [r, g, b];\n }\n else {\n return [-1.0, -1.0, -1.0];\n }\n }\n else if (n < 8) {\n const b = coordA;\n const r = coordB;\n const g = (y - r * kR - b * kB) / kG;\n if (HctSolver.isBounded(g)) {\n return [r, g, b];\n }\n else {\n return [-1.0, -1.0, -1.0];\n }\n }\n else {\n const r = coordA;\n const g = coordB;\n const b = (y - r * kR - g * kG) / kB;\n if (HctSolver.isBounded(b)) {\n return [r, g, b];\n }\n else {\n return [-1.0, -1.0, -1.0];\n }\n }\n }\n /**\n * Finds the segment containing the desired color.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return A list of two sets of linear RGB coordinates, each\n * corresponding to an endpoint of the segment containing the\n * desired color.\n */\n static bisectToSegment(y, targetHue) {\n let left = [-1.0, -1.0, -1.0];\n let right = left;\n let leftHue = 0.0;\n let rightHue = 0.0;\n let initialized = false;\n let uncut = true;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) {\n continue;\n }\n const midHue = HctSolver.hueOf(mid);\n if (!initialized) {\n left = mid;\n right = mid;\n leftHue = midHue;\n rightHue = midHue;\n initialized = true;\n continue;\n }\n if (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) {\n uncut = false;\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rightHue = midHue;\n }\n else {\n left = mid;\n leftHue = midHue;\n }\n }\n }\n return [left, right];\n }\n static midpoint(a, b) {\n return [\n (a[0] + b[0]) / 2,\n (a[1] + b[1]) / 2,\n (a[2] + b[2]) / 2,\n ];\n }\n static criticalPlaneBelow(x) {\n return Math.floor(x - 0.5);\n }\n static criticalPlaneAbove(x) {\n return Math.ceil(x - 0.5);\n }\n /**\n * Finds a color with the given Y and hue on the boundary of the\n * cube.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return The desired color, in linear RGB coordinates.\n */\n static bisectToLimit(y, targetHue) {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0];\n let leftHue = HctSolver.hueOf(left);\n let right = segment[1];\n for (let axis = 0; axis < 3; axis++) {\n if (left[axis] !== right[axis]) {\n let lPlane = -1;\n let rPlane = 255;\n if (left[axis] < right[axis]) {\n lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis]));\n rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]));\n }\n else {\n lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis]));\n rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis]));\n }\n for (let i = 0; i < 8; i++) {\n if (Math.abs(rPlane - lPlane) <= 1) {\n break;\n }\n else {\n const mPlane = Math.floor((lPlane + rPlane) / 2.0);\n const midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane];\n const mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis);\n const midHue = HctSolver.hueOf(mid);\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rPlane = mPlane;\n }\n else {\n left = mid;\n leftHue = midHue;\n lPlane = mPlane;\n }\n }\n }\n }\n }\n return HctSolver.midpoint(left, right);\n }\n static inverseChromaticAdaptation(adapted) {\n const adaptedAbs = Math.abs(adapted);\n const base = Math.max(0, 27.13 * adaptedAbs / (400.0 - adaptedAbs));\n return mathUtils.signum(adapted) * Math.pow(base, 1.0 / 0.42);\n }\n /**\n * Finds a color with the given hue, chroma, and Y.\n *\n * @param hueRadians The desired hue in radians.\n * @param chroma The desired chroma.\n * @param y The desired Y.\n * @return The desired color as a hexadecimal integer, if found; 0\n * otherwise.\n */\n static findResultByJ(hueRadians, chroma, y) {\n // Initial estimate of j.\n let j = Math.sqrt(y) * 11.0;\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const viewingConditions = ViewingConditions.DEFAULT;\n const tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const eHue = 0.25 * (Math.cos(hueRadians + 2.0) + 3.8);\n const p1 = eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const hSin = Math.sin(hueRadians);\n const hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const jNormalized = j / 100.0;\n const alpha = chroma === 0.0 || j === 0.0 ? 0.0 : chroma / Math.sqrt(jNormalized);\n const t = Math.pow(alpha * tInnerCoeff, 1.0 / 0.9);\n const ac = viewingConditions.aw *\n Math.pow(jNormalized, 1.0 / viewingConditions.c / viewingConditions.z);\n const p2 = ac / viewingConditions.nbb;\n const gamma = 23.0 * (p2 + 0.305) * t /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCScaled = HctSolver.inverseChromaticAdaptation(rA);\n const gCScaled = HctSolver.inverseChromaticAdaptation(gA);\n const bCScaled = HctSolver.inverseChromaticAdaptation(bA);\n const linrgb = mathUtils.matrixMultiply([rCScaled, gCScaled, bCScaled], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) {\n return 0;\n }\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) {\n return 0;\n }\n if (iterationRound === 4 || Math.abs(fnj - y) < 0.002) {\n if (linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01) {\n return 0;\n }\n return colorUtils.argbFromLinrgb(linrgb);\n }\n // Iterates with Newton method,\n // Using 2 * fn(j) / j as the approximation of fn'(j)\n j = j - (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return A hexadecimal representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToInt(hueDegrees, chroma, lstar) {\n if (chroma < 0.0001 || lstar < 0.0001 || lstar > 99.9999) {\n return colorUtils.argbFromLstar(lstar);\n }\n hueDegrees = mathUtils.sanitizeDegreesDouble(hueDegrees);\n const hueRadians = hueDegrees / 180 * Math.PI;\n const y = colorUtils.yFromLstar(lstar);\n const exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (exactAnswer !== 0) {\n return exactAnswer;\n }\n const linrgb = HctSolver.bisectToLimit(y, hueRadians);\n return colorUtils.argbFromLinrgb(linrgb);\n }\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return An CAM16 object representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToCam(hueDegrees, chroma, lstar) {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [\n [\n 0.001200833568784504,\n 0.002389694492170889,\n 0.0002795742885861124,\n ],\n [\n 0.0005891086651375999,\n 0.0029785502573438758,\n 0.0003270666104008398,\n ],\n [\n 0.00010146692491640572,\n 0.0005364214359186694,\n 0.0032979401770712076,\n ],\n];\nHctSolver.LINRGB_FROM_SCALED_DISCOUNT = [\n [\n 1373.2198709594231,\n -1100.4251190754821,\n -7.278681089101213,\n ],\n [\n -271.815969077903,\n 559.6580465940733,\n -32.46047482791194,\n ],\n [\n 1.9622899599665666,\n -57.173814538844006,\n 308.7233197812385,\n ],\n];\nHctSolver.Y_FROM_LINRGB = [0.2126, 0.7152, 0.0722];\nHctSolver.CRITICAL_PLANES = [\n 0.015176349177441876, 0.045529047532325624, 0.07588174588720938,\n 0.10623444424209313, 0.13658714259697685, 0.16693984095186062,\n 0.19729253930674434, 0.2276452376616281, 0.2579979360165119,\n 0.28835063437139563, 0.3188300904430532, 0.350925934958123,\n 0.3848314933096426, 0.42057480301049466, 0.458183274052838,\n 0.4976837250274023, 0.5391024159806381, 0.5824650784040898,\n 0.6277969426914107, 0.6751227633498623, 0.7244668422128921,\n 0.775853049866786, 0.829304845476233, 0.8848452951698498,\n 0.942497089126609, 1.0022825574869039, 1.0642236851973577,\n 1.1283421258858297, 1.1946592148522128, 1.2631959812511864,\n 1.3339731595349034, 1.407011200216447, 1.4823302800086415,\n 1.5599503113873272, 1.6398909516233677, 1.7221716113234105,\n 1.8068114625156377, 1.8938294463134073, 1.9832442801866852,\n 2.075074464868551, 2.1693382909216234, 2.2660538449872063,\n 2.36523901573795, 2.4669114995532007, 2.5710888059345764,\n 2.6777882626779785, 2.7870270208169257, 2.898822059350997,\n 3.0131901897720907, 3.1301480604002863, 3.2497121605402226,\n 3.3718988244681087, 3.4967242352587946, 3.624204428461639,\n 3.754355295633311, 3.887192587735158, 4.022731918402185,\n 4.160988767090289, 4.301978482107941, 4.445716283538092,\n 4.592217266055746, 4.741496401646282, 4.893568542229298,\n 5.048448422192488, 5.20615066083972, 5.3666897647573375,\n 5.5300801301023865, 5.696336044816294, 5.865471690767354,\n 6.037501145825082, 6.212438385869475, 6.390297286737924,\n 6.571091626112461, 6.7548350853498045, 6.941541251256611,\n 7.131223617812143, 7.323895587840543, 7.5195704746346665,\n 7.7182615035334345, 7.919981813454504, 8.124744458384042,\n 8.332562408825165, 8.543448553206703, 8.757415699253682,\n 8.974476575321063, 9.194643831691977, 9.417930041841839,\n 9.644347703669503, 9.873909240696694, 10.106627003236781,\n 10.342513269534024, 10.58158024687427, 10.8238400726681,\n 11.069304815507364, 11.317986476196008, 11.569896988756009,\n 11.825048221409341, 12.083451977536606, 12.345119996613247,\n 12.610063955123938, 12.878295467455942, 13.149826086772048,\n 13.42466730586372, 13.702830557985108, 13.984327217668513,\n 14.269168601521828, 14.55736596900856, 14.848930523210871,\n 15.143873411576273, 15.44220572664832, 15.743938506781891,\n 16.04908273684337, 16.35764934889634, 16.66964922287304,\n 16.985093187232053, 17.30399201960269, 17.62635644741625,\n 17.95219714852476, 18.281524751807332, 18.614349837764564,\n 18.95068293910138, 19.290534541298456, 19.633915083172692,\n 19.98083495742689, 20.331304511189067, 20.685334046541502,\n 21.042933821039977, 21.404114048223256, 21.76888489811322,\n 22.137256497705877, 22.50923893145328, 22.884842241736916,\n 23.264076429332462, 23.6469514538663, 24.033477234264016,\n 24.42366364919083, 24.817520537484558, 25.21505769858089,\n 25.61628489293138, 26.021211842414342, 26.429848230738664,\n 26.842203703840827, 27.258287870275353, 27.678110301598522,\n 28.10168053274597, 28.529008062403893, 28.96010235337422,\n 29.39497283293396, 29.83362889318845, 30.276079891419332,\n 30.722335150426627, 31.172403958865512, 31.62629557157785,\n 32.08401920991837, 32.54558406207592, 33.010999283389665,\n 33.4802739966603, 33.953417292456834, 34.430438229418264,\n 34.911345834551085, 35.39614910352207, 35.88485700094671,\n 36.37747846067349, 36.87402238606382, 37.37449765026789,\n 37.87891309649659, 38.38727753828926, 38.89959975977785,\n 39.41588851594697, 39.93615253289054, 40.460400508064545,\n 40.98864111053629, 41.520882981230194, 42.05713473317016,\n 42.597404951718396, 43.141702194811224, 43.6900349931913,\n 44.24241185063697, 44.798841244188324, 45.35933162437017,\n 45.92389141541209, 46.49252901546552, 47.065252796817916,\n 47.64207110610409, 48.22299226451468, 48.808024568002054,\n 49.3971762874833, 49.9904556690408, 50.587870934119984,\n 51.189430279724725, 51.79514187861014, 52.40501387947288,\n 53.0190544071392, 53.637271562750364, 54.259673423945976,\n 54.88626804504493, 55.517063457223934, 56.15206766869424,\n 56.79128866487574, 57.43473440856916, 58.08241284012621,\n 58.734331877617365, 59.39049941699807, 60.05092333227251,\n 60.715611475655585, 61.38457167773311, 62.057811747619894,\n 62.7353394731159, 63.417162620860914, 64.10328893648692,\n 64.79372614476921, 65.48848194977529, 66.18756403501224,\n 66.89098006357258, 67.59873767827808, 68.31084450182222,\n 69.02730813691093, 69.74813616640164, 70.47333615344107,\n 71.20291564160104, 71.93688215501312, 72.67524319850172,\n 73.41800625771542, 74.16517879925733, 74.9167682708136,\n 75.67278210128072, 76.43322770089146, 77.1981124613393,\n 77.96744375590167, 78.74122893956174, 79.51947534912904,\n 80.30219030335869, 81.08938110306934, 81.88105503125999,\n 82.67721935322541, 83.4778813166706, 84.28304815182372,\n 85.09272707154808, 85.90692527145302, 86.72564993000343,\n 87.54890820862819, 88.3767072518277, 89.2090541872801,\n 90.04595612594655, 90.88742016217518, 91.73345337380438,\n 92.58406282226491, 93.43925555268066, 94.29903859396902,\n 95.16341895893969, 96.03240364439274, 96.9059996312159,\n 97.78421388448044, 98.6670533535366, 99.55452497210776,\n];\n//# sourceMappingURL=hct_solver.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A color system built using CAM16 hue and chroma, and L* from\n * L*a*b*.\n *\n * Using L* creates a link between the color system, contrast, and thus\n * accessibility. Contrast ratio depends on relative luminance, or Y in the XYZ\n * color space. L*, or perceptual luminance can be calculated from Y.\n *\n * Unlike Y, L* is linear to human perception, allowing trivial creation of\n * accurate color tones.\n *\n * Unlike contrast ratio, measuring contrast in L* is linear, and simple to\n * calculate. A difference of 40 in HCT tone guarantees a contrast ratio >= 3.0,\n * and a difference of 50 guarantees a contrast ratio >= 4.5.\n */\nimport * as utils from '../utils/color_utils.js';\nimport { Cam16 } from './cam16.js';\nimport { HctSolver } from './hct_solver.js';\nimport { ViewingConditions } from './viewing_conditions.js';\n/**\n * HCT, hue, chroma, and tone. A color system that provides a perceptually\n * accurate color measurement system that can also accurately render what colors\n * will appear as in different lighting environments.\n */\nexport class Hct {\n static from(hue, chroma, tone) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n /**\n * @param argb ARGB representation of a color.\n * @return HCT representation of a color in default viewing conditions\n */\n static fromInt(argb) {\n return new Hct(argb);\n }\n toInt() {\n return this.argb;\n }\n /**\n * A number, in degrees, representing ex. red, orange, yellow, etc.\n * Ranges from 0 <= hue < 360.\n */\n get hue() {\n return this.internalHue;\n }\n /**\n * @param newHue 0 <= newHue < 360; invalid values are corrected.\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set hue(newHue) {\n this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n }\n get chroma() {\n return this.internalChroma;\n }\n /**\n * @param newChroma 0 <= newChroma < ?\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set chroma(newChroma) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n }\n /** Lightness. Ranges from 0 to 100. */\n get tone() {\n return this.internalTone;\n }\n /**\n * @param newTone 0 <= newTone <= 100; invalid valids are corrected.\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set tone(newTone) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n }\n constructor(argb) {\n this.argb = argb;\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue;\n this.internalChroma = cam.chroma;\n this.internalTone = utils.lstarFromArgb(argb);\n this.argb = argb;\n }\n setInternalState(argb) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue;\n this.internalChroma = cam.chroma;\n this.internalTone = utils.lstarFromArgb(argb);\n this.argb = argb;\n }\n /**\n * Translates a color into different [ViewingConditions].\n *\n * Colors change appearance. They look different with lights on versus off,\n * the same color, as in hex code, on white looks different when on black.\n * This is called color relativity, most famously explicated by Josef Albers\n * in Interaction of Color.\n *\n * In color science, color appearance models can account for this and\n * calculate the appearance of a color in different settings. HCT is based on\n * CAM16, a color appearance model, and uses it to make these calculations.\n *\n * See [ViewingConditions.make] for parameters affecting color appearance.\n */\n inViewingConditions(vc) {\n // 1. Use CAM16 to find XYZ coordinates of color in specified VC.\n const cam = Cam16.fromInt(this.toInt());\n const viewedInVc = cam.xyzInViewingConditions(vc);\n // 2. Create CAM16 of those XYZ coordinates in default VC.\n const recastInVc = Cam16.fromXyzInViewingConditions(viewedInVc[0], viewedInVc[1], viewedInVc[2], ViewingConditions.make());\n // 3. Create HCT from:\n // - CAM16 using default VC with XYZ coordinates in specified VC.\n // - L* converted from Y in XYZ coordinates in specified VC.\n const recastHct = Hct.from(recastInVc.hue, recastInVc.chroma, utils.lstarFromY(viewedInVc[1]));\n return recastHct;\n }\n}\n//# sourceMappingURL=hct.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n/**\n * Utility methods for calculating contrast given two colors, or calculating a\n * color given one color and a contrast ratio.\n *\n * Contrast ratio is calculated using XYZ's Y. When linearized to match human\n * perception, Y becomes HCT's tone and L*a*b*'s' L*. Informally, this is the\n * lightness of a color.\n *\n * Methods refer to tone, T in the the HCT color space.\n * Tone is equivalent to L* in the L*a*b* color space, or L in the LCH color\n * space.\n */\nexport class Contrast {\n /**\n * Returns a contrast ratio, which ranges from 1 to 21.\n *\n * @param toneA Tone between 0 and 100. Values outside will be clamped.\n * @param toneB Tone between 0 and 100. Values outside will be clamped.\n */\n static ratioOfTones(toneA, toneB) {\n toneA = math.clampDouble(0.0, 100.0, toneA);\n toneB = math.clampDouble(0.0, 100.0, toneB);\n return Contrast.ratioOfYs(utils.yFromLstar(toneA), utils.yFromLstar(toneB));\n }\n static ratioOfYs(y1, y2) {\n const lighter = y1 > y2 ? y1 : y2;\n const darker = (lighter === y2) ? y1 : y2;\n return (lighter + 5.0) / (darker + 5.0);\n }\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighter(tone, ratio) {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n const darkY = utils.yFromLstar(tone);\n const lightY = ratio * (darkY + 5.0) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = utils.lstarFromY(lightY) + 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n /**\n * Returns a tone <= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darker(tone, ratio) {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n const lightY = utils.yFromLstar(tone);\n const darkY = ((lightY + 5.0) / ratio) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = utils.lstarFromY(darkY) - 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the ratio with tone. For example, there is no color lighter than T100.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 100 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighterUnsafe(tone, ratio) {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return (lighterSafe < 0.0) ? 100.0 : lighterSafe;\n }\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the [ratio with [tone]. For example, there is no color darker than T0.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 0 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darkerUnsafe(tone, ratio) {\n const darkerSafe = Contrast.darker(tone, ratio);\n return (darkerSafe < 0.0) ? 0.0 : darkerSafe;\n }\n}\n//# sourceMappingURL=contrast.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Hct } from '../hct/hct.js';\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n/**\n * Check and/or fix universally disliked colors.\n * Color science studies of color preference indicate universal distaste for\n * dark yellow-greens, and also show this is correlated to distate for\n * biological waste and rotting food.\n *\n * See Palmer and Schloss, 2010 or Schloss and Palmer's Chapter 21 in Handbook\n * of Color Psychology (2015).\n */\nexport class DislikeAnalyzer {\n /**\n * Returns true if a color is disliked.\n *\n * @param hct A color to be judged.\n * @return Whether the color is disliked.\n *\n * Disliked is defined as a dark yellow-green that is not neutral.\n */\n static isDisliked(hct) {\n const huePasses = Math.round(hct.hue) >= 90.0 && Math.round(hct.hue) <= 111.0;\n const chromaPasses = Math.round(hct.chroma) > 16.0;\n const tonePasses = Math.round(hct.tone) < 65.0;\n return huePasses && chromaPasses && tonePasses;\n }\n /**\n * If a color is disliked, lighten it to make it likable.\n *\n * @param hct A color to be judged.\n * @return A new color if the original color is disliked, or the original\n * color if it is acceptable.\n */\n static fixIfDisliked(hct) {\n if (DislikeAnalyzer.isDisliked(hct)) {\n return Hct.from(hct.hue, hct.chroma, 70.0);\n }\n return hct;\n }\n}\n//# sourceMappingURL=dislike_analyzer.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Contrast } from '../contrast/contrast.js';\nimport * as math from '../utils/math_utils.js';\n/**\n * A color that adjusts itself based on UI state provided by DynamicScheme.\n *\n * Colors without backgrounds do not change tone when contrast changes. Colors\n * with backgrounds become closer to their background as contrast lowers, and\n * further when contrast increases.\n *\n * Prefer static constructors. They require either a hexcode, a palette and\n * tone, or a hue and chroma. Optionally, they can provide a background\n * DynamicColor.\n */\nexport class DynamicColor {\n /**\n * Create a DynamicColor defined by a TonalPalette and HCT tone.\n *\n * @param args Functions with DynamicScheme as input. Must provide a palette\n * and tone. May provide a background DynamicColor and ToneDeltaConstraint.\n */\n static fromPalette(args) {\n return new DynamicColor(args.name ?? '', args.palette, args.tone, args.isBackground ?? false, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);\n }\n /**\n * The base constructor for DynamicColor.\n *\n * _Strongly_ prefer using one of the convenience constructors. This class is\n * arguably too flexible to ensure it can support any scenario. Functional\n * arguments allow overriding without risks that come with subclasses.\n *\n * For example, the default behavior of adjust tone at max contrast\n * to be at a 7.0 ratio with its background is principled and\n * matches accessibility guidance. That does not mean it's the desired\n * approach for _every_ design system, and every color pairing,\n * always, in every case.\n *\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given\n * DynamicScheme. A TonalPalette is defined by a hue and chroma, so this\n * replaces the need to specify hue/chroma. By providing a tonal palette, when\n * contrast adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone, given a DynamicScheme.\n * @param isBackground Whether this dynamic color is a background, with\n * some other color as the foreground. Defaults to false.\n * @param background The background of the dynamic color (as a function of a\n * `DynamicScheme`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `DynamicScheme`), if it\n * exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels options.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed.\n */\n constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {\n this.name = name;\n this.palette = palette;\n this.tone = tone;\n this.isBackground = isBackground;\n this.background = background;\n this.secondBackground = secondBackground;\n this.contrastCurve = contrastCurve;\n this.toneDeltaPair = toneDeltaPair;\n this.hctCache = new Map();\n if ((!background) && secondBackground) {\n throw new Error(`Color ${name} has secondBackground` +\n `defined, but background is not defined.`);\n }\n if ((!background) && contrastCurve) {\n throw new Error(`Color ${name} has contrastCurve` +\n `defined, but background is not defined.`);\n }\n if (background && !contrastCurve) {\n throw new Error(`Color ${name} has background` +\n `defined, but contrastCurve is not defined.`);\n }\n }\n /**\n * Return a ARGB integer (i.e. a hex code).\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getArgb(scheme) {\n return this.getHct(scheme).toInt();\n }\n /**\n * Return a color, expressed in the HCT color space, that this\n * DynamicColor is under the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getHct(scheme) {\n const cachedAnswer = this.hctCache.get(scheme);\n if (cachedAnswer != null) {\n return cachedAnswer;\n }\n const tone = this.getTone(scheme);\n const answer = this.palette(scheme).getHct(tone);\n if (this.hctCache.size > 4) {\n this.hctCache.clear();\n }\n this.hctCache.set(scheme, answer);\n return answer;\n }\n /**\n * Return a tone, T in the HCT color space, that this DynamicColor is under\n * the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getTone(scheme) {\n const decreasingContrast = scheme.contrastLevel < 0;\n // Case 1: dual foreground, pair of colors with delta constraint.\n if (this.toneDeltaPair) {\n const toneDeltaPair = this.toneDeltaPair(scheme);\n const roleA = toneDeltaPair.roleA;\n const roleB = toneDeltaPair.roleB;\n const delta = toneDeltaPair.delta;\n const polarity = toneDeltaPair.polarity;\n const stayTogether = toneDeltaPair.stayTogether;\n const bg = this.background(scheme);\n const bgTone = bg.getTone(scheme);\n const aIsNearer = (polarity === 'nearer' ||\n (polarity === 'lighter' && !scheme.isDark) ||\n (polarity === 'darker' && scheme.isDark));\n const nearer = aIsNearer ? roleA : roleB;\n const farther = aIsNearer ? roleB : roleA;\n const amNearer = this.name === nearer.name;\n const expansionDir = scheme.isDark ? 1 : -1;\n // 1st round: solve to min, each\n const nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel);\n const fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel);\n // If a color is good enough, it is not adjusted.\n // Initial and adjusted tones for `nearer`\n const nInitialTone = nearer.tone(scheme);\n let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ?\n nInitialTone :\n DynamicColor.foregroundTone(bgTone, nContrast);\n // Initial and adjusted tones for `farther`\n const fInitialTone = farther.tone(scheme);\n let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ?\n fInitialTone :\n DynamicColor.foregroundTone(bgTone, fContrast);\n if (decreasingContrast) {\n // If decreasing contrast, adjust color to the \"bare minimum\"\n // that satisfies contrast.\n nTone = DynamicColor.foregroundTone(bgTone, nContrast);\n fTone = DynamicColor.foregroundTone(bgTone, fContrast);\n }\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones satisfy the constraint; no change needed.\n }\n else {\n // 2nd round: expand farther to match delta.\n fTone = math.clampDouble(0, 100, nTone + delta * expansionDir);\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones now satisfy the constraint; no change needed.\n }\n else {\n // 3rd round: contract nearer to match delta.\n nTone = math.clampDouble(0, 100, fTone - delta * expansionDir);\n }\n }\n // Avoids the 50-59 awkward zone.\n if (50 <= nTone && nTone < 60) {\n // If `nearer` is in the awkward zone, move it away, together with\n // `farther`.\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n }\n else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n }\n else if (50 <= fTone && fTone < 60) {\n if (stayTogether) {\n // Fixes both, to avoid two colors on opposite sides of the \"awkward\n // zone\".\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n }\n else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n }\n else {\n // Not required to stay together; fixes just one.\n if (expansionDir > 0) {\n fTone = 60;\n }\n else {\n fTone = 49;\n }\n }\n }\n // Returns `nTone` if this color is `nearer`, otherwise `fTone`.\n return amNearer ? nTone : fTone;\n }\n else {\n // Case 2: No contrast pair; just solve for itself.\n let answer = this.tone(scheme);\n if (this.background == null) {\n return answer; // No adjustment for colors with no background.\n }\n const bgTone = this.background(scheme).getTone(scheme);\n const desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio) {\n // Don't \"improve\" what's good enough.\n }\n else {\n // Rough improvement.\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n if (decreasingContrast) {\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n if (this.isBackground && 50 <= answer && answer < 60) {\n // Must adjust\n if (Contrast.ratioOfTones(49, bgTone) >= desiredRatio) {\n answer = 49;\n }\n else {\n answer = 60;\n }\n }\n if (this.secondBackground) {\n // Case 3: Adjust for dual backgrounds.\n const [bg1, bg2] = [this.background, this.secondBackground];\n const [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)];\n const [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio &&\n Contrast.ratioOfTones(lower, answer) >= desiredRatio) {\n return answer;\n }\n // The darkest light tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const lightOption = Contrast.lighter(upper, desiredRatio);\n // The lightest dark tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const darkOption = Contrast.darker(lower, desiredRatio);\n // Tones suitable for the foreground.\n const availables = [];\n if (lightOption !== -1)\n availables.push(lightOption);\n if (darkOption !== -1)\n availables.push(darkOption);\n const prefersLight = DynamicColor.tonePrefersLightForeground(bgTone1) ||\n DynamicColor.tonePrefersLightForeground(bgTone2);\n if (prefersLight) {\n return (lightOption < 0) ? 100 : lightOption;\n }\n if (availables.length === 1) {\n return availables[0];\n }\n return (darkOption < 0) ? 0 : darkOption;\n }\n return answer;\n }\n }\n /**\n * Given a background tone, find a foreground tone, while ensuring they reach\n * a contrast ratio that is as close to [ratio] as possible.\n *\n * @param bgTone Tone in HCT. Range is 0 to 100, undefined behavior when it\n * falls outside that range.\n * @param ratio The contrast ratio desired between bgTone and the return\n * value.\n */\n static foregroundTone(bgTone, ratio) {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio);\n const darkerTone = Contrast.darkerUnsafe(bgTone, ratio);\n const lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone);\n const darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n const preferLighter = DynamicColor.tonePrefersLightForeground(bgTone);\n if (preferLighter) {\n // This handles an edge case where the initial contrast ratio is high\n // (ex. 13.0), and the ratio passed to the function is that high\n // ratio, and both the lighter and darker ratio fails to pass that\n // ratio.\n //\n // This was observed with Tonal Spot's On Primary Container turning\n // black momentarily between high and max contrast in light mode. PC's\n // standard tone was T90, OPC's was T10, it was light mode, and the\n // contrast value was 0.6568521221032331.\n const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < 0.1 &&\n lighterRatio < ratio && darkerRatio < ratio;\n return lighterRatio >= ratio || lighterRatio >= darkerRatio ||\n negligibleDifference ?\n lighterTone :\n darkerTone;\n }\n else {\n return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone :\n lighterTone;\n }\n }\n /**\n * Returns whether [tone] prefers a light foreground.\n *\n * People prefer white foregrounds on ~T60-70. Observed over time, and also\n * by Andrew Somers during research for APCA.\n *\n * T60 used as to create the smallest discontinuity possible when skipping\n * down to T49 in order to ensure light foregrounds.\n * Since `tertiaryContainer` in dark monochrome scheme requires a tone of\n * 60, it should not be adjusted. Therefore, 60 is excluded here.\n */\n static tonePrefersLightForeground(tone) {\n return Math.round(tone) < 60.0;\n }\n /**\n * Returns whether [tone] can reach a contrast ratio of 4.5 with a lighter\n * color.\n */\n static toneAllowsLightForeground(tone) {\n return Math.round(tone) <= 49.0;\n }\n /**\n * Adjust a tone such that white has 4.5 contrast, if the tone is\n * reasonably close to supporting it.\n */\n static enableLightForeground(tone) {\n if (DynamicColor.tonePrefersLightForeground(tone) &&\n !DynamicColor.toneAllowsLightForeground(tone)) {\n return 49.0;\n }\n return tone;\n }\n}\n//# sourceMappingURL=dynamic_color.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Set of themes supported by Dynamic Color.\n * Instantiate the corresponding subclass, ex. SchemeTonalSpot, to create\n * colors corresponding to the theme.\n */\nexport var Variant;\n(function (Variant) {\n Variant[Variant[\"MONOCHROME\"] = 0] = \"MONOCHROME\";\n Variant[Variant[\"NEUTRAL\"] = 1] = \"NEUTRAL\";\n Variant[Variant[\"TONAL_SPOT\"] = 2] = \"TONAL_SPOT\";\n Variant[Variant[\"VIBRANT\"] = 3] = \"VIBRANT\";\n Variant[Variant[\"EXPRESSIVE\"] = 4] = \"EXPRESSIVE\";\n Variant[Variant[\"FIDELITY\"] = 5] = \"FIDELITY\";\n Variant[Variant[\"CONTENT\"] = 6] = \"CONTENT\";\n Variant[Variant[\"RAINBOW\"] = 7] = \"RAINBOW\";\n Variant[Variant[\"FRUIT_SALAD\"] = 8] = \"FRUIT_SALAD\";\n})(Variant || (Variant = {}));\n//# sourceMappingURL=variant.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as math from '../utils/math_utils.js';\n/**\n * A class containing the contrast curve for a dynamic color on its background.\n *\n * The four values correspond to contrast requirements for contrast levels\n * -1.0, 0.0, 0.5, and 1.0, respectively.\n */\nexport class ContrastCurve {\n /**\n * Creates a `ContrastCurve` object.\n *\n * @param low Contrast requirement for contrast level -1.0\n * @param normal Contrast requirement for contrast level 0.0\n * @param medium Contrast requirement for contrast level 0.5\n * @param high Contrast requirement for contrast level 1.0\n */\n constructor(low, normal, medium, high) {\n this.low = low;\n this.normal = normal;\n this.medium = medium;\n this.high = high;\n }\n /**\n * Returns the contrast ratio at a given contrast level.\n *\n * @param contrastLevel The contrast level. 0.0 is the default (normal);\n * -1.0 is the lowest; 1.0 is the highest.\n * @return The contrast ratio, a number between 1.0 and 21.0.\n */\n getContrast(contrastLevel) {\n if (contrastLevel <= -1.0) {\n return this.low;\n }\n else if (contrastLevel < 0.0) {\n return math.lerp(this.low, this.normal, (contrastLevel - (-1)) / 1);\n }\n else if (contrastLevel < 0.5) {\n return math.lerp(this.normal, this.medium, (contrastLevel - 0) / 0.5);\n }\n else if (contrastLevel < 1.0) {\n return math.lerp(this.medium, this.high, (contrastLevel - 0.5) / 0.5);\n }\n else {\n return this.high;\n }\n }\n}\n//# sourceMappingURL=contrast_curve.js.map","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Documents a constraint between two DynamicColors, in which their tones must\n * have a certain distance from each other.\n *\n * Prefer a DynamicColor with a background, this is for special cases when\n * designers want tonal distance, literally contrast, between two colors that\n * don't have a background / foreground relationship or a contrast guarantee.\n */\nexport class ToneDeltaPair {\n /**\n * Documents a constraint in tone distance between two DynamicColors.\n *\n * The polarity is an adjective that describes \"A\", compared to \"B\".\n *\n * For instance, ToneDeltaPair(A, B, 15, 'darker', stayTogether) states that\n * A's tone should be at least 15 darker than B's.\n *\n * 'nearer' and 'farther' describes closeness to the surface roles. For\n * instance, ToneDeltaPair(A, B, 10, 'nearer', stayTogether) states that A\n * should be 10 lighter than B in light mode, and 10 darker than B in dark\n * mode.\n *\n * @param roleA The first role in a pair.\n * @param roleB The second role in a pair.\n * @param delta Required difference between tones. Absolute value, negative\n * values have undefined behavior.\n * @param polarity The relative relation between tones of roleA and roleB,\n * as described above.\n * @param stayTogether Whether these two roles should stay on the same side of\n * the \"awkward zone\" (T50-59). This is necessary for certain cases where\n * one role has two backgrounds.\n */\n constructor(roleA, roleB, delta, polarity, stayTogether) {\n this.roleA = roleA;\n this.roleB = roleB;\n this.delta = delta;\n this.polarity = polarity;\n this.stayTogether = stayTogether;\n }\n}\n//# sourceMappingURL=tone_delta_pair.js.map","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DislikeAnalyzer } from '../dislike/dislike_analyzer.js';\nimport { Hct } from '../hct/hct.js';\nimport { ViewingConditions } from '../hct/viewing_conditions.js';\nimport { Variant } from '../scheme/variant.js';\nimport { ContrastCurve } from './contrast_curve.js';\nimport { DynamicColor } from './dynamic_color.js';\nimport { ToneDeltaPair } from './tone_delta_pair.js';\nfunction isFidelity(scheme) {\n return scheme.variant === Variant.FIDELITY ||\n scheme.variant === Variant.CONTENT;\n}\nfunction isMonochrome(scheme) {\n return scheme.variant === Variant.MONOCHROME;\n}\nfunction findDesiredChromaByTone(hue, chroma, tone, byDecreasingTone) {\n let answer = tone;\n let closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n while (closestToChroma.chroma < chroma) {\n answer += byDecreasingTone ? -1.0 : 1.0;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) {\n break;\n }\n if (Math.abs(potentialSolution.chroma - chroma) < 0.4) {\n break;\n }\n const potentialDelta = Math.abs(potentialSolution.chroma - chroma);\n const currentDelta = Math.abs(closestToChroma.chroma - chroma);\n if (potentialDelta < currentDelta) {\n closestToChroma = potentialSolution;\n }\n chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n return answer;\n}\nfunction viewingConditionsForAlbers(scheme) {\n return ViewingConditions.make(\n /*whitePoint=*/ undefined, \n /*adaptingLuminance=*/ undefined, \n /*backgroundLstar=*/ scheme.isDark ? 30 : 80, \n /*surround=*/ undefined, \n /*discountingIlluminant=*/ undefined);\n}\nfunction performAlbers(prealbers, scheme) {\n const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));\n if (DynamicColor.tonePrefersLightForeground(prealbers.tone) &&\n !DynamicColor.toneAllowsLightForeground(albersd.tone)) {\n return DynamicColor.enableLightForeground(prealbers.tone);\n }\n else {\n return DynamicColor.enableLightForeground(albersd.tone);\n }\n}\n/**\n * DynamicColors for the colors in the Material Design system.\n */\n// Material Color Utilities namespaces the various utilities it provides.\n// tslint:disable-next-line:class-as-namespace\nexport class MaterialDynamicColors {\n static highestSurface(s) {\n return s.isDark ? MaterialDynamicColors.surfaceBright :\n MaterialDynamicColors.surfaceDim;\n }\n}\nMaterialDynamicColors.contentAccentToneDelta = 15.0;\nMaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({\n name: 'primary_palette_key_color',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.primaryPalette.keyColor.tone,\n});\nMaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({\n name: 'secondary_palette_key_color',\n palette: (s) => s.secondaryPalette,\n tone: (s) => s.secondaryPalette.keyColor.tone,\n});\nMaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({\n name: 'tertiary_palette_key_color',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => s.tertiaryPalette.keyColor.tone,\n});\nMaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({\n name: 'neutral_palette_key_color',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.neutralPalette.keyColor.tone,\n});\nMaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({\n name: 'neutral_variant_palette_key_color',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.neutralVariantPalette.keyColor.tone,\n});\nMaterialDynamicColors.background = DynamicColor.fromPalette({\n name: 'background',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 98,\n isBackground: true,\n});\nMaterialDynamicColors.onBackground = DynamicColor.fromPalette({\n name: 'on_background',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => MaterialDynamicColors.background,\n contrastCurve: new ContrastCurve(3, 3, 4.5, 7),\n});\nMaterialDynamicColors.surface = DynamicColor.fromPalette({\n name: 'surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 98,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({\n name: 'surface_dim',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 87,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({\n name: 'surface_bright',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 24 : 98,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({\n name: 'surface_container_lowest',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 4 : 100,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({\n name: 'surface_container_low',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 10 : 96,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({\n name: 'surface_container',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 12 : 94,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({\n name: 'surface_container_high',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 17 : 92,\n isBackground: true,\n});\nMaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({\n name: 'surface_container_highest',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 22 : 90,\n isBackground: true,\n});\nMaterialDynamicColors.onSurface = DynamicColor.fromPalette({\n name: 'on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({\n name: 'surface_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 30 : 90,\n isBackground: true,\n});\nMaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({\n name: 'on_surface_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 80 : 30,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\nMaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({\n name: 'inverse_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 20,\n});\nMaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({\n name: 'inverse_on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 20 : 95,\n background: (s) => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.outline = DynamicColor.fromPalette({\n name: 'outline',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 60 : 50,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7),\n});\nMaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({\n name: 'outline_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 30 : 80,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n});\nMaterialDynamicColors.shadow = DynamicColor.fromPalette({\n name: 'shadow',\n palette: (s) => s.neutralPalette,\n tone: (s) => 0,\n});\nMaterialDynamicColors.scrim = DynamicColor.fromPalette({\n name: 'scrim',\n palette: (s) => s.neutralPalette,\n tone: (s) => 0,\n});\nMaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({\n name: 'surface_tint',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n});\nMaterialDynamicColors.primary = DynamicColor.fromPalette({\n name: 'primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 100 : 0;\n }\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onPrimary = DynamicColor.fromPalette({\n name: 'on_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 90;\n }\n return s.isDark ? 20 : 100;\n },\n background: (s) => MaterialDynamicColors.primary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({\n name: 'primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isFidelity(s)) {\n return performAlbers(s.sourceColorHct, s);\n }\n if (isMonochrome(s)) {\n return s.isDark ? 85 : 25;\n }\n return s.isDark ? 30 : 90;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({\n name: 'on_primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isFidelity(s)) {\n return DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5);\n }\n if (isMonochrome(s)) {\n return s.isDark ? 0 : 100;\n }\n return s.isDark ? 90 : 10;\n },\n background: (s) => MaterialDynamicColors.primaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({\n name: 'inverse_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.isDark ? 40 : 80,\n background: (s) => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\nMaterialDynamicColors.secondary = DynamicColor.fromPalette({\n name: 'secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onSecondary = DynamicColor.fromPalette({\n name: 'on_secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 100;\n }\n else {\n return s.isDark ? 20 : 100;\n }\n },\n background: (s) => MaterialDynamicColors.secondary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({\n name: 'secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n const initialTone = s.isDark ? 30 : 90;\n if (isMonochrome(s)) {\n return s.isDark ? 30 : 85;\n }\n if (!isFidelity(s)) {\n return initialTone;\n }\n let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, s.isDark ? false : true);\n answer = performAlbers(s.secondaryPalette.getHct(answer), s);\n return answer;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({\n name: 'on_secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (!isFidelity(s)) {\n return s.isDark ? 90 : 10;\n }\n return DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5);\n },\n background: (s) => MaterialDynamicColors.secondaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.tertiary = DynamicColor.fromPalette({\n name: 'tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 90 : 25;\n }\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onTertiary = DynamicColor.fromPalette({\n name: 'on_tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 90;\n }\n return s.isDark ? 20 : 100;\n },\n background: (s) => MaterialDynamicColors.tertiary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({\n name: 'tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 60 : 49;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 30 : 90;\n }\n const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s);\n const proposedHct = s.tertiaryPalette.getHct(albersTone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, 'nearer', false),\n});\nMaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({\n name: 'on_tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 0 : 100;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 90 : 10;\n }\n return DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5);\n },\n background: (s) => MaterialDynamicColors.tertiaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.error = DynamicColor.fromPalette({\n name: 'error',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, 'nearer', false),\n});\nMaterialDynamicColors.onError = DynamicColor.fromPalette({\n name: 'on_error',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 20 : 100,\n background: (s) => MaterialDynamicColors.error,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.errorContainer = DynamicColor.fromPalette({\n name: 'error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 30 : 90,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, 'nearer', false),\n});\nMaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({\n name: 'on_error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => MaterialDynamicColors.errorContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({\n name: 'primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 40.0 : 90.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({\n name: 'primary_fixed_dim',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 30.0 : 80.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({\n name: 'on_primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 100.0 : 10.0,\n background: (s) => MaterialDynamicColors.primaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({\n name: 'on_primary_fixed_variant',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 90.0 : 30.0,\n background: (s) => MaterialDynamicColors.primaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\nMaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({\n name: 'secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 80.0 : 90.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({\n name: 'secondary_fixed_dim',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 70.0 : 80.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({\n name: 'on_secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => 10.0,\n background: (s) => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({\n name: 'on_secondary_fixed_variant',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 25.0 : 30.0,\n background: (s) => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\nMaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({\n name: 'tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 40.0 : 90.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({\n name: 'tertiary_fixed_dim',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 30.0 : 80.0,\n isBackground: true,\n background: (s) => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, 'lighter', true),\n});\nMaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({\n name: 'on_tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 100.0 : 10.0,\n background: (s) => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21),\n});\nMaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({\n name: 'on_tertiary_fixed_variant',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 90.0 : 30.0,\n background: (s) => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: (s) => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n});\n//# sourceMappingURL=material_dynamic_colors.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as colorUtils from './color_utils.js';\n/**\n * Utility methods for hexadecimal representations of colors.\n */\n/**\n * @param argb ARGB representation of a color.\n * @return Hex string representing color, ex. #ff0000 for red.\n */\nexport function hexFromArgb(argb) {\n const r = colorUtils.redFromArgb(argb);\n const g = colorUtils.greenFromArgb(argb);\n const b = colorUtils.blueFromArgb(argb);\n const outParts = [r.toString(16), g.toString(16), b.toString(16)];\n // Pad single-digit output values\n for (const [i, part] of outParts.entries()) {\n if (part.length === 1) {\n outParts[i] = '0' + part;\n }\n }\n return '#' + outParts.join('');\n}\n/**\n * @param hex String representing color as hex code. Accepts strings with or\n * without leading #, and string representing the color using 3, 6, or 8\n * hex characters.\n * @return ARGB representation of color.\n */\nexport function argbFromHex(hex) {\n hex = hex.replace('#', '');\n const isThree = hex.length === 3;\n const isSix = hex.length === 6;\n const isEight = hex.length === 8;\n if (!isThree && !isSix && !isEight) {\n throw new Error('unexpected hex ' + hex);\n }\n let r = 0;\n let g = 0;\n let b = 0;\n if (isThree) {\n r = parseIntHex(hex.slice(0, 1).repeat(2));\n g = parseIntHex(hex.slice(1, 2).repeat(2));\n b = parseIntHex(hex.slice(2, 3).repeat(2));\n }\n else if (isSix) {\n r = parseIntHex(hex.slice(0, 2));\n g = parseIntHex(hex.slice(2, 4));\n b = parseIntHex(hex.slice(4, 6));\n }\n else if (isEight) {\n r = parseIntHex(hex.slice(2, 4));\n g = parseIntHex(hex.slice(4, 6));\n b = parseIntHex(hex.slice(6, 8));\n }\n return (((255 << 24) | ((r & 0x0ff) << 16) | ((g & 0x0ff) << 8) | (b & 0x0ff)) >>>\n 0);\n}\nfunction parseIntHex(value) {\n // tslint:disable-next-line:ban\n return parseInt(value, 16);\n}\n//# sourceMappingURL=string_utils.js.map","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory());\n})(this, (function () { 'use strict';\n\n var limit$2 = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var limit$1 = limit$2;\n\n var clip_rgb$3 = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit$1(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit$1(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i$1 = 0, list$1 = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i$1 < list$1.length; i$1 += 1) {\n var name = list$1[i$1];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type$p = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var type$o = type$p;\n\n var unpack$B = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type$o(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var type$n = type$p;\n\n var last$4 = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type$n(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI$2 = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb$3,\n \tlimit: limit$2,\n \ttype: type$p,\n \tunpack: unpack$B,\n \tlast: last$4,\n \tPI: PI$2,\n \tTWOPI: PI$2*2,\n \tPITHIRD: PI$2/3,\n \tDEG2RAD: PI$2 / 180,\n \tRAD2DEG: 180 / PI$2\n };\n\n var input$h = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$3 = utils.last;\n var clip_rgb$2 = utils.clip_rgb;\n var type$m = utils.type;\n var _input = input$h;\n\n var Color$D = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$m(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$3(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!_input.sorted) {\n _input.autodetect = _input.autodetect.sort(function (a,b) { return b.p - a.p; });\n _input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = _input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (_input.format[mode]) {\n var rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$2(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color$D.prototype.toString = function toString () {\n if (type$m(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color$D;\n\n var chroma$k = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma$k.Color, [ null ].concat( args) ));\n };\n\n chroma$k.Color = Color_1;\n chroma$k.version = '2.4.2';\n\n var chroma_1 = chroma$k;\n\n var unpack$A = utils.unpack;\n var max$2 = Math.max;\n\n var rgb2cmyk$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$A(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max$2(r,max$2(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk$1;\n\n var unpack$z = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$z(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var chroma$j = chroma_1;\n var Color$C = Color_1;\n var input$g = input$h;\n var unpack$y = utils.unpack;\n var type$l = utils.type;\n\n var rgb2cmyk = rgb2cmyk_1;\n\n Color$C.prototype.cmyk = function() {\n return rgb2cmyk(this._rgb);\n };\n\n chroma$j.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$C, [ null ].concat( args, ['cmyk']) ));\n };\n\n input$g.format.cmyk = cmyk2rgb_1;\n\n input$g.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$y(args, 'cmyk');\n if (type$l(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$x = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$x(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css$1;\n\n var unpack$w = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl$3 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$w(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl$3;\n\n var unpack$v = utils.unpack;\n var last$1 = utils.last;\n var hsl2css = hsl2css_1;\n var rgb2hsl$2 = rgb2hsl_1;\n var round$6 = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$v(args, 'rgba');\n var mode = last$1(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css(rgb2hsl$2(rgba), mode);\n }\n rgba[0] = round$6(rgba[0]);\n rgba[1] = round$6(rgba[1]);\n rgba[2] = round$6(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css$1;\n\n var unpack$u = utils.unpack;\n var round$5 = Math.round;\n\n var hsl2rgb$1 = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$u(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$5(c[0]*255),round$5(c[1]*255),round$5(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb$1;\n\n var hsl2rgb = hsl2rgb_1;\n var input$f = input$h;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$4 = Math.round;\n\n var css2rgb$1 = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input$f.format.named) {\n try {\n return input$f.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb$1.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb$1;\n\n var chroma$i = chroma_1;\n var Color$B = Color_1;\n var input$e = input$h;\n var type$k = utils.type;\n\n var rgb2css = rgb2css_1;\n var css2rgb = css2rgb_1;\n\n Color$B.prototype.css = function(mode) {\n return rgb2css(this._rgb, mode);\n };\n\n chroma$i.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$B, [ null ].concat( args, ['css']) ));\n };\n\n input$e.format.css = css2rgb;\n\n input$e.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$k(h) === 'string' && css2rgb.test(h)) {\n return 'css';\n }\n }\n });\n\n var Color$A = Color_1;\n var chroma$h = chroma_1;\n var input$d = input$h;\n var unpack$t = utils.unpack;\n\n input$d.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$t(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma$h.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$A, [ null ].concat( args, ['gl']) ));\n };\n\n Color$A.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$s = utils.unpack;\n\n var rgb2hcg$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$s(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg$1;\n\n var unpack$r = utils.unpack;\n var floor$3 = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$r(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor$3(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$q = utils.unpack;\n var type$j = utils.type;\n var chroma$g = chroma_1;\n var Color$z = Color_1;\n var input$c = input$h;\n\n var rgb2hcg = rgb2hcg_1;\n\n Color$z.prototype.hcg = function() {\n return rgb2hcg(this._rgb);\n };\n\n chroma$g.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$z, [ null ].concat( args, ['hcg']) ));\n };\n\n input$c.format.hcg = hcg2rgb_1;\n\n input$c.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'hcg');\n if (type$j(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$p = utils.unpack;\n var last = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$p(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex$2;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\n var hex2rgb$1 = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 5 || hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n // expand short-notation to full eight-digit\n if (hex.length === 4) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb$1;\n\n var chroma$f = chroma_1;\n var Color$y = Color_1;\n var type$i = utils.type;\n var input$b = input$h;\n\n var rgb2hex$1 = rgb2hex_1;\n\n Color$y.prototype.hex = function(mode) {\n return rgb2hex$1(this._rgb, mode);\n };\n\n chroma$f.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$y, [ null ].concat( args, ['hex']) ));\n };\n\n input$b.format.hex = hex2rgb_1;\n input$b.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$i(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) {\n return 'hex';\n }\n }\n });\n\n var unpack$o = utils.unpack;\n var TWOPI$2 = utils.TWOPI;\n var min$2 = Math.min;\n var sqrt$4 = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min$2(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt$4((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI$2 - h;\n }\n h /= TWOPI$2;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi$1;\n\n var unpack$n = utils.unpack;\n var limit = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos$4 = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$n(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit(i*r*3);\n g = limit(i*g*3);\n b = limit(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$m = utils.unpack;\n var type$h = utils.type;\n var chroma$e = chroma_1;\n var Color$x = Color_1;\n var input$a = input$h;\n\n var rgb2hsi = rgb2hsi_1;\n\n Color$x.prototype.hsi = function() {\n return rgb2hsi(this._rgb);\n };\n\n chroma$e.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$x, [ null ].concat( args, ['hsi']) ));\n };\n\n input$a.format.hsi = hsi2rgb_1;\n\n input$a.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'hsi');\n if (type$h(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$l = utils.unpack;\n var type$g = utils.type;\n var chroma$d = chroma_1;\n var Color$w = Color_1;\n var input$9 = input$h;\n\n var rgb2hsl$1 = rgb2hsl_1;\n\n Color$w.prototype.hsl = function() {\n return rgb2hsl$1(this._rgb);\n };\n\n chroma$d.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$w, [ null ].concat( args, ['hsl']) ));\n };\n\n input$9.format.hsl = hsl2rgb_1;\n\n input$9.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'hsl');\n if (type$g(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$k = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$k(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv$1 = rgb2hsl;\n\n var unpack$j = utils.unpack;\n var floor$2 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$j(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$2(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$i = utils.unpack;\n var type$f = utils.type;\n var chroma$c = chroma_1;\n var Color$v = Color_1;\n var input$8 = input$h;\n\n var rgb2hsv = rgb2hsv$1;\n\n Color$v.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma$c.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$v, [ null ].concat( args, ['hsv']) ));\n };\n\n input$8.format.hsv = hsv2rgb_1;\n\n input$8.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$i(args, 'hsv');\n if (type$f(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var LAB_CONSTANTS$3 = labConstants;\n var unpack$h = utils.unpack;\n var pow$a = Math.pow;\n\n var rgb2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$h(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow$a((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > LAB_CONSTANTS$3.t3) { return pow$a(t, 1 / 3); }\n return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS$3.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab$2;\n\n var LAB_CONSTANTS$2 = labConstants;\n var unpack$g = utils.unpack;\n var pow$9 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = LAB_CONSTANTS$2.Yn * lab_xyz(y);\n x = LAB_CONSTANTS$2.Xn * lab_xyz(x);\n z = LAB_CONSTANTS$2.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0)\n };\n\n var lab2rgb_1 = lab2rgb$1;\n\n var unpack$f = utils.unpack;\n var type$e = utils.type;\n var chroma$b = chroma_1;\n var Color$u = Color_1;\n var input$7 = input$h;\n\n var rgb2lab$1 = rgb2lab_1;\n\n Color$u.prototype.lab = function() {\n return rgb2lab$1(this._rgb);\n };\n\n chroma$b.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$u, [ null ].concat( args, ['lab']) ));\n };\n\n input$7.format.lab = lab2rgb_1;\n\n input$7.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'lab');\n if (type$e(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$e = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$3 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var round$2 = Math.round;\n\n var lab2lch$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$e(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$3(a * a + b * b);\n var h = (atan2$2(b, a) * RAD2DEG + 360) % 360;\n if (round$2(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch$2;\n\n var unpack$d = utils.unpack;\n var rgb2lab = rgb2lab_1;\n var lab2lch$1 = lab2lch_1;\n\n var rgb2lch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch$1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch$1;\n\n var unpack$c = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin$3 = Math.sin;\n var cos$3 = Math.cos;\n\n var lch2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$c(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$3(h) * c, sin$3(h) * c]\n };\n\n var lch2lab_1 = lch2lab$2;\n\n var unpack$b = utils.unpack;\n var lch2lab$1 = lch2lab_1;\n var lab2rgb = lab2rgb_1;\n\n var lch2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab$1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb$1;\n\n var unpack$a = utils.unpack;\n var lch2rgb = lch2rgb_1;\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$a(args, 'hcl').reverse();\n return lch2rgb.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$9 = utils.unpack;\n var type$d = utils.type;\n var chroma$a = chroma_1;\n var Color$t = Color_1;\n var input$6 = input$h;\n\n var rgb2lch = rgb2lch_1;\n\n Color$t.prototype.lch = function() { return rgb2lch(this._rgb); };\n Color$t.prototype.hcl = function() { return rgb2lch(this._rgb).reverse(); };\n\n chroma$a.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['lch']) ));\n };\n chroma$a.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['hcl']) ));\n };\n\n input$6.format.lch = lch2rgb_1;\n input$6.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input$6.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$9(args, m);\n if (type$d(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11$1 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11$1;\n\n var Color$s = Color_1;\n var input$5 = input$h;\n var type$c = utils.type;\n\n var w3cx11 = w3cx11_1;\n var hex2rgb = hex2rgb_1;\n var rgb2hex = rgb2hex_1;\n\n Color$s.prototype.name = function() {\n var hex = rgb2hex(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input$5.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11[name]) { return hex2rgb(w3cx11[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input$5.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$c(h) === 'string' && w3cx11[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n var rgb2num$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$8(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num$1;\n\n var type$b = utils.type;\n\n var num2rgb = function (num) {\n if (type$b(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var chroma$9 = chroma_1;\n var Color$r = Color_1;\n var input$4 = input$h;\n var type$a = utils.type;\n\n var rgb2num = rgb2num_1;\n\n Color$r.prototype.num = function() {\n return rgb2num(this._rgb);\n };\n\n chroma$9.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$r, [ null ].concat( args, ['num']) ));\n };\n\n input$4.format.num = num2rgb_1;\n\n input$4.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$a(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var chroma$8 = chroma_1;\n var Color$q = Color_1;\n var input$3 = input$h;\n var unpack$7 = utils.unpack;\n var type$9 = utils.type;\n var round$1 = Math.round;\n\n Color$q.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$1);\n };\n\n Color$q.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$1(v)) : v;\n });\n };\n\n chroma$8.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$q, [ null ].concat( args, ['rgb']) ));\n };\n\n input$3.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$7(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input$3.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$7(args, 'rgba');\n if (type$9(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$9(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log$1 = Math.log;\n\n var temperature2rgb$1 = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log$1(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log$1(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log$1(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log$1(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb$1;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n var temperature2rgb = temperature2rgb_1;\n var unpack$6 = utils.unpack;\n var round = Math.round;\n\n var rgb2temperature$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$6(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature$1;\n\n var chroma$7 = chroma_1;\n var Color$p = Color_1;\n var input$2 = input$h;\n\n var rgb2temperature = rgb2temperature_1;\n\n Color$p.prototype.temp =\n Color$p.prototype.kelvin =\n Color$p.prototype.temperature = function() {\n return rgb2temperature(this._rgb);\n };\n\n chroma$7.temp =\n chroma$7.kelvin =\n chroma$7.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$p, [ null ].concat( args, ['temp']) ));\n };\n\n input$2.format.temp =\n input$2.format.kelvin =\n input$2.format.temperature = temperature2rgb_1;\n\n var unpack$5 = utils.unpack;\n var cbrt = Math.cbrt;\n var pow$8 = Math.pow;\n var sign$1 = Math.sign;\n\n var rgb2oklab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // OKLab color space implementation taken from\n // https://bottosson.github.io/posts/oklab/\n var ref = unpack$5(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)];\n var lr = ref$1[0];\n var lg = ref$1[1];\n var lb = ref$1[2];\n var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n };\n\n var rgb2oklab_1 = rgb2oklab$2;\n\n function rgb2lrgb(c) {\n var abs = Math.abs(c);\n if (abs < 0.04045) {\n return c / 12.92;\n }\n return (sign$1(c) || 1) * pow$8((abs + 0.055) / 1.055, 2.4);\n }\n\n var unpack$4 = utils.unpack;\n var pow$7 = Math.pow;\n var sign = Math.sign;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var oklab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$4(args, 'lab');\n var L = args[0];\n var a = args[1];\n var b = args[2];\n\n var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3);\n var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3);\n var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3);\n\n return [\n 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),\n 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),\n 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),\n args.length > 3 ? args[3] : 1\n ];\n };\n\n var oklab2rgb_1 = oklab2rgb$1;\n\n function lrgb2rgb(c) {\n var abs = Math.abs(c);\n if (abs > 0.0031308) {\n return (sign(c) || 1) * (1.055 * pow$7(abs, 1 / 2.4) - 0.055);\n }\n return c * 12.92;\n }\n\n var unpack$3 = utils.unpack;\n var type$8 = utils.type;\n var chroma$6 = chroma_1;\n var Color$o = Color_1;\n var input$1 = input$h;\n\n var rgb2oklab$1 = rgb2oklab_1;\n\n Color$o.prototype.oklab = function () {\n return rgb2oklab$1(this._rgb);\n };\n\n chroma$6.oklab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$o, [ null ].concat( args, ['oklab']) ));\n };\n\n input$1.format.oklab = oklab2rgb_1;\n\n input$1.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'oklab');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'oklab';\n }\n }\n });\n\n var unpack$2 = utils.unpack;\n var rgb2oklab = rgb2oklab_1;\n var lab2lch = lab2lch_1;\n\n var rgb2oklch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$2(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2oklab(r, g, b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch(l, a, b_);\n };\n\n var rgb2oklch_1 = rgb2oklch$1;\n\n var unpack$1 = utils.unpack;\n var lch2lab = lch2lab_1;\n var oklab2rgb = oklab2rgb_1;\n\n var oklch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$1(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab(l, c, h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = oklab2rgb(L, a, b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var oklch2rgb_1 = oklch2rgb;\n\n var unpack = utils.unpack;\n var type$7 = utils.type;\n var chroma$5 = chroma_1;\n var Color$n = Color_1;\n var input = input$h;\n\n var rgb2oklch = rgb2oklch_1;\n\n Color$n.prototype.oklch = function () {\n return rgb2oklch(this._rgb);\n };\n\n chroma$5.oklch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$n, [ null ].concat( args, ['oklch']) ));\n };\n\n input.format.oklch = oklch2rgb_1;\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack(args, 'oklch');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'oklch';\n }\n }\n });\n\n var Color$m = Color_1;\n var type$6 = utils.type;\n\n Color$m.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$6(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n var Color$l = Color_1;\n\n Color$l.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n var Color$k = Color_1;\n var LAB_CONSTANTS$1 = labConstants;\n\n Color$k.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= LAB_CONSTANTS$1.Kn * amount;\n \treturn new Color$k(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color$k.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color$k.prototype.darker = Color$k.prototype.darken;\n Color$k.prototype.brighter = Color$k.prototype.brighten;\n\n var Color$j = Color_1;\n\n Color$j.prototype.get = function (mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$i = Color_1;\n var type$5 = utils.type;\n var pow$6 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color$i.prototype.luminance = function(lum) {\n if (lum !== undefined && type$5(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color$i([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color$i([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color$i([0,0,0]), this) : test(this, new Color$i([255,255,255]))).rgb();\n return new Color$i(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$6((x+0.055)/1.055, 2.4);\n };\n\n var interpolator$1 = {};\n\n var Color$h = Color_1;\n var type$4 = utils.type;\n var interpolator = interpolator$1;\n\n var mix$1 = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$4(col1) !== 'object') { col1 = new Color$h(col1); }\n if (type$4(col2) !== 'object') { col2 = new Color$h(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n var Color$g = Color_1;\n var mix = mix$1;\n\n Color$g.prototype.mix =\n Color$g.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n var Color$f = Color_1;\n\n Color$f.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color$f([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n var Color$e = Color_1;\n var LAB_CONSTANTS = labConstants;\n\n Color$e.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += LAB_CONSTANTS.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color$e(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color$e.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var Color$d = Color_1;\n var type$3 = utils.type;\n\n Color$d.prototype.set = function (mc, value, mutate) {\n if ( mutate === void 0 ) mutate = false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) {\n if (type$3(value) == 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +value.substr(1);\n break;\n case '/':\n src[i] /= +value.substr(1);\n break;\n default:\n src[i] = +value;\n }\n } else if (type$3(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color$d(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$c = Color_1;\n\n var rgb = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color$c(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.rgb = rgb;\n\n var Color$b = Color_1;\n var sqrt$2 = Math.sqrt;\n var pow$5 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color$b(\n sqrt$2(pow$5(x1,2) * (1-f) + pow$5(x2,2) * f),\n sqrt$2(pow$5(y1,2) * (1-f) + pow$5(y2,2) * f),\n sqrt$2(pow$5(z1,2) * (1-f) + pow$5(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.lrgb = lrgb;\n\n var Color$a = Color_1;\n\n var lab = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color$a(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator$1.lab = lab;\n\n var Color$9 = Color_1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n } else if (m === 'oklch') {\n xyz0 = col1.oklch().reverse();\n xyz1 = col2.oklch().reverse();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h' || m === 'oklch') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1 - lbv0);\n return m === 'oklch' ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m);\n };\n\n var interpolate_hsx$5 = _hsx;\n\n var lch = function (col1, col2, f) {\n \treturn interpolate_hsx$5(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator$1.lch = lch;\n interpolator$1.hcl = lch;\n\n var Color$8 = Color_1;\n\n var num = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color$8(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator$1.num = num;\n\n var interpolate_hsx$4 = _hsx;\n\n var hcg = function (col1, col2, f) {\n \treturn interpolate_hsx$4(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator$1.hcg = hcg;\n\n var interpolate_hsx$3 = _hsx;\n\n var hsi = function (col1, col2, f) {\n \treturn interpolate_hsx$3(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator$1.hsi = hsi;\n\n var interpolate_hsx$2 = _hsx;\n\n var hsl = function (col1, col2, f) {\n \treturn interpolate_hsx$2(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator$1.hsl = hsl;\n\n var interpolate_hsx$1 = _hsx;\n\n var hsv = function (col1, col2, f) {\n \treturn interpolate_hsx$1(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator$1.hsv = hsv;\n\n var Color$7 = Color_1;\n\n var oklab = function (col1, col2, f) {\n var xyz0 = col1.oklab();\n var xyz1 = col2.oklab();\n return new Color$7(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'oklab'\n );\n };\n\n // register interpolator\n interpolator$1.oklab = oklab;\n\n var interpolate_hsx = _hsx;\n\n var oklch = function (col1, col2, f) {\n return interpolate_hsx(col1, col2, f, 'oklch');\n };\n\n // register interpolator\n interpolator$1.oklch = oklch;\n\n var Color$6 = Color_1;\n var clip_rgb$1 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$1 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$2 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode, weights) {\n if ( mode === void 0 ) mode='lrgb';\n if ( weights === void 0 ) weights=null;\n\n var l = colors.length;\n if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); }\n // normalize weights\n var k = l / weights.reduce(function(a, b) { return a + b; });\n weights.forEach(function (w,i) { weights[i] *= k; });\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color$6(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors, weights)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color$6(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors, weights) {\n var l = colors.length;\n var xyz = [0,0,0,0];\n for (var i=0; i < colors.length; i++) {\n var col = colors[i];\n var f = weights[i] / l;\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$1(xyz[0]);\n xyz[1] = sqrt$1(xyz[1]);\n xyz[2] = sqrt$1(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color$6(clip_rgb$1(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n var chroma$4 = chroma_1;\n var type$2 = utils.type;\n\n var pow$3 = Math.pow;\n\n var scale$2 = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma$4('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$2(colors) === 'string' && chroma$4.brewer &&\n chroma$4.brewer[colors.toLowerCase()]) {\n colors = chroma$4.brewer[colors.toLowerCase()];\n }\n if (type$2(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tMapLightness = function (t) { return t; };\n var tMapDomain = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n // domain map\n t = tMapDomain(t);\n\n if (!bypassMap) {\n t = tMapLightness(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$3(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$2(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma$4.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$2(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma$4(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$2(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma$4.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma$4.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c 2) {\n // set domain map\n var tOut = domain.map(function (d,i) { return i/(domain.length-1); });\n var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); });\n if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) {\n tMapDomain = function (t) {\n if (t <= 0 || t >= 1) { return t; }\n var i = 0;\n while (t >= tBreaks[i+1]) { i++; }\n var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]);\n var out = tOut[i] + f * (tOut[i+1] - tOut[i]);\n return out;\n };\n }\n\n }\n }\n _domain = [_min, _max];\n return f;\n };\n\n f.mode = function(_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n\n f.range = function(colors, _pos) {\n setColors(colors);\n return f;\n };\n\n f.out = function(_o) {\n _out = _o;\n return f;\n };\n\n f.spread = function(val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n\n f.correctLightness = function(v) {\n if (v == null) { v = true; }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tMapLightness = function(t) {\n var L0 = getColor(0, true).lab()[0];\n var L1 = getColor(1, true).lab()[0];\n var pol = L0 > L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tMapLightness = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$2(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma$4[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma$4(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n var Color$5 = Color_1;\n\n var scale$1 = scale$2;\n\n // nth row of the pascal triangle\n var binom_row = function(n) {\n var row = [1, 1];\n for (var i = 1; i < n; i++) {\n var newrow = [1];\n for (var j = 1; j <= row.length; j++) {\n newrow[j] = (row[j] || 0) + row[j - 1];\n }\n row = newrow;\n }\n return row;\n };\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color$5(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length >= 5) {\n // general case (degree n bezier)\n var labs, row, n;\n labs = colors.map(function (c) { return c.lab(); });\n n = colors.length - 1;\n row = binom_row(n);\n I = function (t) {\n var u = 1 - t;\n var lab = ([0, 1, 2].map(function (i) { return labs.reduce(function (sum, el, j) { return (sum + row[j] * Math.pow( u, (n - j) ) * Math.pow( t, j ) * el[i]); }, 0); }));\n return new Color$5(lab, 'lab');\n };\n } else {\n throw new RangeError(\"No point in running bezier with only one color.\")\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale$1(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n var chroma$3 = chroma_1;\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma$3(top).rgb();\n var c1 = chroma$3(bottom).rgb();\n return chroma$3.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$1 = utils.type;\n var clip_rgb = utils.clip_rgb;\n var TWOPI = utils.TWOPI;\n var pow$2 = Math.pow;\n var sin$1 = Math.sin;\n var cos$1 = Math.cos;\n var chroma$2 = chroma_1;\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$1(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI * (((start+120)/360) + (rotations * fract));\n var l = pow$2(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$1(a);\n var sin_a = sin$1(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma$2(clip_rgb([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$1(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$1(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma$2.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var Color$4 = Color_1;\n var digits = '0123456789abcdef';\n\n var floor$1 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$1(random() * 16));\n }\n return new Color$4(code, 'hex');\n };\n\n var type = type$p;\n var log = Math.log;\n var pow$1 = Math.pow;\n var floor = Math.floor;\n var abs$1 = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log(min);\n var max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var Color$2 = Color_1;\n var sqrt = Math.sqrt;\n var pow = Math.pow;\n var min = Math.min;\n var max = Math.max;\n var atan2 = Math.atan2;\n var abs = Math.abs;\n var cos = Math.cos;\n var sin = Math.sin;\n var exp = Math.exp;\n var PI = Math.PI;\n\n var deltaE = function(a, b, Kl, Kc, Kh) {\n if ( Kl === void 0 ) Kl=1;\n if ( Kc === void 0 ) Kc=1;\n if ( Kh === void 0 ) Kh=1;\n\n // Delta E (CIE 2000)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n var rad2deg = function(rad) {\n return 360 * rad / (2 * PI);\n };\n var deg2rad = function(deg) {\n return (2 * PI * deg) / 360;\n };\n a = new Color$2(a);\n b = new Color$2(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var avgL = (L1 + L2)/2;\n var C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n var C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n var avgC = (C1 + C2)/2;\n var G = 0.5*(1-sqrt(pow(avgC, 7)/(pow(avgC, 7) + pow(25, 7))));\n var a1p = a1*(1+G);\n var a2p = a2*(1+G);\n var C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n var C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n var avgCp = (C1p + C2p)/2;\n var arctan1 = rad2deg(atan2(b1, a1p));\n var arctan2 = rad2deg(atan2(b2, a2p));\n var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360)/2 : (h1p + h2p)/2;\n var T = 1 - 0.17*cos(deg2rad(avgHp - 30)) + 0.24*cos(deg2rad(2*avgHp)) + 0.32*cos(deg2rad(3*avgHp + 6)) - 0.2*cos(deg2rad(4*avgHp - 63));\n var deltaHp = h2p - h1p;\n deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360;\n deltaHp = 2*sqrt(C1p*C2p)*sin(deg2rad(deltaHp)/2);\n var deltaL = L2 - L1;\n var deltaCp = C2p - C1p; \n var sl = 1 + (0.015*pow(avgL - 50, 2))/sqrt(20 + pow(avgL - 50, 2));\n var sc = 1 + 0.045*avgCp;\n var sh = 1 + 0.015*avgCp*T;\n var deltaTheta = 30*exp(-pow((avgHp - 275)/25, 2));\n var Rc = 2*sqrt(pow(avgCp, 7)/(pow(avgCp, 7) + pow(25, 7)));\n var Rt = -Rc*sin(2*deg2rad(deltaTheta));\n var result = sqrt(pow(deltaL/(Kl*sl), 2) + pow(deltaCp/(Kc*sc), 2) + pow(deltaHp/(Kh*sh), 2) + Rt*(deltaCp/(Kc*sc))*(deltaHp/(Kh*sh)));\n return max(0, min(100, result));\n };\n\n var Color$1 = Color_1;\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color$1(a);\n b = new Color$1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var Color = Color_1;\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n var chroma$1 = chroma_1;\n\n var scale = scale$2;\n\n var scales = {\n \tcool: function cool() { return scale([chroma$1.hsl(180,1,.9), chroma$1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) {\n var key = list[i];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n var chroma = chroma_1;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma.average = average;\n chroma.bezier = bezier_1;\n chroma.blend = blend_1;\n chroma.cubehelix = cubehelix;\n chroma.mix = chroma.interpolate = mix$1;\n chroma.random = random_1;\n chroma.scale = scale$2;\n\n // other utility methods\n chroma.analyze = analyze_1.analyze;\n chroma.contrast = contrast;\n chroma.deltaE = deltaE;\n chroma.distance = distance;\n chroma.limits = analyze_1.limits;\n chroma.valid = valid;\n\n // scale\n chroma.scales = scales;\n\n // colors\n chroma.colors = w3cx11_1;\n chroma.brewer = colorbrewer_1;\n\n var chroma_js = chroma;\n\n return chroma_js;\n\n}));\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const colorString = require('color-string');\nconst convert = require('color-convert');\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...args) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (args.length > 0) {\n\t\t\treturn new Color(args, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...args) {\n\t\tlet color = args[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(args, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nmodule.exports = Color;\n","import { Hct, argbFromHex, hexFromArgb } from '@material/material-color-utilities'\nimport Color from 'color'\nimport chroma from 'chroma-js'\n\nexport const hexToHct: any = (hex: string): number[] => {\n const hclColor: Hct = Hct.fromInt(argbFromHex(hex))\n return [hclColor.hue, hclColor.chroma, hclColor.tone]\n}\n\nexport function hctToHex(hct: number[]): string {\n const hctColor: Hct = Hct.from(hct[0], hct[1], hct[2])\n return hexFromArgb(hctColor.toInt())\n}\n\nexport function toHctString(hex: string, alpha?: boolean): string {\n if (alpha) {\n const [r, g, b, a] = chroma(hex).rgba()\n const newHex = chroma.rgb(r, g, b).hex()\n const hctColor = hexToHct(newHex)\n return `hcta(${hctColor.map((c: number) => Math.round(c)).join(',')},${a})`\n }\n else {\n const hctColor = hexToHct(hex)\n return `hct(${hctColor.map((c: number) => Math.round(c)).join(',')})`\n }\n}\n\nexport function colorTypeFormat(color: string, colorType: 'hex' | 'hct' | 'rgb' | 'hsv'): string {\n let text = color\n const alpha = chroma(color).alpha() !== 1\n const c = Color(color)\n switch (colorType) {\n case 'hex': {\n text = alpha ? c.hexa().toString() : c.hex().toString()\n break\n }\n case 'hct': {\n text = toHctString(color, alpha)\n break\n }\n case 'rgb': {\n text = c.rgb().string()\n break\n }\n case 'hsv': {\n text = c.hsv().string()\n break\n }\n default: {\n break\n }\n }\n return text\n}\n","import { Hct, argbFromHex } from '@material/material-color-utilities'\nimport chroma from 'chroma-js'\nimport BezierEasing from 'bezier-easing'\nimport type { hueType } from '../types'\nimport { hctToHex } from './format'\n\nexport interface adjustNeutralType {\n hRotate: number // 色相偏移(旋转)\n cTarget: number // 色度\n tStart: number // 目标明度初始值\n tTarget: number // 目标明度\n tEasing: number[] // 明度的缓动函数\n i?: number // 当前步数\n steps?: number // 总步数\n}\n\n// TODO: 后续做开启偏色\nexport function adjustNeutralHex({\n hRotate,\n cTarget,\n tStart,\n tTarget,\n tEasing,\n i,\n steps,\n}: adjustNeutralType) {\n if (!i || !steps)\n return hctToHex([hRotate, cTarget, tStart])\n\n const percent = i / steps\n\n // @ts-expect-erroradjustNeutralType\n const tBE = BezierEasing(...tEasing)\n\n const newT = tStart + (tTarget - tStart) * tBE(percent)\n // 灰色 hRotate 应该不变\n return hctToHex([hRotate, cTarget, newT])\n}\n\nexport function adjustHex(baseColor: string, {\n hRotate, // 色相偏移(旋转)\n hEasing, // 色相偏移的缓动函数\n cTarget, // 色度\n cEasing, // 色度的缓动函数\n tTarget, // 目标明度\n tEasing, // 明度的缓动函数\n}: {\n hRotate: number\n hEasing: number[]\n cTarget: number\n cEasing: number[]\n tTarget: number\n tEasing: number[]\n}, hue: hueType, i: number, steps: number): string {\n // const color = Hct.fromInt(baseColor);\n // const colora = Hct.fromInt(argbFromHex(baseColor));\n const hclColor = Hct.fromInt(argbFromHex(baseColor))\n const [h, c, t] = [hclColor.hue, hclColor.chroma, hclColor.tone]\n\n const percent = i / steps\n\n // @ts-expect-error\n const hBE = BezierEasing(...hEasing)\n // @ts-expect-error\n const cBE = BezierEasing(...cEasing)\n // @ts-expect-error\n const tBE = BezierEasing(...tEasing)\n\n const newH = h + calcHueRotate(h, hRotate * hBE(percent), hue)\n const newC = c + (cTarget - c) * cBE(percent)\n const newT = t + (tTarget - t) * tBE(percent)\n\n return hctToHex([newH, newC, newT])\n}\n\nexport function calcHueRotate(h: number, hRotate: number, hue: hueType) {\n const { segment, multiply } = hue\n const calcHueVaule = genCalcHueVaule(segment[0], segment[1], hRotate, multiply)\n return calcHueVaule(h)\n}\n\nexport function genCalcHueVaule(Xa: number, Xb: number, max: number, multiply: number) {\n const toRad = Math.PI / 180\n const a = 360 / (Xb - Xa)\n const b = (-1 * a * toRad * (3 * Xa + Xb)) / 4\n\n const min = max * multiply\n const y = (max + min) / 2\n const scale = (max - min) / 2\n\n return (v: number) => {\n const rad = v * toRad\n return scale * Math.sin(a * rad + b) + y\n }\n}\n\nfunction isStableColor(color: number): boolean {\n return color >= 0 && color <= 255\n}\nfunction arrayToRgb(rgbArray: number[]): string {\n return rgbArray.length < 4 ? `rgb(${rgbArray.join(',')})` : `rgba(${rgbArray.join(',')})`\n}\n\nexport function getAlphaColor(frontColor: string, backgroundColor: string): string {\n const [fR, fG, fB] = chroma(frontColor).rgb()\n const [bR, bG, bB] = chroma(backgroundColor).rgb()\n\n for (let fA = 0.01; fA <= 1; fA += 0.01) {\n const r = Math.round((fR - bR * (1 - fA)) / fA)\n const g = Math.round((fG - bG * (1 - fA)) / fA)\n const b = Math.round((fB - bB * (1 - fA)) / fA)\n if (isStableColor(r) && isStableColor(g) && isStableColor(b))\n return chroma(arrayToRgb([r, g, b, Math.round(fA * 100) / 100])).hex()\n }\n return chroma(arrayToRgb([fR, fG, fB, 1])).hex()\n}\n","import type { directType, hueType } from '../types'\nimport { adjustHex, adjustNeutralHex } from './adjust'\nimport type { adjustNeutralType } from './adjust'\n\nexport function getLadderColors(baseColor: string, {\n up,\n down,\n upSteps,\n downSteps,\n hue,\n}: {\n up: directType\n down: directType\n upSteps: number\n downSteps: number\n hue: hueType\n}) {\n const shades: string[] = []\n // 向上梯度\n for (let i = upSteps; i >= 1; i--)\n shades.push(adjustHex(baseColor, up, hue, i, upSteps))\n\n shades.push(baseColor)\n\n // 向下梯度\n for (let i = 1; i <= downSteps; i++)\n shades.push(adjustHex(baseColor, down, hue, i, downSteps))\n\n return shades\n}\n\nexport function getNeutualColors({\n up,\n down,\n upSteps,\n downSteps,\n}: {\n up: adjustNeutralType\n down: adjustNeutralType\n upSteps: number\n downSteps: number\n}) {\n const shades: string[] = []\n // 向上梯度\n for (let i = upSteps; i >= 1; i--)\n shades.push(adjustNeutralHex({ ...up, i, steps: upSteps }))\n\n shades.push(adjustNeutralHex(up))\n\n // 向下梯度\n for (let i = 1; i <= downSteps; i++)\n shades.push(adjustNeutralHex({ ...down, i, steps: downSteps }))\n\n return shades\n}\n","export function changeThemeByCssvars(cssVars: Record) {\r\n for (const key in cssVars)\r\n document.documentElement.style.setProperty(key, cssVars[key])\r\n}\r\n","export const ELEMENT_PLUS_CONSTANTS = {\n data: {\n colorList: [\n {\n \"color\": \"#409eff\",\n \"darkColor\": \"#589ffe\",\n \"id\": \"Primary\",\n \"title\": \"Brand\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#e6202a\",\n \"darkColor\": \"#ff5d55\",\n \"id\": \"Red\",\n \"title\": \"Red\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#ff832b\",\n \"darkColor\": \"#ffa366\",\n \"id\": \"65c1\",\n \"title\": \"Orange\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#ffcc00\",\n \"darkColor\": \"#ffd668\",\n \"id\": \"Yellow\",\n \"title\": \"Yellow\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#1db84c\",\n \"darkColor\": \"#65ca67\",\n \"id\": \"Green\",\n \"title\": \"Green\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#00b3af\",\n \"darkColor\": \"#56c6c4\",\n \"id\": \"Sky\",\n \"title\": \"Teal\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#1fa5ff\",\n \"darkColor\": \"#67baff\",\n \"id\": \"f38c\",\n \"title\": \"Cyan\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#176cff\",\n \"darkColor\": \"#5792ff\",\n \"id\": \"116bd\",\n \"title\": \"Blue\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#8a3ffc\",\n \"darkColor\": \"#a275ff\",\n \"id\": \"Purple\",\n \"title\": \"Purple\",\n \"type\": \"normal\"\n },\n {\n \"color\": \"#ea3c8e\",\n \"darkColor\": \"#ff6ba3\",\n \"id\": \"17d81\",\n \"title\": \"Magenta\",\n \"type\": \"normal\"\n }\n ],\n generate: {\n dark: {\n down: {\n cTarget: 20,\n hRotate: -20,\n tTarget: 96,\n tEasing: [\n 0,\n 0,\n 0.5,\n 0.7,\n ],\n cEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n hEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n },\n up: {\n cTarget: 50,\n hRotate: 20,\n tTarget: 10,\n tEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n cEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n hEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n },\n neutral: {\n cTarget: 1,\n hRotate: 1,\n tTarget: 43,\n down: {\n tTarget: 98,\n tEasing: [\n 0,\n 0,\n 0.53,\n 0.72,\n ],\n },\n up: {\n tTarget: 6,\n tEasing: [\n 0.29,\n 0,\n 0.65,\n 1,\n ],\n },\n },\n },\n hue: {\n palettes: {\n multiply: -0.5,\n segment: [\n 50,\n 200,\n ],\n },\n neutral: {\n multiply: 1,\n segment: [\n 0,\n 360,\n ],\n\n },\n },\n light: {\n down: {\n cTarget: 50,\n hRotate: 20,\n tTarget: 10,\n tEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n cEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n hEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n },\n up: {\n cTarget: 20,\n hRotate: -20,\n tTarget: 96,\n tEasing: [\n 0,\n 0,\n 0.5,\n 0.7,\n ],\n cEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n hEasing: [\n 0,\n 0,\n 1,\n 1,\n ],\n },\n neutral: {\n cTarget: 2,\n hRotate: 209,\n tTarget: 73,\n down: {\n tTarget: 10,\n tEasing: [\n 0,\n 0,\n 0.6,\n 0.29,\n ],\n },\n up: {\n tTarget: 97,\n tEasing: [\n 0.15,\n 0.05,\n 0.1,\n 0.82,\n ],\n },\n },\n },\n step: {\n down: 4,\n up: 5,\n },\n },\n stepFliter: [],\n system: {\n edit: {\n isolateEdit: false,\n },\n pattern: {\n displayFliterStep: false,\n isFliterStep: false,\n isolateDark: false,\n },\n },\n },\n name: 'element-plus',\n}\n","import { ELEMENT_PLUS_CONSTANTS } from './constants'\nimport { colorTypeFormat, getAlphaColor, getLadderColors, getNeutualColors } from './utils'\nimport type { generateType } from './types'\n\n// 获取灰度梯度\nexport function getNeutral(generate: generateType | null = null) {\n const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate\n const darkShades = getShades(_generate, true)\n const lightShades = getShades(_generate)\n\n return {\n light: lightShades,\n dark: darkShades,\n }\n}\n\n// 获取灰度透明梯度\nexport function getNeutralAlpha(generate: generateType | null = null, format: 'rgb' | 'hex' | 'hct' | 'hsv' = 'rgb') {\n const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate\n const darkShades = getShades(_generate, true)\n const lightShades = getShades(_generate)\n\n return {\n light: lightShades.map(color => colorTypeFormat(getAlphaColor(color, '#fff'), format)),\n dark: darkShades.map(color => colorTypeFormat(getAlphaColor(color, '#000'), format)),\n }\n}\n\n// 获取颜色梯度\nexport function getPalette({\n light,\n dark,\n generate,\n format,\n}: {\n light: string\n dark: string\n generate?: generateType\n format?: 'rgb' | 'hex' | 'hct' | 'hsv'\n}) {\n const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate\n\n const { up: upSteps, down: downSteps } = _generate.step\n const { up, down } = _generate.light\n const { up: upDark, down: downDark } = _generate.dark\n const hue = _generate.hue.palettes\n const darks = getLadderColors(dark, {\n up: upDark,\n down: downDark,\n upSteps,\n downSteps,\n hue,\n })\n\n return {\n light: getLadderColors(light, {\n up,\n down,\n upSteps,\n downSteps,\n hue,\n }),\n dark: darks.map(color => colorTypeFormat(getAlphaColor(color, '#000'), format)),\n }\n}\n\n// 根据配置获取灰度数据\nfunction getShades(generate: generateType, isDark = false) {\n const { up: upSteps, down: downSteps } = generate.step\n\n const {\n cTarget,\n hRotate,\n up,\n down,\n tTarget: tStart,\n } = generate[isDark ? 'dark' : 'light'].neutral\n\n return getNeutualColors({\n up: {\n ...up,\n cTarget,\n hRotate,\n tStart,\n },\n down: {\n ...down,\n cTarget,\n hRotate,\n tStart,\n },\n upSteps,\n downSteps,\n })\n}\n"],"names":["signum","num","lerp","start","stop","amount","clampInt","min","max","input","clampDouble","sanitizeDegreesDouble","degrees","matrixMultiply","row","matrix","b","c","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","r","delinearized","g","redFromArgb","argb","greenFromArgb","blueFromArgb","argbFromXyz","x","y","z","linearR","linearG","linearB","xyzFromArgb","linearized","mathUtils.matrixMultiply","argbFromLstar","lstar","yFromLstar","component","lstarFromArgb","labF","labInvf","lstarFromY","rgbComponent","normalized","mathUtils.clampInt","whitePointD65","t","e","kappa","ft","ft3","ViewingConditions","whitePoint","utils.whitePointD65","adaptingLuminance","utils.yFromLstar","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","f","math.lerp","d","nc","rgbD","k","k4","k4F","fl","n","nbb","ncb","rgbAFactors","rgbA","aw","fLRoot","Cam16","hue","chroma","j","q","m","s","jstar","astar","bstar","other","dJ","dA","dB","dEPrime","viewingConditions","redL","utils.linearized","greenL","blueL","rC","gC","bC","rD","gD","bD","rAF","gAF","bAF","rA","math.signum","gA","bA","a","u","p2","atanDegrees","hueRadians","ac","huePrime","eHue","alpha","mstar","h","hRad","p1","hSin","hCos","gamma","rCBase","gCBase","bCBase","rF","gF","bF","utils.argbFromXyz","J","Q","C","M","HctSolver","angle","af","mathUtils.signum","scaledDiscount","deltaAB","deltaAC","source","mid","target","coordinate","axis","kR","kG","kB","coordA","coordB","targetHue","left","right","leftHue","rightHue","initialized","uncut","midHue","segment","lPlane","rPlane","i","mPlane","midPlaneCoordinate","adapted","adaptedAbs","base","tInnerCoeff","iterationRound","jNormalized","rCScaled","gCScaled","bCScaled","fnj","colorUtils.argbFromLinrgb","hueDegrees","colorUtils.argbFromLstar","mathUtils.sanitizeDegreesDouble","colorUtils.yFromLstar","exactAnswer","Hct","tone","newHue","newChroma","newTone","cam","utils.lstarFromArgb","vc","viewedInVc","recastInVc","utils.lstarFromY","Contrast","toneA","toneB","math.clampDouble","y1","y2","lighter","darker","ratio","darkY","lightY","realContrast","delta","returnValue","lighterSafe","darkerSafe","DislikeAnalyzer","hct","huePasses","chromaPasses","tonePasses","DynamicColor","args","name","palette","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","scheme","cachedAnswer","answer","decreasingContrast","roleA","roleB","polarity","stayTogether","bgTone","aIsNearer","nearer","farther","amNearer","expansionDir","nContrast","fContrast","nInitialTone","nTone","fInitialTone","fTone","desiredRatio","bg1","bg2","bgTone1","bgTone2","upper","lower","lightOption","darkOption","availables","lighterTone","darkerTone","lighterRatio","darkerRatio","negligibleDifference","Variant","ContrastCurve","low","normal","medium","high","contrastLevel","ToneDeltaPair","isFidelity","isMonochrome","findDesiredChromaByTone","byDecreasingTone","closestToChroma","chromaPeak","potentialSolution","potentialDelta","currentDelta","viewingConditionsForAlbers","performAlbers","prealbers","albersd","MaterialDynamicColors","initialTone","albersTone","proposedHct","hexFromArgb","colorUtils.redFromArgb","colorUtils.greenFromArgb","colorUtils.blueFromArgb","outParts","part","argbFromHex","hex","isThree","isSix","isEight","parseIntHex","value","global","factory","module","this","limit$2","limit$1","clip_rgb$3","rgb","classToType","i$1","list$1","type$p","obj","type$o","unpack$B","keyOrder","type$n","last$4","l","PI$2","utils","input$h","last$3","clip_rgb$2","type$m","_input","Color$D","len","me","mode","autodetect","list","chk","Color_1","chroma$k","chroma_1","unpack$A","max$2","rgb2cmyk$1","ref","rgb2cmyk_1","unpack$z","cmyk2rgb","cmyk2rgb_1","chroma$j","Color$C","input$g","unpack$y","type$l","rgb2cmyk","unpack$x","last$2","rnd","hsl2css$1","hsla","hsl2css_1","unpack$w","rgb2hsl$3","rgb2hsl_1","unpack$v","last$1","hsl2css","rgb2hsl$2","round$6","rgb2css$1","rgba","rgb2css_1","unpack$u","round$5","hsl2rgb$1","assign","t3","t2","t1","h_","hsl2rgb_1","hsl2rgb","input$f","RE_RGB","RE_RGBA","RE_RGB_PCT","RE_RGBA_PCT","RE_HSL","RE_HSLA","round$4","css2rgb$1","css","rgb$1","rgb$2","i$2","rgb$3","i$3","hsl","rgb$4","hsl$1","rgb$5","css2rgb_1","chroma$i","Color$B","input$e","type$k","rgb2css","css2rgb","rest","Color$A","chroma$h","input$d","unpack$t","unpack$s","rgb2hcg$1","_g","rgb2hcg_1","unpack$r","floor$3","hcg2rgb","assign$1","assign$2","assign$3","assign$4","assign$5","_c","p","v","hcg2rgb_1","unpack$q","type$j","chroma$g","Color$z","input$c","rgb2hcg","unpack$p","last","round$3","rgb2hex$2","str","hxa","rgb2hex_1","RE_HEX","RE_HEXA","hex2rgb$1","u$1","r$1","g$1","b$1","hex2rgb_1","chroma$f","Color$y","type$i","input$b","rgb2hex$1","unpack$o","TWOPI$2","min$2","sqrt$4","acos","rgb2hsi$1","min_","rgb2hsi_1","unpack$n","limit","TWOPI$1","PITHIRD","cos$4","hsi2rgb","hsi2rgb_1","unpack$m","type$h","chroma$e","Color$x","input$a","rgb2hsi","unpack$l","type$g","chroma$d","Color$w","input$9","rgb2hsl$1","unpack$k","min$1","max$1","rgb2hsl","max_","rgb2hsv$1","unpack$j","floor$2","hsv2rgb","hsv2rgb_1","unpack$i","type$f","chroma$c","Color$v","input$8","rgb2hsv","labConstants","LAB_CONSTANTS$3","unpack$h","pow$a","rgb2lab$2","ref$1","rgb2xyz","rgb_xyz","xyz_lab","rgb2lab_1","LAB_CONSTANTS$2","unpack$g","pow$9","lab2rgb$1","b_","lab_xyz","xyz_rgb","lab2rgb_1","unpack$f","type$e","chroma$b","Color$u","input$7","rgb2lab$1","unpack$e","RAD2DEG","sqrt$3","atan2$2","round$2","lab2lch$2","lab2lch_1","unpack$d","rgb2lab","lab2lch$1","rgb2lch$1","rgb2lch_1","unpack$c","DEG2RAD","sin$3","cos$3","lch2lab$2","lch2lab_1","unpack$b","lch2lab$1","lab2rgb","lch2rgb$1","L","lch2rgb_1","unpack$a","lch2rgb","hcl2rgb","hcl","hcl2rgb_1","unpack$9","type$d","chroma$a","Color$t","input$6","rgb2lch","w3cx11$1","w3cx11_1","Color$s","input$5","type$c","w3cx11","hex2rgb","rgb2hex","unpack$8","rgb2num$1","rgb2num_1","type$b","num2rgb","num2rgb_1","chroma$9","Color$r","input$4","type$a","rgb2num","chroma$8","Color$q","input$3","unpack$7","type$9","round$1","log$1","temperature2rgb$1","kelvin","temp","temperature2rgb_1","temperature2rgb","unpack$6","round","rgb2temperature$1","minTemp","maxTemp","eps","rgb2temperature_1","chroma$7","Color$p","input$2","rgb2temperature","unpack$5","cbrt","pow$8","sign$1","rgb2oklab$2","rgb2lrgb","lr","lg","lb","rgb2oklab_1","abs","unpack$4","pow$7","sign","oklab2rgb$1","lrgb2rgb","oklab2rgb_1","unpack$3","type$8","chroma$6","Color$o","input$1","rgb2oklab$1","unpack$2","rgb2oklab","lab2lch","rgb2oklch$1","rgb2oklch_1","unpack$1","lch2lab","oklab2rgb","oklch2rgb","oklch2rgb_1","unpack","type$7","chroma$5","Color$n","rgb2oklch","Color$m","type$6","mutate","Color$l","Color$k","LAB_CONSTANTS$1","lab","Color$j","mc","channel","src","Color$i","type$5","pow$6","EPS","MAX_ITER","lum","cur_lum","max_iter","test","lm","rgb2luminance","luminance_x","interpolator$1","Color$h","type$4","interpolator","mix$1","col1","col2","Color$g","mix","Color$f","Color$e","LAB_CONSTANTS","lch","Color$d","type$3","out","Color$c","xyz0","xyz1","Color$b","sqrt$2","pow$5","lrgb","x1","z1","x2","z2","Color$a","Color$9","_hsx","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","lbv","dh","interpolate_hsx$5","Color$8","c1","c2","interpolate_hsx$4","hcg","interpolate_hsx$3","hsi","interpolate_hsx$2","interpolate_hsx$1","hsv","Color$7","oklab","interpolate_hsx","oklch","Color$6","clip_rgb$1","pow$4","sqrt$1","PI$1","cos$2","sin$2","atan2$1","average","colors","weights","w","_average_lrgb","first","cnt","dx","dy","A","ci","xyz2","A$1","col","chroma$4","type$2","pow$3","scale$2","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_colors","_out","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","c$1","resetCache","getClass","tMapLightness","tMapDomain","getColor","val","bypassMap","classes","domain","tOut","tBreaks","_m","_o","L0","L1","pol","L_actual","L_ideal","L_diff","t0","numColors","result","dm","dd","__range__","samples","end","asc","inclusive","range","ascending","Color$5","scale$1","binom_row","newrow","bezier","I","lab0","lab1","lab2","lab3","labs","sum","el","bezier_1","chroma$3","blend","bottom","top","blend_f","c0","each","multiply","darken","lighten","screen","overlay","burn","dodge","blend_1","type$1","clip_rgb","TWOPI","pow$2","sin$1","cos$1","chroma$2","cubehelix","rotations","lightness","dl","fract","amp","cos_a","sin_a","Color$4","digits","floor$1","random","random_1","code","type","log","pow$1","floor","abs$1","analyze","data","key","limits","values","min_log","max_log","pb","pr","cluster","assignments","clusterSizes","repeat","nb_iters","centroids","i$4","mindist","best","j$1","dist","newCentroids","j$2","i$5","j$3","j$4","kClusters","j$5","i$6","tmpKMeansBreaks","j$6","i$7","analyze_1","Color$3","contrast","l1","l2","Color$2","sqrt","pow","atan2","cos","sin","exp","PI","deltaE","Kl","Kc","Kh","rad2deg","rad","deg2rad","deg","a1","b1","L2","a2","b2","avgL","C1","C2","avgC","G","a1p","a2p","C1p","C2p","avgCp","arctan1","arctan2","h1p","h2p","avgHp","T","deltaHp","deltaL","deltaCp","sl","sc","sh","deltaTheta","Rc","Rt","Color$1","distance","sum_sq","Color","valid","chroma$1","scale","scales","colorbrewer","colorbrewer_1","chroma_js","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","B","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","mY1","mY2","sampleValues","getTForX","intervalStart","currentSample","lastSample","guessForT","initialSlope","colorName","isArrayish","require$$0","concat","slice","swizzle","simpleSwizzleModule","results","arg","fn","colorNames","require$$1","hasOwnProperty","reverseNames","cs","colorStringModule","string","prefix","model","abbr","per","keyword","match","hexAlpha","i2","clamp","hwb","hexDouble","hwba","cssKeywords","reverseKeywords","convert","conversions","channels","labels","rdif","gdif","bdif","diff","diffc","comparativeDistance","reversed","currentClosestDistance","currentClosestKeyword","smin","lmin","sv","hi","vmin","wh","bl","cmyk","hr","convert$2","saturation","ansi","color","mult","rem","colorString","char","integer","grayscale","pure","mg","apple","gray","buildGraph","graph","models","deriveBFS","fromModel","queue","current","adjacents","adjacent","node","link","from","to","wrapConversion","toModel","path","cur","route","conversion","wrapRaw","wrappedFn","arg0","wrapRounded","routes","colorConvert","skippedModels","hashedModelKeys","limiters","object","newArray","zeroArray","keys","hashedKeys","places","self","roundToPlace","getset","maxfn","rgbArray","alphaHex","element","chan","color2","lum1","lum2","contrastRatio","mixinColor","weight","color1","w1","w2","assertArray","roundTo","number","modifier","array","length","hexToHct","hclColor","hctToHex","hctColor","toHctString","newHex","colorTypeFormat","colorType","text","adjustNeutralHex","hRotate","cTarget","tStart","tTarget","tEasing","steps","percent","tBE","BezierEasing","newT","adjustHex","baseColor","hEasing","cEasing","hBE","cBE","newH","calcHueRotate","newC","genCalcHueVaule","Xa","Xb","toRad","isStableColor","arrayToRgb","getAlphaColor","frontColor","backgroundColor","fR","fG","fB","bR","bG","bB","fA","getLadderColors","up","down","upSteps","downSteps","shades","getNeutualColors","changeThemeByCssvars","cssVars","ELEMENT_PLUS_CONSTANTS","getNeutral","generate","_generate","darkShades","getShades","getNeutralAlpha","format","getPalette","light","dark","upDark","downDark","darks","isDark"],"mappings":"sOAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAyBO,SAASA,GAAOC,EAAK,CACxB,OAAIA,EAAM,EACC,GAEFA,IAAQ,EACN,EAGA,CAEf,CAMO,SAASC,GAAKC,EAAOC,EAAMC,EAAQ,CACtC,OAAQ,EAAMA,GAAUF,EAAQE,EAASD,CAC7C,CAOO,SAASE,GAASC,EAAKC,EAAKC,EAAO,CACtC,OAAIA,EAAQF,EACDA,EAEFE,EAAQD,EACNA,EAEJC,CACX,CAOO,SAASC,GAAYH,EAAKC,EAAKC,EAAO,CACzC,OAAIA,EAAQF,EACDA,EAEFE,EAAQD,EACNA,EAEJC,CACX,CAoBO,SAASE,GAAsBC,EAAS,CAC3C,OAAAA,EAAUA,EAAU,IAChBA,EAAU,IACVA,EAAUA,EAAU,KAEjBA,CACX,CA4BO,SAASC,GAAeC,EAAKC,EAAQ,CACxC,MAAM,EAAID,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EAAID,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EAAID,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EACxEC,EAAIF,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EAAID,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EAAID,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EACxEE,EAAIH,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EAAID,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EAAID,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAE,CAAC,EAC9E,MAAO,CAAC,EAAGC,EAAGC,CAAC,CACnB,CCpIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAwBA,MAAMC,GAAc,CAChB,CAAC,UAAY,UAAY,SAAU,EACnC,CAAC,MAAQ,MAAQ,KAAM,EACvB,CAAC,UAAY,UAAY,SAAU,CACvC,EACMC,GAAc,CAChB,CACI,mBACA,oBACA,mBACH,EACD,CACI,mBACA,mBACA,kBACH,EACD,CACI,mBACA,oBACA,kBACH,CACL,EACMC,GAAkB,CAAC,OAAQ,IAAO,OAAO,EAIxC,SAASC,GAAYC,EAAKC,EAAOC,EAAM,CAC1C,OAAQ,KAAO,IAAMF,EAAM,MAAQ,IAAMC,EAAQ,MAAQ,EAAIC,EAAO,OAChE,CACR,CAIO,SAASC,GAAeC,EAAQ,CACnC,MAAMC,EAAIC,GAAaF,EAAO,CAAC,CAAC,EAC1BG,EAAID,GAAaF,EAAO,CAAC,CAAC,EAC1BV,EAAIY,GAAaF,EAAO,CAAC,CAAC,EAChC,OAAOL,GAAYM,EAAGE,EAAGb,CAAC,CAC9B,CAUO,SAASc,GAAYC,EAAM,CAC9B,OAAOA,GAAQ,GAAK,GACxB,CAIO,SAASC,GAAcD,EAAM,CAChC,OAAOA,GAAQ,EAAI,GACvB,CAIO,SAASE,GAAaF,EAAM,CAC/B,OAAOA,EAAO,GAClB,CAUO,SAASG,GAAYC,EAAGC,EAAGC,EAAG,CACjC,MAAMtB,EAASI,GACTmB,EAAUvB,EAAO,CAAC,EAAE,CAAC,EAAIoB,EAAIpB,EAAO,CAAC,EAAE,CAAC,EAAIqB,EAAIrB,EAAO,CAAC,EAAE,CAAC,EAAIsB,EAC/DE,EAAUxB,EAAO,CAAC,EAAE,CAAC,EAAIoB,EAAIpB,EAAO,CAAC,EAAE,CAAC,EAAIqB,EAAIrB,EAAO,CAAC,EAAE,CAAC,EAAIsB,EAC/DG,EAAUzB,EAAO,CAAC,EAAE,CAAC,EAAIoB,EAAIpB,EAAO,CAAC,EAAE,CAAC,EAAIqB,EAAIrB,EAAO,CAAC,EAAE,CAAC,EAAIsB,EAC/DV,EAAIC,GAAaU,CAAO,EACxBT,EAAID,GAAaW,CAAO,EACxBvB,EAAIY,GAAaY,CAAO,EAC9B,OAAOnB,GAAYM,EAAGE,EAAGb,CAAC,CAC9B,CAIO,SAASyB,GAAYV,EAAM,CAC9B,MAAMJ,EAAIe,GAAWZ,GAAYC,CAAI,CAAC,EAChCF,EAAIa,GAAWV,GAAcD,CAAI,CAAC,EAClCf,EAAI0B,GAAWT,GAAaF,CAAI,CAAC,EACvC,OAAOY,GAAyB,CAAChB,EAAGE,EAAGb,CAAC,EAAGE,EAAW,CAC1D,CAoDO,SAAS0B,GAAcC,EAAO,CACjC,MAAMT,EAAIU,GAAWD,CAAK,EACpBE,EAAYnB,GAAaQ,CAAC,EAChC,OAAOf,GAAY0B,EAAWA,EAAWA,CAAS,CACtD,CAOO,SAASC,GAAcjB,EAAM,CAChC,MAAMK,EAAIK,GAAYV,CAAI,EAAE,CAAC,EAC7B,MAAO,KAAQkB,GAAKb,EAAI,GAAK,EAAI,EACrC,CAYO,SAASU,GAAWD,EAAO,CAC9B,MAAO,KAAQK,IAASL,EAAQ,IAAQ,GAAK,CACjD,CAYO,SAASM,GAAWf,EAAG,CAC1B,OAAOa,GAAKb,EAAI,GAAK,EAAI,IAAQ,EACrC,CASO,SAASM,GAAWU,EAAc,CACrC,MAAMC,EAAaD,EAAe,IAClC,OAAIC,GAAc,WACPA,EAAa,MAAQ,IAGrB,KAAK,KAAKA,EAAa,MAAS,MAAO,GAAG,EAAI,GAE7D,CASO,SAASzB,GAAawB,EAAc,CACvC,MAAMC,EAAaD,EAAe,IAClC,IAAIxB,EAAe,EACnB,OAAIyB,GAAc,SACdzB,EAAeyB,EAAa,MAG5BzB,EAAe,MAAQ,KAAK,IAAIyB,EAAY,EAAM,GAAG,EAAI,KAEtDC,GAAmB,EAAG,IAAK,KAAK,MAAM1B,EAAe,GAAK,CAAC,CACtE,CAMO,SAAS2B,IAAgB,CAC5B,OAAOnC,EACX,CAkCA,SAAS6B,GAAKO,EAAG,CACb,MAAMC,EAAI,oBACJC,EAAQ,MAAU,GACxB,OAAIF,EAAIC,EACG,KAAK,IAAID,EAAG,EAAM,CAAG,GAGpBE,EAAQF,EAAI,IAAM,GAElC,CACA,SAASN,GAAQS,EAAI,CACjB,MAAMF,EAAI,oBACJC,EAAQ,MAAU,GAClBE,EAAMD,EAAKA,EAAKA,EACtB,OAAIC,EAAMH,EACCG,GAGC,IAAMD,EAAK,IAAMD,CAEjC,CClTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA+BO,MAAMG,EAAkB,CAuB3B,OAAO,KAAKC,EAAaC,GAAmB,EAAIC,EAAqB,IAAQ,KAAK,GAAMC,GAAiB,EAAI,EAAI,IAAOC,EAAkB,GAAMC,EAAW,EAAKC,EAAwB,GAAO,CAC3L,MAAMC,EAAMP,EACNQ,EAAKD,EAAI,CAAC,EAAI,QAAWA,EAAI,CAAC,EAAI,QAAWA,EAAI,CAAC,EAAI,SACtDE,EAAKF,EAAI,CAAC,EAAI,SAAYA,EAAI,CAAC,EAAI,SAAWA,EAAI,CAAC,EAAI,QACvDG,EAAKH,EAAI,CAAC,EAAI,SAAYA,EAAI,CAAC,EAAI,QAAWA,EAAI,CAAC,EAAI,QACvDI,EAAI,GAAMN,EAAW,GACrBlD,EAAIwD,GAAK,GAAMC,GAAU,IAAM,KAAOD,EAAI,IAAO,EAAI,EACvDC,GAAU,KAAO,KAAOD,EAAI,IAAO,EAAI,EAC3C,IAAIE,EAAIP,EACJ,EACAK,GAAK,EAAO,EAAM,IAAO,KAAK,KAAK,CAACT,EAAoB,IAAQ,EAAI,GACxEW,EAAIA,EAAI,EAAM,EAAMA,EAAI,EAAM,EAAMA,EACpC,MAAMC,EAAKH,EACLI,EAAO,CACTF,GAAK,IAAQL,GAAM,EAAMK,EACzBA,GAAK,IAAQJ,GAAM,EAAMI,EACzBA,GAAK,IAAQH,GAAM,EAAMG,CACrC,EACcG,EAAI,GAAO,EAAMd,EAAoB,GACrCe,EAAKD,EAAIA,EAAIA,EAAIA,EACjBE,GAAM,EAAMD,EACZE,GAAKF,EAAKf,EACZ,GAAMgB,GAAMA,GAAM,KAAK,KAAK,EAAMhB,CAAiB,EACjDkB,EAAIjB,GAAiBC,CAAe,EAAIJ,EAAW,CAAC,EACpDzB,GAAI,KAAO,KAAK,KAAK6C,CAAC,EACtBC,EAAM,KAAQ,KAAK,IAAID,EAAG,EAAG,EAC7BE,EAAMD,EACNE,EAAc,CAChB,KAAK,IAAKJ,GAAKJ,EAAK,CAAC,EAAIP,EAAM,IAAO,GAAI,EAC1C,KAAK,IAAKW,GAAKJ,EAAK,CAAC,EAAIN,EAAM,IAAO,GAAI,EAC1C,KAAK,IAAKU,GAAKJ,EAAK,CAAC,EAAIL,EAAM,IAAO,GAAI,CACtD,EACcc,EAAO,CACR,IAAQD,EAAY,CAAC,GAAMA,EAAY,CAAC,EAAI,OAC5C,IAAQA,EAAY,CAAC,GAAMA,EAAY,CAAC,EAAI,OAC5C,IAAQA,EAAY,CAAC,GAAMA,EAAY,CAAC,EAAI,MACzD,EACcE,IAAM,EAAMD,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,IAAOA,EAAK,CAAC,GAAKH,EACxD,OAAO,IAAItB,GAAkBqB,EAAGK,GAAIJ,EAAKC,EAAKnE,EAAG2D,EAAIC,EAAMI,GAAI,KAAK,IAAIA,GAAI,GAAI,EAAG5C,EAAC,CACvF,CAQD,YAAY6C,EAAGK,EAAIJ,EAAKC,EAAKnE,EAAG2D,EAAIC,EAAMI,EAAIO,EAAQnD,EAAG,CACrD,KAAK,EAAI6C,EACT,KAAK,GAAKK,EACV,KAAK,IAAMJ,EACX,KAAK,IAAMC,EACX,KAAK,EAAInE,EACT,KAAK,GAAK2D,EACV,KAAK,KAAOC,EACZ,KAAK,GAAKI,EACV,KAAK,OAASO,EACd,KAAK,EAAInD,CACZ,CACL,CAEAwB,GAAkB,QAAUA,GAAkB,KAAM,ECnHpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAoCO,MAAM4B,EAAM,CAqBf,YAAYC,EAAKC,EAAQC,EAAGC,EAAGC,EAAGC,EAAGC,EAAOC,EAAOC,EAAO,CACtD,KAAK,IAAMR,EACX,KAAK,OAASC,EACd,KAAK,EAAIC,EACT,KAAK,EAAIC,EACT,KAAK,EAAIC,EACT,KAAK,EAAIC,EACT,KAAK,MAAQC,EACb,KAAK,MAAQC,EACb,KAAK,MAAQC,CAChB,CAMD,SAASC,EAAO,CACZ,MAAMC,EAAK,KAAK,MAAQD,EAAM,MACxBE,EAAK,KAAK,MAAQF,EAAM,MACxBG,EAAK,KAAK,MAAQH,EAAM,MACxBI,EAAU,KAAK,KAAKH,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,CAAE,EAErD,MADW,MAAO,KAAK,IAAIC,EAAS,GAAI,CAE3C,CAMD,OAAO,QAAQxE,EAAM,CACjB,OAAO0D,GAAM,2BAA2B1D,EAAM8B,GAAkB,OAAO,CAC1E,CAOD,OAAO,2BAA2B9B,EAAMyE,EAAmB,CACvD,MAAMlF,GAAOS,EAAO,WAAe,GAC7BR,GAASQ,EAAO,QAAe,EAC/BP,EAAQO,EAAO,IACf0E,EAAOC,GAAiBpF,CAAG,EAC3BqF,EAASD,GAAiBnF,CAAK,EAC/BqF,EAAQF,GAAiBlF,CAAI,EAC7BW,EAAI,UAAasE,EAAO,UAAaE,EAAS,UAAaC,EAC3DxE,EAAI,MAASqE,EAAO,MAASE,EAAS,MAASC,EAC/CvE,EAAI,UAAaoE,EAAO,UAAaE,EAAS,UAAaC,EAC3DC,EAAK,QAAW1E,EAAI,QAAWC,EAAI,QAAWC,EAC9CyE,EAAK,SAAY3E,EAAI,SAAWC,EAAI,QAAWC,EAC/C0E,EAAK,SAAY5E,EAAI,QAAWC,EAAI,QAAWC,EAC/C2E,EAAKR,EAAkB,KAAK,CAAC,EAAIK,EACjCI,EAAKT,EAAkB,KAAK,CAAC,EAAIM,EACjCI,GAAKV,EAAkB,KAAK,CAAC,EAAIO,EACjCI,GAAM,KAAK,IAAKX,EAAkB,GAAK,KAAK,IAAIQ,CAAE,EAAK,IAAO,GAAI,EAClEI,EAAM,KAAK,IAAKZ,EAAkB,GAAK,KAAK,IAAIS,CAAE,EAAK,IAAO,GAAI,EAClEI,GAAM,KAAK,IAAKb,EAAkB,GAAK,KAAK,IAAIU,EAAE,EAAK,IAAO,GAAI,EAClEI,EAAMC,GAAYP,CAAE,EAAI,IAAQG,IAAQA,GAAM,OAC9CK,EAAMD,GAAYN,CAAE,EAAI,IAAQG,GAAQA,EAAM,OAC9CK,EAAMF,GAAYL,EAAE,EAAI,IAAQG,IAAQA,GAAM,OAC9CK,GAAK,GAAOJ,EAAK,IAAQE,EAAKC,GAAM,GACpCzG,IAAKsG,EAAKE,EAAK,EAAMC,GAAM,EAC3BE,IAAK,GAAOL,EAAK,GAAOE,EAAK,GAAOC,GAAM,GAC1CG,IAAM,GAAON,EAAK,GAAOE,EAAKC,GAAM,GAEpCI,GADQ,KAAK,MAAM7G,GAAG0G,CAAC,EACA,IAAS,KAAK,GACrChC,GAAMmC,GAAc,EAAIA,GAAc,IACxCA,IAAe,IAAMA,GAAc,IAC/BA,GACFC,GAAcpC,GAAM,KAAK,GAAM,IAC/BqC,GAAKH,GAAKpB,EAAkB,IAC5BZ,GAAI,IACN,KAAK,IAAImC,GAAKvB,EAAkB,GAAIA,EAAkB,EAAIA,EAAkB,CAAC,EAC3EX,GAAK,EAAMW,EAAkB,EAAK,KAAK,KAAKZ,GAAI,GAAK,GACtDY,EAAkB,GAAK,GAAOA,EAAkB,OAC/CwB,GAAWtC,GAAM,MAAQA,GAAM,IAAMA,GACrCuC,GAAO,KAAQ,KAAK,IAAKD,GAAW,KAAK,GAAM,IAAQ,CAAG,EAAI,KAE9DxE,GADM,IAAU,GAAQyE,GAAOzB,EAAkB,GAAKA,EAAkB,IAC9D,KAAK,KAAKkB,EAAIA,EAAI1G,GAAIA,EAAC,GAAM2G,GAAI,MAC3CO,GAAQ,KAAK,IAAI1E,GAAG,EAAG,EACzB,KAAK,IAAI,KAAO,KAAK,IAAI,IAAMgD,EAAkB,CAAC,EAAG,GAAI,EACvDvF,GAAIiH,GAAQ,KAAK,KAAKtC,GAAI,GAAK,EAC/BE,GAAI7E,GAAIuF,EAAkB,OAC1BT,GAAI,GACN,KAAK,KAAMmC,GAAQ1B,EAAkB,GAAMA,EAAkB,GAAK,EAAI,EACpER,IAAU,EAAM,IAAQ,MAASJ,IAAM,EAAM,KAAQA,IACrDuC,GAAS,EAAM,MAAU,KAAK,IAAI,EAAM,MAASrC,EAAC,EAClDG,GAAQkC,GAAQ,KAAK,IAAIL,EAAU,EACnC5B,GAAQiC,GAAQ,KAAK,IAAIL,EAAU,EACzC,OAAO,IAAIrC,GAAMC,GAAKzE,GAAG2E,GAAGC,GAAGC,GAAGC,GAAGC,GAAOC,GAAOC,EAAK,CAC3D,CAMD,OAAO,QAAQN,EAAG3E,EAAGmH,EAAG,CACpB,OAAO3C,GAAM,2BAA2BG,EAAG3E,EAAGmH,EAAGvE,GAAkB,OAAO,CAC7E,CAQD,OAAO,2BAA2B+B,EAAG3E,EAAGmH,EAAG5B,EAAmB,CAC1D,MAAMX,EAAK,EAAMW,EAAkB,EAAK,KAAK,KAAKZ,EAAI,GAAK,GACtDY,EAAkB,GAAK,GAAOA,EAAkB,OAC/CV,EAAI7E,EAAIuF,EAAkB,OAC1B0B,EAAQjH,EAAI,KAAK,KAAK2E,EAAI,GAAK,EAC/BG,EAAI,GACN,KAAK,KAAMmC,EAAQ1B,EAAkB,GAAMA,EAAkB,GAAK,EAAI,EACpEsB,EAAcM,EAAI,KAAK,GAAM,IAC7BpC,GAAU,EAAM,IAAQ,MAASJ,GAAM,EAAM,KAAQA,GACrDuC,EAAS,EAAM,MAAU,KAAK,IAAI,EAAM,MAASrC,CAAC,EAClDG,EAAQkC,EAAQ,KAAK,IAAIL,CAAU,EACnC5B,EAAQiC,EAAQ,KAAK,IAAIL,CAAU,EACzC,OAAO,IAAIrC,GAAM2C,EAAGnH,EAAG2E,EAAGC,EAAGC,EAAGC,EAAGC,EAAOC,EAAOC,CAAK,CACzD,CAQD,OAAO,QAAQF,EAAOC,EAAOC,EAAO,CAChC,OAAOT,GAAM,2BAA2BO,EAAOC,EAAOC,EAAOrC,GAAkB,OAAO,CACzF,CAUD,OAAO,2BAA2BmC,EAAOC,EAAOC,EAAOM,EAAmB,CACtE,MAAMkB,EAAIzB,EACJjF,EAAIkF,EACJJ,EAAI,KAAK,KAAK4B,EAAIA,EAAI1G,EAAIA,CAAC,EAE3BC,GADK,KAAK,IAAI6E,EAAI,KAAM,EAAI,GAAO,MAC3BU,EAAkB,OAChC,IAAI4B,EAAI,KAAK,MAAMpH,EAAG0G,CAAC,GAAK,IAAQ,KAAK,IACrCU,EAAI,IACJA,GAAK,KAET,MAAMxC,EAAII,GAAS,GAAKA,EAAQ,KAAO,MACvC,OAAOP,GAAM,2BAA2BG,EAAG3E,EAAGmH,EAAG5B,CAAiB,CACrE,CAMD,OAAQ,CACJ,OAAO,KAAK,OAAO3C,GAAkB,OAAO,CAC/C,CAMD,OAAO2C,EAAmB,CACtB,MAAM0B,EAAQ,KAAK,SAAW,GAAO,KAAK,IAAM,EAC5C,EACA,KAAK,OAAS,KAAK,KAAK,KAAK,EAAI,GAAK,EACpC1E,EAAI,KAAK,IAAI0E,EAAQ,KAAK,IAAI,KAAO,KAAK,IAAI,IAAM1B,EAAkB,CAAC,EAAG,GAAI,EAAG,EAAM,EAAG,EAC1F6B,EAAQ,KAAK,IAAM,KAAK,GAAM,IAC9BJ,EAAO,KAAQ,KAAK,IAAII,EAAO,CAAG,EAAI,KACtCN,EAAKvB,EAAkB,GACzB,KAAK,IAAI,KAAK,EAAI,IAAO,EAAMA,EAAkB,EAAIA,EAAkB,CAAC,EACtE8B,EAAKL,GAAQ,IAAU,IAAQzB,EAAkB,GAAKA,EAAkB,IACxEoB,EAAKG,EAAKvB,EAAkB,IAC5B+B,EAAO,KAAK,IAAIF,CAAI,EACpBG,EAAO,KAAK,IAAIH,CAAI,EACpBI,EAAS,IAAQb,EAAK,MAASpE,GAChC,GAAO8E,EAAK,GAAO9E,EAAIgF,EAAO,IAAQhF,EAAI+E,GACzCb,EAAIe,EAAQD,EACZxH,EAAIyH,EAAQF,EACZjB,GAAM,IAAQM,EAAK,IAAQF,EAAI,IAAQ1G,GAAK,KAC5CwG,GAAM,IAAQI,EAAK,IAAQF,EAAI,IAAQ1G,GAAK,KAC5CyG,GAAM,IAAQG,EAAK,IAAQF,EAAI,KAAS1G,GAAK,KAC7C0H,GAAS,KAAK,IAAI,EAAI,MAAQ,KAAK,IAAIpB,CAAE,GAAM,IAAQ,KAAK,IAAIA,CAAE,EAAE,EACpET,GAAKU,GAAYD,CAAE,GAAK,IAAQd,EAAkB,IACpD,KAAK,IAAIkC,GAAQ,EAAM,GAAI,EACzBC,EAAS,KAAK,IAAI,EAAI,MAAQ,KAAK,IAAInB,CAAE,GAAM,IAAQ,KAAK,IAAIA,CAAE,EAAE,EACpEV,GAAKS,GAAYC,CAAE,GAAK,IAAQhB,EAAkB,IACpD,KAAK,IAAImC,EAAQ,EAAM,GAAI,EACzBC,EAAS,KAAK,IAAI,EAAI,MAAQ,KAAK,IAAInB,CAAE,GAAM,IAAQ,KAAK,IAAIA,CAAE,EAAE,EACpEV,EAAKQ,GAAYE,CAAE,GAAK,IAAQjB,EAAkB,IACpD,KAAK,IAAIoC,EAAQ,EAAM,GAAI,EACzBC,EAAKhC,GAAKL,EAAkB,KAAK,CAAC,EAClCsC,EAAKhC,GAAKN,EAAkB,KAAK,CAAC,EAClCuC,GAAKhC,EAAKP,EAAkB,KAAK,CAAC,EAClCrE,GAAI,WAAa0G,EAAK,WAAaC,EAAK,UAAaC,GACrD3G,GAAI,UAAayG,EAAK,UAAaC,EAAK,UAAaC,GACrD1G,GAAI,UAAcwG,EAAK,UAAaC,EAAK,WAAaC,GAE5D,OADaC,GAAkB7G,GAAGC,GAAGC,EAAC,CAEzC,CAGD,OAAO,2BAA2BF,EAAGC,EAAGC,EAAGmE,EAAmB,CAE1D,MAAMK,EAAK,QAAW1E,EAAI,QAAWC,EAAI,QAAWC,EAC9CyE,EAAK,SAAY3E,EAAI,SAAWC,EAAI,QAAWC,EAC/C0E,EAAK,SAAY5E,EAAI,QAAWC,EAAI,QAAWC,EAE/C2E,EAAKR,EAAkB,KAAK,CAAC,EAAIK,EACjCI,EAAKT,EAAkB,KAAK,CAAC,EAAIM,EACjCI,EAAKV,EAAkB,KAAK,CAAC,EAAIO,EAEjCI,EAAM,KAAK,IAAIX,EAAkB,GAAK,KAAK,IAAIQ,CAAE,EAAI,IAAO,GAAI,EAChEI,EAAM,KAAK,IAAIZ,EAAkB,GAAK,KAAK,IAAIS,CAAE,EAAI,IAAO,GAAI,EAChEI,EAAM,KAAK,IAAIb,EAAkB,GAAK,KAAK,IAAIU,CAAE,EAAI,IAAO,GAAI,EAChEI,EAAKC,GAAYP,CAAE,EAAI,IAAQG,GAAOA,EAAM,OAC5CK,EAAKD,GAAYN,CAAE,EAAI,IAAQG,GAAOA,EAAM,OAC5CK,EAAKF,GAAYL,CAAE,EAAI,IAAQG,GAAOA,EAAM,OAE5CK,IAAK,GAAOJ,EAAK,IAAQE,EAAKC,GAAM,GAEpCzG,IAAKsG,EAAKE,EAAK,EAAMC,GAAM,EAE3BE,GAAK,GAAOL,EAAK,GAAOE,EAAK,GAAOC,GAAM,GAC1CG,IAAM,GAAON,EAAK,GAAOE,EAAKC,GAAM,GAGpCI,EADQ,KAAK,MAAM7G,GAAG0G,EAAC,EACD,IAAQ,KAAK,GACnChC,EAAMmC,EAAc,EAAIA,EAAc,IACxCA,GAAe,IAAMA,EAAc,IAC/BA,EACFC,EAAapC,EAAM,KAAK,GAAK,IAE7BqC,GAAKH,GAAKpB,EAAkB,IAE5ByC,GAAI,IACN,KAAK,IAAIlB,GAAKvB,EAAkB,GAAIA,EAAkB,EAAIA,EAAkB,CAAC,EAC3E0C,GAAK,EAAM1C,EAAkB,EAAK,KAAK,KAAKyC,GAAI,GAAK,GACtDzC,EAAkB,GAAK,GAAQA,EAAkB,OAChDwB,GAAYtC,EAAM,MAASA,EAAM,IAAMA,EACvCuC,GAAQ,EAAM,GAAQ,KAAK,IAAID,GAAW,KAAK,GAAK,IAAQ,CAAG,EAAI,KAEnExE,GADK,IAAU,GAAOyE,GAAOzB,EAAkB,GAAKA,EAAkB,IAC7D,KAAK,KAAKkB,GAAIA,GAAI1G,GAAIA,EAAC,GAAK2G,EAAI,MACzCO,GAAQ,KAAK,IAAI1E,GAAG,EAAG,EACzB,KAAK,IAAI,KAAO,KAAK,IAAI,IAAMgD,EAAkB,CAAC,EAAG,GAAI,EAEvD2C,GAAIjB,GAAQ,KAAK,KAAKe,GAAI,GAAK,EAC/BG,GAAID,GAAI3C,EAAkB,OAC1BT,GAAI,GACN,KAAK,KAAMmC,GAAQ1B,EAAkB,GAAMA,EAAkB,GAAK,EAAI,EAEpER,IAAS,EAAM,IAAQ,MAASiD,IAAK,EAAM,KAAQA,IACnDd,GAAQ,KAAK,IAAI,EAAM,MAASiB,EAAC,EAAI,MACrCnD,GAAQkC,GAAQ,KAAK,IAAIL,CAAU,EACnC5B,GAAQiC,GAAQ,KAAK,IAAIL,CAAU,EACzC,OAAO,IAAIrC,GAAMC,EAAKyD,GAAGF,GAAGC,GAAGE,GAAGrD,GAAGC,GAAOC,GAAOC,EAAK,CAC3D,CAED,uBAAuBM,EAAmB,CACtC,MAAM0B,EAAS,KAAK,SAAW,GAAO,KAAK,IAAM,EAC7C,EACA,KAAK,OAAS,KAAK,KAAK,KAAK,EAAI,GAAK,EACpC1E,EAAI,KAAK,IAAI0E,EAAQ,KAAK,IAAI,KAAO,KAAK,IAAI,IAAM1B,EAAkB,CAAC,EAAG,GAAI,EAAG,EAAM,EAAG,EAC1F6B,EAAO,KAAK,IAAM,KAAK,GAAK,IAC5BJ,EAAO,KAAQ,KAAK,IAAII,EAAO,CAAG,EAAI,KACtCN,EAAKvB,EAAkB,GACzB,KAAK,IAAI,KAAK,EAAI,IAAO,EAAMA,EAAkB,EAAIA,EAAkB,CAAC,EACtE8B,EAAKL,GAAQ,IAAU,IAAQzB,EAAkB,GAAKA,EAAkB,IACxEoB,EAAMG,EAAKvB,EAAkB,IAC7B+B,EAAO,KAAK,IAAIF,CAAI,EACpBG,EAAO,KAAK,IAAIH,CAAI,EACpBI,EAAQ,IAAQb,EAAK,MAASpE,GAC/B,GAAO8E,EAAK,GAAK9E,EAAIgF,EAAO,IAAQhF,EAAI+E,GACvCb,EAAIe,EAAQD,EACZxH,EAAIyH,EAAQF,EACZjB,GAAM,IAAQM,EAAK,IAAQF,EAAI,IAAQ1G,GAAK,KAC5CwG,GAAM,IAAQI,EAAK,IAAQF,EAAI,IAAQ1G,GAAK,KAC5CyG,GAAM,IAAQG,EAAK,IAAQF,EAAI,KAAS1G,GAAK,KAC7C0H,GAAS,KAAK,IAAI,EAAI,MAAQ,KAAK,IAAIpB,CAAE,GAAM,IAAQ,KAAK,IAAIA,CAAE,EAAE,EACpET,GAAKU,GAAYD,CAAE,GAAK,IAAQd,EAAkB,IACpD,KAAK,IAAIkC,GAAQ,EAAM,GAAI,EACzBC,EAAS,KAAK,IAAI,EAAI,MAAQ,KAAK,IAAInB,CAAE,GAAM,IAAQ,KAAK,IAAIA,CAAE,EAAE,EACpEV,GAAKS,GAAYC,CAAE,GAAK,IAAQhB,EAAkB,IACpD,KAAK,IAAImC,EAAQ,EAAM,GAAI,EACzBC,EAAS,KAAK,IAAI,EAAI,MAAQ,KAAK,IAAInB,CAAE,GAAM,IAAQ,KAAK,IAAIA,CAAE,EAAE,EACpEV,EAAKQ,GAAYE,CAAE,GAAK,IAAQjB,EAAkB,IACpD,KAAK,IAAIoC,EAAQ,EAAM,GAAI,EACzBC,EAAKhC,GAAKL,EAAkB,KAAK,CAAC,EAClCsC,EAAKhC,GAAKN,EAAkB,KAAK,CAAC,EAClCuC,GAAKhC,EAAKP,EAAkB,KAAK,CAAC,EAClCrE,GAAI,WAAa0G,EAAK,WAAaC,EAAK,UAAaC,GACrD3G,GAAI,UAAayG,EAAK,UAAaC,EAAK,UAAaC,GACrD1G,GAAI,UAAcwG,EAAK,UAAaC,EAAK,WAAaC,GAC5D,MAAO,CAAC5G,GAAGC,GAAGC,EAAC,CAClB,CACL,CCnWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA6BO,MAAMgH,CAAU,CAQnB,OAAO,gBAAgBC,EAAO,CAC1B,OAAQA,EAAQ,KAAK,GAAK,IAAM,KAAK,GAAK,EAC7C,CAUD,OAAO,iBAAiBlG,EAAc,CAClC,MAAMC,EAAaD,EAAe,IAClC,IAAIxB,EAAe,EACnB,OAAIyB,GAAc,SACdzB,EAAeyB,EAAa,MAG5BzB,EAAe,MAAQ,KAAK,IAAIyB,EAAY,EAAM,GAAG,EAAI,KAEtDzB,EAAe,GACzB,CACD,OAAO,oBAAoBmB,EAAW,CAClC,MAAMwG,EAAK,KAAK,IAAI,KAAK,IAAIxG,CAAS,EAAG,GAAI,EAC7C,OAAOyG,GAAiBzG,CAAS,EAAI,IAAQwG,GAAMA,EAAK,MAC3D,CAOD,OAAO,MAAM7H,EAAQ,CACjB,MAAM+H,EAAiB9G,GAAyBjB,EAAQ2H,EAAU,2BAA2B,EACvF/B,EAAK+B,EAAU,oBAAoBI,EAAe,CAAC,CAAC,EACpDjC,EAAK6B,EAAU,oBAAoBI,EAAe,CAAC,CAAC,EACpDhC,EAAK4B,EAAU,oBAAoBI,EAAe,CAAC,CAAC,EAEpD/B,GAAK,GAAOJ,EAAK,IAAQE,EAAKC,GAAM,GAEpCzG,GAAKsG,EAAKE,EAAK,EAAMC,GAAM,EACjC,OAAO,KAAK,MAAMzG,EAAG0G,CAAC,CACzB,CACD,OAAO,iBAAiBA,EAAG1G,EAAGC,EAAG,CAC7B,MAAMyI,EAAUL,EAAU,gBAAgBrI,EAAI0G,CAAC,EACzCiC,EAAUN,EAAU,gBAAgBpI,EAAIyG,CAAC,EAC/C,OAAOgC,EAAUC,CACpB,CASD,OAAO,UAAUC,EAAQC,EAAKC,EAAQ,CAClC,OAAQD,EAAMD,IAAWE,EAASF,EACrC,CACD,OAAO,UAAUA,EAAQpG,EAAGsG,EAAQ,CAChC,MAAO,CACHF,EAAO,CAAC,GAAKE,EAAO,CAAC,EAAIF,EAAO,CAAC,GAAKpG,EACtCoG,EAAO,CAAC,GAAKE,EAAO,CAAC,EAAIF,EAAO,CAAC,GAAKpG,EACtCoG,EAAO,CAAC,GAAKE,EAAO,CAAC,EAAIF,EAAO,CAAC,GAAKpG,CAClD,CACK,CAYD,OAAO,cAAcoG,EAAQG,EAAYD,EAAQE,EAAM,CACnD,MAAMxG,EAAI6F,EAAU,UAAUO,EAAOI,CAAI,EAAGD,EAAYD,EAAOE,CAAI,CAAC,EACpE,OAAOX,EAAU,UAAUO,EAAQpG,EAAGsG,CAAM,CAC/C,CACD,OAAO,UAAU3H,EAAG,CAChB,MAAO,IAAOA,GAAKA,GAAK,GAC3B,CAWD,OAAO,UAAUC,EAAG8C,EAAG,CACnB,MAAM+E,EAAKZ,EAAU,cAAc,CAAC,EAC9Ba,EAAKb,EAAU,cAAc,CAAC,EAC9Bc,EAAKd,EAAU,cAAc,CAAC,EAC9Be,EAASlF,EAAI,GAAK,EAAI,EAAM,IAC5BmF,EAASnF,EAAI,IAAM,EAAI,EAAM,IACnC,GAAIA,EAAI,EAAG,CACP,MAAMrD,EAAIuI,EACJpJ,EAAIqJ,EACJ1I,GAAKS,EAAIP,EAAIqI,EAAKlJ,EAAImJ,GAAMF,EAClC,OAAIZ,EAAU,UAAU1H,CAAC,EACd,CAACA,EAAGE,EAAGb,CAAC,EAGR,CAAC,GAAM,GAAM,EAAI,CAE/B,SACQkE,EAAI,EAAG,CACZ,MAAMlE,EAAIoJ,EACJzI,EAAI0I,EACJxI,GAAKO,EAAIT,EAAIsI,EAAKjJ,EAAImJ,GAAMD,EAClC,OAAIb,EAAU,UAAUxH,CAAC,EACd,CAACF,EAAGE,EAAGb,CAAC,EAGR,CAAC,GAAM,GAAM,EAAI,CAE/B,KACI,CACD,MAAMW,EAAIyI,EACJvI,EAAIwI,EACJrJ,GAAKoB,EAAIT,EAAIsI,EAAKpI,EAAIqI,GAAMC,EAClC,OAAId,EAAU,UAAUrI,CAAC,EACd,CAACW,EAAGE,EAAGb,CAAC,EAGR,CAAC,GAAM,GAAM,EAAI,CAE/B,CACJ,CAUD,OAAO,gBAAgBoB,EAAGkI,EAAW,CACjC,IAAIC,EAAO,CAAC,GAAM,GAAM,EAAI,EACxBC,EAAQD,EACRE,EAAU,EACVC,EAAW,EACXC,EAAc,GACdC,EAAQ,GACZ,QAAS1F,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAM2E,EAAMR,EAAU,UAAUjH,EAAG8C,CAAC,EACpC,GAAI2E,EAAI,CAAC,EAAI,EACT,SAEJ,MAAMgB,EAASxB,EAAU,MAAMQ,CAAG,EAClC,GAAI,CAACc,EAAa,CACdJ,EAAOV,EACPW,EAAQX,EACRY,EAAUI,EACVH,EAAWG,EACXF,EAAc,GACd,QACH,EACGC,GAASvB,EAAU,iBAAiBoB,EAASI,EAAQH,CAAQ,KAC7DE,EAAQ,GACJvB,EAAU,iBAAiBoB,EAASH,EAAWO,CAAM,GACrDL,EAAQX,EACRa,EAAWG,IAGXN,EAAOV,EACPY,EAAUI,GAGrB,CACD,MAAO,CAACN,EAAMC,CAAK,CACtB,CACD,OAAO,SAAS9C,EAAG1G,EAAG,CAClB,MAAO,EACF0G,EAAE,CAAC,EAAI1G,EAAE,CAAC,GAAK,GACf0G,EAAE,CAAC,EAAI1G,EAAE,CAAC,GAAK,GACf0G,EAAE,CAAC,EAAI1G,EAAE,CAAC,GAAK,CAC5B,CACK,CACD,OAAO,mBAAmBmB,EAAG,CACzB,OAAO,KAAK,MAAMA,EAAI,EAAG,CAC5B,CACD,OAAO,mBAAmBA,EAAG,CACzB,OAAO,KAAK,KAAKA,EAAI,EAAG,CAC3B,CASD,OAAO,cAAcC,EAAGkI,EAAW,CAC/B,MAAMQ,EAAUzB,EAAU,gBAAgBjH,EAAGkI,CAAS,EACtD,IAAIC,EAAOO,EAAQ,CAAC,EAChBL,EAAUpB,EAAU,MAAMkB,CAAI,EAC9BC,EAAQM,EAAQ,CAAC,EACrB,QAASd,EAAO,EAAGA,EAAO,EAAGA,IACzB,GAAIO,EAAKP,CAAI,IAAMQ,EAAMR,CAAI,EAAG,CAC5B,IAAIe,EAAS,GACTC,EAAS,IACTT,EAAKP,CAAI,EAAIQ,EAAMR,CAAI,GACvBe,EAAS1B,EAAU,mBAAmBA,EAAU,iBAAiBkB,EAAKP,CAAI,CAAC,CAAC,EAC5EgB,EAAS3B,EAAU,mBAAmBA,EAAU,iBAAiBmB,EAAMR,CAAI,CAAC,CAAC,IAG7Ee,EAAS1B,EAAU,mBAAmBA,EAAU,iBAAiBkB,EAAKP,CAAI,CAAC,CAAC,EAC5EgB,EAAS3B,EAAU,mBAAmBA,EAAU,iBAAiBmB,EAAMR,CAAI,CAAC,CAAC,GAEjF,QAASiB,EAAI,EAAGA,EAAI,GACZ,OAAK,IAAID,EAASD,CAAM,GAAK,GADdE,IAId,CACD,MAAMC,EAAS,KAAK,OAAOH,EAASC,GAAU,CAAG,EAC3CG,EAAqB9B,EAAU,gBAAgB6B,CAAM,EACrDrB,EAAMR,EAAU,cAAckB,EAAMY,EAAoBX,EAAOR,CAAI,EACnEa,EAASxB,EAAU,MAAMQ,CAAG,EAC9BR,EAAU,iBAAiBoB,EAASH,EAAWO,CAAM,GACrDL,EAAQX,EACRmB,EAASE,IAGTX,EAAOV,EACPY,EAAUI,EACVE,EAASG,EAEhB,CAER,CAEL,OAAO7B,EAAU,SAASkB,EAAMC,CAAK,CACxC,CACD,OAAO,2BAA2BY,EAAS,CACvC,MAAMC,EAAa,KAAK,IAAID,CAAO,EAC7BE,EAAO,KAAK,IAAI,EAAG,MAAQD,GAAc,IAAQA,EAAW,EAClE,OAAO7B,GAAiB4B,CAAO,EAAI,KAAK,IAAIE,EAAM,EAAM,GAAI,CAC/D,CAUD,OAAO,cAAcxD,EAAYnC,EAAQvD,EAAG,CAExC,IAAIwD,EAAI,KAAK,KAAKxD,CAAC,EAAI,GAIvB,MAAMoE,EAAoB3C,GAAkB,QACtC0H,EAAc,EAAI,KAAK,IAAI,KAAO,KAAK,IAAI,IAAM/E,EAAkB,CAAC,EAAG,GAAI,EAE3E8B,EADO,KAAQ,KAAK,IAAIR,EAAa,CAAG,EAAI,MAC/B,IAAU,IAAQtB,EAAkB,GAAKA,EAAkB,IACxE+B,EAAO,KAAK,IAAIT,CAAU,EAC1BU,EAAO,KAAK,IAAIV,CAAU,EAChC,QAAS0D,EAAiB,EAAGA,EAAiB,EAAGA,IAAkB,CAI/D,MAAMC,EAAc7F,EAAI,IAClBsC,EAAQvC,IAAW,GAAOC,IAAM,EAAM,EAAMD,EAAS,KAAK,KAAK8F,CAAW,EAC1EjI,EAAI,KAAK,IAAI0E,EAAQqD,EAAa,EAAM,EAAG,EAG3C3D,EAFKpB,EAAkB,GACzB,KAAK,IAAIiF,EAAa,EAAMjF,EAAkB,EAAIA,EAAkB,CAAC,EACzDA,EAAkB,IAC5BiC,GAAQ,IAAQb,EAAK,MAASpE,GAC/B,GAAO8E,EAAK,GAAK9E,EAAIgF,EAAO,IAAQhF,EAAI+E,GACvCb,GAAIe,GAAQD,EACZxH,EAAIyH,GAAQF,EACZjB,IAAM,IAAQM,EAAK,IAAQF,GAAI,IAAQ1G,GAAK,KAC5CwG,GAAM,IAAQI,EAAK,IAAQF,GAAI,IAAQ1G,GAAK,KAC5CyG,GAAM,IAAQG,EAAK,IAAQF,GAAI,KAAS1G,GAAK,KAC7C0K,EAAWrC,EAAU,2BAA2B/B,EAAE,EAClDqE,EAAWtC,EAAU,2BAA2B7B,CAAE,EAClDoE,GAAWvC,EAAU,2BAA2B5B,CAAE,EAClD/F,GAASiB,GAAyB,CAAC+I,EAAUC,EAAUC,EAAQ,EAAGvC,EAAU,2BAA2B,EAI7G,GAAI3H,GAAO,CAAC,EAAI,GAAKA,GAAO,CAAC,EAAI,GAAKA,GAAO,CAAC,EAAI,EAC9C,MAAO,GAEX,MAAMuI,GAAKZ,EAAU,cAAc,CAAC,EAC9Ba,GAAKb,EAAU,cAAc,CAAC,EAC9Bc,GAAKd,EAAU,cAAc,CAAC,EAC9BwC,GAAM5B,GAAKvI,GAAO,CAAC,EAAIwI,GAAKxI,GAAO,CAAC,EAAIyI,GAAKzI,GAAO,CAAC,EAC3D,GAAImK,IAAO,EACP,MAAO,GAEX,GAAIL,IAAmB,GAAK,KAAK,IAAIK,GAAMzJ,CAAC,EAAI,KAC5C,OAAIV,GAAO,CAAC,EAAI,QAAUA,GAAO,CAAC,EAAI,QAAUA,GAAO,CAAC,EAAI,OACjD,EAEJoK,GAA0BpK,EAAM,EAI3CkE,EAAIA,GAAKiG,GAAMzJ,GAAKwD,GAAK,EAAIiG,GAChC,CACD,MAAO,EACV,CAaD,OAAO,WAAWE,EAAYpG,EAAQ9C,EAAO,CACzC,GAAI8C,EAAS,MAAU9C,EAAQ,MAAUA,EAAQ,QAC7C,OAAOmJ,GAAyBnJ,CAAK,EAEzCkJ,EAAaE,GAAgCF,CAAU,EACvD,MAAMjE,EAAaiE,EAAa,IAAM,KAAK,GACrC3J,EAAI8J,GAAsBrJ,CAAK,EAC/BsJ,EAAc9C,EAAU,cAAcvB,EAAYnC,EAAQvD,CAAC,EACjE,GAAI+J,IAAgB,EAChB,OAAOA,EAEX,MAAMzK,EAAS2H,EAAU,cAAcjH,EAAG0F,CAAU,EACpD,OAAOgE,GAA0BpK,CAAM,CAC1C,CAaD,OAAO,WAAWqK,EAAYpG,EAAQ9C,EAAO,CACzC,OAAO4C,GAAM,QAAQ4D,EAAU,WAAW0C,EAAYpG,EAAQ9C,CAAK,CAAC,CACvE,CACL,CACAwG,EAAU,4BAA8B,CACpC,CACI,oBACA,oBACA,oBACH,EACD,CACI,qBACA,qBACA,oBACH,EACD,CACI,sBACA,qBACA,oBACH,CACL,EACAA,EAAU,4BAA8B,CACpC,CACI,mBACA,oBACA,kBACH,EACD,CACI,kBACA,kBACA,kBACH,EACD,CACI,mBACA,oBACA,iBACH,CACL,EACAA,EAAU,cAAgB,CAAC,MAAQ,MAAQ,KAAM,EACjDA,EAAU,gBAAkB,CACxB,oBAAsB,oBAAsB,mBAC5C,mBAAqB,mBAAqB,mBAC1C,mBAAqB,kBAAoB,kBACzC,mBAAqB,kBAAoB,iBACzC,kBAAoB,mBAAqB,iBACzC,kBAAoB,kBAAoB,kBACxC,kBAAoB,kBAAoB,kBACxC,iBAAmB,iBAAmB,kBACtC,iBAAmB,mBAAoB,mBACvC,mBAAoB,mBAAoB,mBACxC,mBAAoB,kBAAmB,mBACvC,mBAAoB,mBAAoB,mBACxC,mBAAoB,mBAAoB,mBACxC,kBAAmB,mBAAoB,mBACvC,iBAAkB,mBAAoB,mBACtC,mBAAoB,mBAAoB,kBACxC,mBAAoB,mBAAoB,mBACxC,mBAAoB,mBAAoB,kBACxC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,iBAAkB,mBACrC,mBAAoB,kBAAmB,kBACvC,kBAAmB,kBAAmB,kBACtC,kBAAmB,mBAAoB,kBACvC,kBAAmB,kBAAmB,mBACtC,mBAAoB,kBAAmB,kBACvC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,mBACtC,mBAAoB,kBAAmB,iBACvC,mBAAoB,mBAAoB,mBACxC,mBAAoB,mBAAoB,mBACxC,mBAAoB,mBAAoB,mBACxC,kBAAmB,mBAAoB,mBACvC,mBAAoB,kBAAmB,mBACvC,mBAAoB,kBAAmB,mBACvC,kBAAmB,kBAAmB,kBACtC,mBAAoB,kBAAmB,kBACvC,kBAAmB,mBAAoB,mBACvC,kBAAmB,mBAAoB,mBACvC,kBAAmB,mBAAoB,mBACvC,mBAAoB,mBAAoB,kBACxC,mBAAoB,kBAAmB,mBACvC,mBAAoB,iBAAkB,mBACtC,kBAAmB,mBAAoB,kBACvC,kBAAmB,mBAAoB,mBACvC,mBAAoB,mBAAoB,mBACxC,kBAAmB,mBAAoB,kBACvC,kBAAmB,kBAAmB,mBACtC,mBAAoB,mBAAoB,kBACxC,kBAAmB,kBAAmB,mBACtC,iBAAkB,mBAAoB,mBACtC,mBAAoB,kBAAmB,kBACvC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,mBACtC,kBAAmB,mBAAoB,kBACvC,mBAAoB,mBAAoB,iBACxC,kBAAmB,mBAAoB,kBACvC,kBAAmB,kBAAmB,mBACtC,kBAAmB,kBAAmB,mBACtC,iBAAkB,iBAAkB,mBACpC,mBAAoB,kBAAmB,kBACvC,iBAAkB,mBAAoB,mBACtC,kBAAmB,mBAAoB,kBACvC,kBAAmB,kBAAmB,kBACtC,mBAAoB,kBAAmB,kBACvC,mBAAoB,kBAAmB,mBACvC,iBAAkB,mBAAoB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,iBACtC,kBAAmB,kBAAmB,iBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,iBAAkB,kBACrC,kBAAmB,kBAAmB,kBACtC,kBAAmB,iBAAkB,iBACrC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,kBACtC,kBAAmB,kBAAmB,iBACtC,kBAAmB,iBAAkB,iBACzC,ECjgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAwCO,MAAM+C,EAAI,CACb,OAAO,KAAK1G,EAAKC,EAAQ0G,EAAM,CAC3B,OAAO,IAAID,GAAI/C,EAAU,WAAW3D,EAAKC,EAAQ0G,CAAI,CAAC,CACzD,CAKD,OAAO,QAAQtK,EAAM,CACjB,OAAO,IAAIqK,GAAIrK,CAAI,CACtB,CACD,OAAQ,CACJ,OAAO,KAAK,IACf,CAKD,IAAI,KAAM,CACN,OAAO,KAAK,WACf,CAMD,IAAI,IAAIuK,EAAQ,CACZ,KAAK,iBAAiBjD,EAAU,WAAWiD,EAAQ,KAAK,eAAgB,KAAK,YAAY,CAAC,CAC7F,CACD,IAAI,QAAS,CACT,OAAO,KAAK,cACf,CAMD,IAAI,OAAOC,EAAW,CAClB,KAAK,iBAAiBlD,EAAU,WAAW,KAAK,YAAakD,EAAW,KAAK,YAAY,CAAC,CAC7F,CAED,IAAI,MAAO,CACP,OAAO,KAAK,YACf,CAMD,IAAI,KAAKC,EAAS,CACd,KAAK,iBAAiBnD,EAAU,WAAW,KAAK,YAAa,KAAK,eAAgBmD,CAAO,CAAC,CAC7F,CACD,YAAYzK,EAAM,CACd,KAAK,KAAOA,EACZ,MAAM0K,EAAMhH,GAAM,QAAQ1D,CAAI,EAC9B,KAAK,YAAc0K,EAAI,IACvB,KAAK,eAAiBA,EAAI,OAC1B,KAAK,aAAeC,GAAoB3K,CAAI,EAC5C,KAAK,KAAOA,CACf,CACD,iBAAiBA,EAAM,CACnB,MAAM0K,EAAMhH,GAAM,QAAQ1D,CAAI,EAC9B,KAAK,YAAc0K,EAAI,IACvB,KAAK,eAAiBA,EAAI,OAC1B,KAAK,aAAeC,GAAoB3K,CAAI,EAC5C,KAAK,KAAOA,CACf,CAeD,oBAAoB4K,EAAI,CAGpB,MAAMC,EADMnH,GAAM,QAAQ,KAAK,MAAO,CAAA,EACf,uBAAuBkH,CAAE,EAE1CE,EAAapH,GAAM,2BAA2BmH,EAAW,CAAC,EAAGA,EAAW,CAAC,EAAGA,EAAW,CAAC,EAAG/I,GAAkB,KAAM,CAAA,EAKzH,OADkBuI,GAAI,KAAKS,EAAW,IAAKA,EAAW,OAAQC,GAAiBF,EAAW,CAAC,CAAC,CAAC,CAEhG,CACL,CCrIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmCO,MAAMG,EAAS,CAOlB,OAAO,aAAaC,EAAOC,EAAO,CAC9B,OAAAD,EAAQE,GAAiB,EAAK,IAAOF,CAAK,EAC1CC,EAAQC,GAAiB,EAAK,IAAOD,CAAK,EACnCF,GAAS,UAAU9I,GAAiB+I,CAAK,EAAG/I,GAAiBgJ,CAAK,CAAC,CAC7E,CACD,OAAO,UAAUE,EAAIC,EAAI,CACrB,MAAMC,EAAUF,EAAKC,EAAKD,EAAKC,EACzBE,EAAUD,IAAYD,EAAMD,EAAKC,EACvC,OAAQC,EAAU,IAAQC,EAAS,EACtC,CAWD,OAAO,QAAQjB,EAAMkB,EAAO,CACxB,GAAIlB,EAAO,GAAOA,EAAO,IACrB,MAAO,GAEX,MAAMmB,EAAQvJ,GAAiBoI,CAAI,EAC7BoB,EAASF,GAASC,EAAQ,GAAO,EACjCE,EAAeX,GAAS,UAAUU,EAAQD,CAAK,EAC/CG,EAAQ,KAAK,IAAID,EAAeH,CAAK,EAC3C,GAAIG,EAAeH,GAASI,EAAQ,IAChC,MAAO,GAIX,MAAMC,EAAcd,GAAiBW,CAAM,EAAI,GAC/C,OAAIG,EAAc,GAAKA,EAAc,IAC1B,GAEJA,CACV,CAWD,OAAO,OAAOvB,EAAMkB,EAAO,CACvB,GAAIlB,EAAO,GAAOA,EAAO,IACrB,MAAO,GAEX,MAAMoB,EAASxJ,GAAiBoI,CAAI,EAC9BmB,GAAUC,EAAS,GAAOF,EAAS,EACnCG,EAAeX,GAAS,UAAUU,EAAQD,CAAK,EAC/CG,EAAQ,KAAK,IAAID,EAAeH,CAAK,EAC3C,GAAIG,EAAeH,GAASI,EAAQ,IAChC,MAAO,GAIX,MAAMC,EAAcd,GAAiBU,CAAK,EAAI,GAC9C,OAAII,EAAc,GAAKA,EAAc,IAC1B,GAEJA,CACV,CAeD,OAAO,cAAcvB,EAAMkB,EAAO,CAC9B,MAAMM,EAAcd,GAAS,QAAQV,EAAMkB,CAAK,EAChD,OAAQM,EAAc,EAAO,IAAQA,CACxC,CAeD,OAAO,aAAaxB,EAAMkB,EAAO,CAC7B,MAAMO,EAAaf,GAAS,OAAOV,EAAMkB,CAAK,EAC9C,OAAQO,EAAa,EAAO,EAAMA,CACrC,CACL,CClJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA+BO,MAAMC,EAAgB,CASzB,OAAO,WAAWC,EAAK,CACnB,MAAMC,EAAY,KAAK,MAAMD,EAAI,GAAG,GAAK,IAAQ,KAAK,MAAMA,EAAI,GAAG,GAAK,IAClEE,EAAe,KAAK,MAAMF,EAAI,MAAM,EAAI,GACxCG,EAAa,KAAK,MAAMH,EAAI,IAAI,EAAI,GAC1C,OAAOC,GAAaC,GAAgBC,CACvC,CAQD,OAAO,cAAcH,EAAK,CACtB,OAAID,GAAgB,WAAWC,CAAG,EACvB5B,GAAI,KAAK4B,EAAI,IAAKA,EAAI,OAAQ,EAAI,EAEtCA,CACV,CACL,CC3DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA6BO,MAAMI,CAAa,CAOtB,OAAO,YAAYC,EAAM,CACrB,OAAO,IAAID,EAAaC,EAAK,MAAQ,GAAIA,EAAK,QAASA,EAAK,KAAMA,EAAK,cAAgB,GAAOA,EAAK,WAAYA,EAAK,iBAAkBA,EAAK,cAAeA,EAAK,aAAa,CAC/K,CAiCD,YAAYC,EAAMC,EAASlC,EAAMmC,EAAcC,EAAYC,EAAkBC,EAAeC,EAAe,CAUvG,GATA,KAAK,KAAON,EACZ,KAAK,QAAUC,EACf,KAAK,KAAOlC,EACZ,KAAK,aAAemC,EACpB,KAAK,WAAaC,EAClB,KAAK,iBAAmBC,EACxB,KAAK,cAAgBC,EACrB,KAAK,cAAgBC,EACrB,KAAK,SAAW,IAAI,IACf,CAACH,GAAeC,EACjB,MAAM,IAAI,MAAM,SAASJ,CAAI,8DACgB,EAEjD,GAAK,CAACG,GAAeE,EACjB,MAAM,IAAI,MAAM,SAASL,CAAI,2DACgB,EAEjD,GAAIG,GAAc,CAACE,EACf,MAAM,IAAI,MAAM,SAASL,CAAI,2DACmB,CAEvD,CAQD,QAAQO,EAAQ,CACZ,OAAO,KAAK,OAAOA,CAAM,EAAE,MAAK,CACnC,CASD,OAAOA,EAAQ,CACX,MAAMC,EAAe,KAAK,SAAS,IAAID,CAAM,EAC7C,GAAIC,GAAgB,KAChB,OAAOA,EAEX,MAAMzC,EAAO,KAAK,QAAQwC,CAAM,EAC1BE,EAAS,KAAK,QAAQF,CAAM,EAAE,OAAOxC,CAAI,EAC/C,OAAI,KAAK,SAAS,KAAO,GACrB,KAAK,SAAS,QAElB,KAAK,SAAS,IAAIwC,EAAQE,CAAM,EACzBA,CACV,CASD,QAAQF,EAAQ,CACZ,MAAMG,EAAqBH,EAAO,cAAgB,EAElD,GAAI,KAAK,cAAe,CACpB,MAAMD,EAAgB,KAAK,cAAcC,CAAM,EACzCI,EAAQL,EAAc,MACtBM,EAAQN,EAAc,MACtBjB,EAAQiB,EAAc,MACtBO,EAAWP,EAAc,SACzBQ,EAAeR,EAAc,aAE7BS,EADK,KAAK,WAAWR,CAAM,EACf,QAAQA,CAAM,EAC1BS,EAAaH,IAAa,UAC3BA,IAAa,WAAa,CAACN,EAAO,QAClCM,IAAa,UAAYN,EAAO,OAC/BU,EAASD,EAAYL,EAAQC,EAC7BM,EAAUF,EAAYJ,EAAQD,EAC9BQ,EAAW,KAAK,OAASF,EAAO,KAChCG,EAAeb,EAAO,OAAS,EAAI,GAEnCc,EAAYJ,EAAO,cAAc,YAAYV,EAAO,aAAa,EACjEe,GAAYJ,EAAQ,cAAc,YAAYX,EAAO,aAAa,EAGlEgB,GAAeN,EAAO,KAAKV,CAAM,EACvC,IAAIiB,EAAQ/C,GAAS,aAAasC,EAAQQ,EAAY,GAAKF,EACvDE,GACAzB,EAAa,eAAeiB,EAAQM,CAAS,EAEjD,MAAMI,GAAeP,EAAQ,KAAKX,CAAM,EACxC,IAAImB,EAAQjD,GAAS,aAAasC,EAAQU,EAAY,GAAKH,GACvDG,GACA3B,EAAa,eAAeiB,EAAQO,EAAS,EACjD,OAAIZ,IAGAc,EAAQ1B,EAAa,eAAeiB,EAAQM,CAAS,EACrDK,EAAQ5B,EAAa,eAAeiB,EAAQO,EAAS,IAEpDI,EAAQF,GAASJ,GAAgB/B,IAKlCqC,EAAQ9C,GAAiB,EAAG,IAAK4C,EAAQnC,EAAQ+B,CAAY,GACxDM,EAAQF,GAASJ,GAAgB/B,IAKlCmC,EAAQ5C,GAAiB,EAAG,IAAK8C,EAAQrC,EAAQ+B,CAAY,IAIjE,IAAMI,GAASA,EAAQ,GAGnBJ,EAAe,GACfI,EAAQ,GACRE,EAAQ,KAAK,IAAIA,EAAOF,EAAQnC,EAAQ+B,CAAY,IAGpDI,EAAQ,GACRE,EAAQ,KAAK,IAAIA,EAAOF,EAAQnC,EAAQ+B,CAAY,GAGnD,IAAMM,GAASA,EAAQ,KACxBZ,EAGIM,EAAe,GACfI,EAAQ,GACRE,EAAQ,KAAK,IAAIA,EAAOF,EAAQnC,EAAQ+B,CAAY,IAGpDI,EAAQ,GACRE,EAAQ,KAAK,IAAIA,EAAOF,EAAQnC,EAAQ+B,CAAY,GAKpDA,EAAe,EACfM,EAAQ,GAGRA,EAAQ,IAKbP,EAAWK,EAAQE,CAC7B,KACI,CAED,IAAIjB,EAAS,KAAK,KAAKF,CAAM,EAC7B,GAAI,KAAK,YAAc,KACnB,OAAOE,EAEX,MAAMM,EAAS,KAAK,WAAWR,CAAM,EAAE,QAAQA,CAAM,EAC/CoB,EAAe,KAAK,cAAc,YAAYpB,EAAO,aAAa,EAoBxE,GAnBI9B,GAAS,aAAasC,EAAQN,CAAM,GAAKkB,IAKzClB,EAASX,EAAa,eAAeiB,EAAQY,CAAY,GAEzDjB,IACAD,EAASX,EAAa,eAAeiB,EAAQY,CAAY,GAEzD,KAAK,cAAgB,IAAMlB,GAAUA,EAAS,KAE1ChC,GAAS,aAAa,GAAIsC,CAAM,GAAKY,EACrClB,EAAS,GAGTA,EAAS,IAGb,KAAK,iBAAkB,CAEvB,KAAM,CAACmB,EAAKC,CAAG,EAAI,CAAC,KAAK,WAAY,KAAK,gBAAgB,EACpD,CAACC,EAASC,CAAO,EAAI,CAACH,EAAIrB,CAAM,EAAE,QAAQA,CAAM,EAAGsB,EAAItB,CAAM,EAAE,QAAQA,CAAM,CAAC,EAC9E,CAACyB,EAAOC,CAAK,EAAI,CAAC,KAAK,IAAIH,EAASC,CAAO,EAAG,KAAK,IAAID,EAASC,CAAO,CAAC,EAC9E,GAAItD,GAAS,aAAauD,EAAOvB,CAAM,GAAKkB,GACxClD,GAAS,aAAawD,EAAOxB,CAAM,GAAKkB,EACxC,OAAOlB,EAIX,MAAMyB,EAAczD,GAAS,QAAQuD,EAAOL,CAAY,EAGlDQ,EAAa1D,GAAS,OAAOwD,EAAON,CAAY,EAEhDS,EAAa,CAAA,EAOnB,OANIF,IAAgB,IAChBE,EAAW,KAAKF,CAAW,EAC3BC,IAAe,IACfC,EAAW,KAAKD,CAAU,EACTrC,EAAa,2BAA2BgC,CAAO,GAChEhC,EAAa,2BAA2BiC,CAAO,EAEvCG,EAAc,EAAK,IAAMA,EAEjCE,EAAW,SAAW,EACfA,EAAW,CAAC,EAEfD,EAAa,EAAK,EAAIA,CACjC,CACD,OAAO1B,CACV,CACJ,CAUD,OAAO,eAAeM,EAAQ9B,EAAO,CACjC,MAAMoD,EAAc5D,GAAS,cAAcsC,EAAQ9B,CAAK,EAClDqD,EAAa7D,GAAS,aAAasC,EAAQ9B,CAAK,EAChDsD,EAAe9D,GAAS,aAAa4D,EAAatB,CAAM,EACxDyB,EAAc/D,GAAS,aAAa6D,EAAYvB,CAAM,EAE5D,GADsBjB,EAAa,2BAA2BiB,CAAM,EACjD,CAUf,MAAM0B,EAAuB,KAAK,IAAIF,EAAeC,CAAW,EAAI,IAChED,EAAetD,GAASuD,EAAcvD,EAC1C,OAAOsD,GAAgBtD,GAASsD,GAAgBC,GAC5CC,EACAJ,EACAC,CACP,KAEG,QAAOE,GAAevD,GAASuD,GAAeD,EAAeD,EACzDD,CAEX,CAYD,OAAO,2BAA2BtE,EAAM,CACpC,OAAO,KAAK,MAAMA,CAAI,EAAI,EAC7B,CAKD,OAAO,0BAA0BA,EAAM,CACnC,OAAO,KAAK,MAAMA,CAAI,GAAK,EAC9B,CAKD,OAAO,sBAAsBA,EAAM,CAC/B,OAAI+B,EAAa,2BAA2B/B,CAAI,GAC5C,CAAC+B,EAAa,0BAA0B/B,CAAI,EACrC,GAEJA,CACV,CACL,CCnWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAqBO,IAAI2E,IACV,SAAUA,EAAS,CAChBA,EAAQA,EAAQ,WAAgB,CAAC,EAAI,aACrCA,EAAQA,EAAQ,QAAa,CAAC,EAAI,UAClCA,EAAQA,EAAQ,WAAgB,CAAC,EAAI,aACrCA,EAAQA,EAAQ,QAAa,CAAC,EAAI,UAClCA,EAAQA,EAAQ,WAAgB,CAAC,EAAI,aACrCA,EAAQA,EAAQ,SAAc,CAAC,EAAI,WACnCA,EAAQA,EAAQ,QAAa,CAAC,EAAI,UAClCA,EAAQA,EAAQ,QAAa,CAAC,EAAI,UAClCA,EAAQA,EAAQ,YAAiB,CAAC,EAAI,aAC1C,GAAGA,KAAYA,GAAU,CAAA,EAAG,EChC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAuBO,MAAMC,CAAc,CASvB,YAAYC,EAAKC,EAAQC,EAAQC,EAAM,CACnC,KAAK,IAAMH,EACX,KAAK,OAASC,EACd,KAAK,OAASC,EACd,KAAK,KAAOC,CACf,CAQD,YAAYC,EAAe,CACvB,OAAIA,GAAiB,GACV,KAAK,IAEPA,EAAgB,EACd5M,GAAU,KAAK,IAAK,KAAK,QAAS4M,EAAiB,KAAO,CAAC,EAE7DA,EAAgB,GACd5M,GAAU,KAAK,OAAQ,KAAK,QAAS4M,EAAgB,GAAK,EAAG,EAE/DA,EAAgB,EACd5M,GAAU,KAAK,OAAQ,KAAK,MAAO4M,EAAgB,IAAO,EAAG,EAG7D,KAAK,IAEnB,CACL,CC9DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAwBO,MAAMC,EAAc,CAwBvB,YAAYtC,EAAOC,EAAOvB,EAAOwB,EAAUC,EAAc,CACrD,KAAK,MAAQH,EACb,KAAK,MAAQC,EACb,KAAK,MAAQvB,EACb,KAAK,SAAWwB,EAChB,KAAK,aAAeC,CACvB,CACL,CCvDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAuBA,SAASoC,GAAW3C,EAAQ,CACxB,OAAOA,EAAO,UAAYmC,GAAQ,UAC9BnC,EAAO,UAAYmC,GAAQ,OACnC,CACA,SAASS,GAAa5C,EAAQ,CAC1B,OAAOA,EAAO,UAAYmC,GAAQ,UACtC,CACA,SAASU,GAAwBhM,EAAKC,EAAQ0G,EAAMsF,EAAkB,CAClE,IAAI5C,EAAS1C,EACTuF,EAAkBxF,GAAI,KAAK1G,EAAKC,EAAQ0G,CAAI,EAChD,GAAIuF,EAAgB,OAASjM,EAAQ,CACjC,IAAIkM,EAAaD,EAAgB,OACjC,KAAOA,EAAgB,OAASjM,GAAQ,CACpCoJ,GAAU4C,EAAmB,GAAO,EACpC,MAAMG,EAAoB1F,GAAI,KAAK1G,EAAKC,EAAQoJ,CAAM,EAItD,GAHI8C,EAAaC,EAAkB,QAG/B,KAAK,IAAIA,EAAkB,OAASnM,CAAM,EAAI,GAC9C,MAEJ,MAAMoM,EAAiB,KAAK,IAAID,EAAkB,OAASnM,CAAM,EAC3DqM,EAAe,KAAK,IAAIJ,EAAgB,OAASjM,CAAM,EACzDoM,EAAiBC,IACjBJ,EAAkBE,GAEtBD,EAAa,KAAK,IAAIA,EAAYC,EAAkB,MAAM,CAC7D,CACJ,CACD,OAAO/C,CACX,CACA,SAASkD,GAA2BpD,EAAQ,CACxC,OAAOhL,GAAkB,KACT,OACO,OACFgL,EAAO,OAAS,GAAK,GAC5B,OACa,MAAS,CACxC,CACA,SAASqD,GAAcC,EAAWtD,EAAQ,CACtC,MAAMuD,EAAUD,EAAU,oBAAoBF,GAA2BpD,CAAM,CAAC,EAChF,OAAIT,EAAa,2BAA2B+D,EAAU,IAAI,GACtD,CAAC/D,EAAa,0BAA0BgE,EAAQ,IAAI,EAC7ChE,EAAa,sBAAsB+D,EAAU,IAAI,EAGjD/D,EAAa,sBAAsBgE,EAAQ,IAAI,CAE9D,CAMO,MAAMC,CAAsB,CAC/B,OAAO,eAAetM,EAAG,CACrB,OAAOA,EAAE,OAASsM,EAAsB,cACpCA,EAAsB,UAC7B,CACL,CACAA,EAAsB,uBAAyB,GAC/CA,EAAsB,uBAAyBjE,EAAa,YAAY,CACpE,KAAM,4BACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,eAAe,SAAS,IAC3C,CAAC,EACDsM,EAAsB,yBAA2BjE,EAAa,YAAY,CACtE,KAAM,8BACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GAAMA,EAAE,iBAAiB,SAAS,IAC7C,CAAC,EACDsM,EAAsB,wBAA0BjE,EAAa,YAAY,CACrE,KAAM,6BACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GAAMA,EAAE,gBAAgB,SAAS,IAC5C,CAAC,EACDsM,EAAsB,uBAAyBjE,EAAa,YAAY,CACpE,KAAM,4BACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,eAAe,SAAS,IAC3C,CAAC,EACDsM,EAAsB,8BAAgCjE,EAAa,YAAY,CAC3E,KAAM,oCACN,QAAUrI,GAAMA,EAAE,sBAClB,KAAOA,GAAMA,EAAE,sBAAsB,SAAS,IAClD,CAAC,EACDsM,EAAsB,WAAajE,EAAa,YAAY,CACxD,KAAM,aACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,EAAI,GAC5B,aAAc,EAClB,CAAC,EACDsM,EAAsB,aAAejE,EAAa,YAAY,CAC1D,KAAM,gBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,WAAaA,GAAMsM,EAAsB,WACzC,cAAe,IAAIpB,EAAc,EAAG,EAAG,IAAK,CAAC,CACjD,CAAC,EACDoB,EAAsB,QAAUjE,EAAa,YAAY,CACrD,KAAM,UACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,EAAI,GAC5B,aAAc,EAClB,CAAC,EACDsM,EAAsB,WAAajE,EAAa,YAAY,CACxD,KAAM,cACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,EAAI,GAC5B,aAAc,EAClB,CAAC,EACDsM,EAAsB,cAAgBjE,EAAa,YAAY,CAC3D,KAAM,iBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,EAClB,CAAC,EACDsM,EAAsB,uBAAyBjE,EAAa,YAAY,CACpE,KAAM,2BACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,EAAI,IAC5B,aAAc,EAClB,CAAC,EACDsM,EAAsB,oBAAsBjE,EAAa,YAAY,CACjE,KAAM,wBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,EAClB,CAAC,EACDsM,EAAsB,iBAAmBjE,EAAa,YAAY,CAC9D,KAAM,oBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,EAClB,CAAC,EACDsM,EAAsB,qBAAuBjE,EAAa,YAAY,CAClE,KAAM,yBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,EAClB,CAAC,EACDsM,EAAsB,wBAA0BjE,EAAa,YAAY,CACrE,KAAM,4BACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,EAClB,CAAC,EACDsM,EAAsB,UAAYjE,EAAa,YAAY,CACvD,KAAM,aACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,eAAiBjE,EAAa,YAAY,CAC5D,KAAM,kBACN,QAAUrI,GAAMA,EAAE,sBAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,EAClB,CAAC,EACDsM,EAAsB,iBAAmBjE,EAAa,YAAY,CAC9D,KAAM,qBACN,QAAUrI,GAAMA,EAAE,sBAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,IAAK,EAAG,EAAE,CAClD,CAAC,EACDoB,EAAsB,eAAiBjE,EAAa,YAAY,CAC5D,KAAM,kBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,EACjC,CAAC,EACDsM,EAAsB,iBAAmBjE,EAAa,YAAY,CAC9D,KAAM,qBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,WAAaA,GAAMsM,EAAsB,eACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,QAAUjE,EAAa,YAAY,CACrD,KAAM,UACN,QAAUrI,GAAMA,EAAE,sBAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,IAAK,EAAG,IAAK,CAAC,CACnD,CAAC,EACDoB,EAAsB,eAAiBjE,EAAa,YAAY,CAC5D,KAAM,kBACN,QAAUrI,GAAMA,EAAE,sBAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,CAC/C,CAAC,EACDoB,EAAsB,OAASjE,EAAa,YAAY,CACpD,KAAM,SACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAM,CACjB,CAAC,EACDsM,EAAsB,MAAQjE,EAAa,YAAY,CACnD,KAAM,QACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAM,CACjB,CAAC,EACDsM,EAAsB,YAAcjE,EAAa,YAAY,CACzD,KAAM,eACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,EAClB,CAAC,EACDsM,EAAsB,QAAUjE,EAAa,YAAY,CACrD,KAAM,UACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GACC0L,GAAa1L,CAAC,EACPA,EAAE,OAAS,IAAM,EAErBA,EAAE,OAAS,GAAK,GAE3B,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,IAAK,EAAG,EAAE,EAC9C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,iBAAkBA,EAAsB,QAAS,GAAI,SAAU,EAAK,CACtI,CAAC,EACDA,EAAsB,UAAYjE,EAAa,YAAY,CACvD,KAAM,aACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GACC0L,GAAa1L,CAAC,EACPA,EAAE,OAAS,GAAK,GAEpBA,EAAE,OAAS,GAAK,IAE3B,WAAaA,GAAMsM,EAAsB,QACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,iBAAmBjE,EAAa,YAAY,CAC9D,KAAM,oBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GACCyL,GAAWzL,CAAC,EACLmM,GAAcnM,EAAE,eAAgBA,CAAC,EAExC0L,GAAa1L,CAAC,EACPA,EAAE,OAAS,GAAK,GAEpBA,EAAE,OAAS,GAAK,GAE3B,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,iBAAkBA,EAAsB,QAAS,GAAI,SAAU,EAAK,CACtI,CAAC,EACDA,EAAsB,mBAAqBjE,EAAa,YAAY,CAChE,KAAM,uBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GACCyL,GAAWzL,CAAC,EACLqI,EAAa,eAAeiE,EAAsB,iBAAiB,KAAKtM,CAAC,EAAG,GAAG,EAEtF0L,GAAa1L,CAAC,EACPA,EAAE,OAAS,EAAI,IAEnBA,EAAE,OAAS,GAAK,GAE3B,WAAaA,GAAMsM,EAAsB,iBACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,eAAiBjE,EAAa,YAAY,CAC5D,KAAM,kBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,WAAaA,GAAMsM,EAAsB,eACzC,cAAe,IAAIpB,EAAc,EAAG,IAAK,EAAG,EAAE,CAClD,CAAC,EACDoB,EAAsB,UAAYjE,EAAa,YAAY,CACvD,KAAM,YACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,IAAK,EAAG,EAAE,EAC9C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,mBAAoBA,EAAsB,UAAW,GAAI,SAAU,EAAK,CAC1I,CAAC,EACDA,EAAsB,YAAcjE,EAAa,YAAY,CACzD,KAAM,eACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GACC0L,GAAa1L,CAAC,EACPA,EAAE,OAAS,GAAK,IAGhBA,EAAE,OAAS,GAAK,IAG/B,WAAaA,GAAMsM,EAAsB,UACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,mBAAqBjE,EAAa,YAAY,CAChE,KAAM,sBACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GAAM,CACT,MAAMuM,EAAcvM,EAAE,OAAS,GAAK,GACpC,GAAI0L,GAAa1L,CAAC,EACd,OAAOA,EAAE,OAAS,GAAK,GAE3B,GAAI,CAACyL,GAAWzL,CAAC,EACb,OAAOuM,EAEX,IAAIvD,EAAS2C,GAAwB3L,EAAE,iBAAiB,IAAKA,EAAE,iBAAiB,OAAQuM,EAAa,CAAAvM,EAAE,MAAqB,EAC5H,OAAAgJ,EAASmD,GAAcnM,EAAE,iBAAiB,OAAOgJ,CAAM,EAAGhJ,CAAC,EACpDgJ,CACV,EACD,aAAc,GACd,WAAahJ,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,mBAAoBA,EAAsB,UAAW,GAAI,SAAU,EAAK,CAC1I,CAAC,EACDA,EAAsB,qBAAuBjE,EAAa,YAAY,CAClE,KAAM,yBACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GACEyL,GAAWzL,CAAC,EAGVqI,EAAa,eAAeiE,EAAsB,mBAAmB,KAAKtM,CAAC,EAAG,GAAG,EAF7EA,EAAE,OAAS,GAAK,GAI/B,WAAaA,GAAMsM,EAAsB,mBACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,SAAWjE,EAAa,YAAY,CACtD,KAAM,WACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GACC0L,GAAa1L,CAAC,EACPA,EAAE,OAAS,GAAK,GAEpBA,EAAE,OAAS,GAAK,GAE3B,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,IAAK,EAAG,EAAE,EAC9C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,kBAAmBA,EAAsB,SAAU,GAAI,SAAU,EAAK,CACxI,CAAC,EACDA,EAAsB,WAAajE,EAAa,YAAY,CACxD,KAAM,cACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GACC0L,GAAa1L,CAAC,EACPA,EAAE,OAAS,GAAK,GAEpBA,EAAE,OAAS,GAAK,IAE3B,WAAaA,GAAMsM,EAAsB,SACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,kBAAoBjE,EAAa,YAAY,CAC/D,KAAM,qBACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GAAM,CACT,GAAI0L,GAAa1L,CAAC,EACd,OAAOA,EAAE,OAAS,GAAK,GAE3B,GAAI,CAACyL,GAAWzL,CAAC,EACb,OAAOA,EAAE,OAAS,GAAK,GAE3B,MAAMwM,EAAaL,GAAcnM,EAAE,gBAAgB,OAAOA,EAAE,eAAe,IAAI,EAAGA,CAAC,EAC7EyM,EAAczM,EAAE,gBAAgB,OAAOwM,CAAU,EACvD,OAAOxE,GAAgB,cAAcyE,CAAW,EAAE,IACrD,EACD,aAAc,GACd,WAAazM,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,kBAAmBA,EAAsB,SAAU,GAAI,SAAU,EAAK,CACxI,CAAC,EACDA,EAAsB,oBAAsBjE,EAAa,YAAY,CACjE,KAAM,wBACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GACC0L,GAAa1L,CAAC,EACPA,EAAE,OAAS,EAAI,IAErByL,GAAWzL,CAAC,EAGVqI,EAAa,eAAeiE,EAAsB,kBAAkB,KAAKtM,CAAC,EAAG,GAAG,EAF5EA,EAAE,OAAS,GAAK,GAI/B,WAAaA,GAAMsM,EAAsB,kBACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,MAAQjE,EAAa,YAAY,CACnD,KAAM,QACN,QAAUrI,GAAMA,EAAE,aAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,IAAK,EAAG,EAAE,EAC9C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,eAAgBA,EAAsB,MAAO,GAAI,SAAU,EAAK,CAClI,CAAC,EACDA,EAAsB,QAAUjE,EAAa,YAAY,CACrD,KAAM,WACN,QAAUrI,GAAMA,EAAE,aAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,IAC7B,WAAaA,GAAMsM,EAAsB,MACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,eAAiBjE,EAAa,YAAY,CAC5D,KAAM,kBACN,QAAUrI,GAAMA,EAAE,aAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,eAAgBA,EAAsB,MAAO,GAAI,SAAU,EAAK,CAClI,CAAC,EACDA,EAAsB,iBAAmBjE,EAAa,YAAY,CAC9D,KAAM,qBACN,QAAUrI,GAAMA,EAAE,aAClB,KAAOA,GAAMA,EAAE,OAAS,GAAK,GAC7B,WAAaA,GAAMsM,EAAsB,eACzC,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,aAAejE,EAAa,YAAY,CAC1D,KAAM,gBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,aAAcA,EAAsB,gBAAiB,GAAI,UAAW,EAAI,CAC1I,CAAC,EACDA,EAAsB,gBAAkBjE,EAAa,YAAY,CAC7D,KAAM,oBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,aAAcA,EAAsB,gBAAiB,GAAI,UAAW,EAAI,CAC1I,CAAC,EACDA,EAAsB,eAAiBjE,EAAa,YAAY,CAC5D,KAAM,mBACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,IAAQ,GACvC,WAAaA,GAAMsM,EAAsB,gBACzC,iBAAmBtM,GAAMsM,EAAsB,aAC/C,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,sBAAwBjE,EAAa,YAAY,CACnE,KAAM,2BACN,QAAUrI,GAAMA,EAAE,eAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,WAAaA,GAAMsM,EAAsB,gBACzC,iBAAmBtM,GAAMsM,EAAsB,aAC/C,cAAe,IAAIpB,EAAc,EAAG,IAAK,EAAG,EAAE,CAClD,CAAC,EACDoB,EAAsB,eAAiBjE,EAAa,YAAY,CAC5D,KAAM,kBACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,eAAgBA,EAAsB,kBAAmB,GAAI,UAAW,EAAI,CAC9I,CAAC,EACDA,EAAsB,kBAAoBjE,EAAa,YAAY,CAC/D,KAAM,sBACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,eAAgBA,EAAsB,kBAAmB,GAAI,UAAW,EAAI,CAC9I,CAAC,EACDA,EAAsB,iBAAmBjE,EAAa,YAAY,CAC9D,KAAM,qBACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GAAM,GACb,WAAaA,GAAMsM,EAAsB,kBACzC,iBAAmBtM,GAAMsM,EAAsB,eAC/C,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,wBAA0BjE,EAAa,YAAY,CACrE,KAAM,6BACN,QAAUrI,GAAMA,EAAE,iBAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,WAAaA,GAAMsM,EAAsB,kBACzC,iBAAmBtM,GAAMsM,EAAsB,eAC/C,cAAe,IAAIpB,EAAc,EAAG,IAAK,EAAG,EAAE,CAClD,CAAC,EACDoB,EAAsB,cAAgBjE,EAAa,YAAY,CAC3D,KAAM,iBACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,cAAeA,EAAsB,iBAAkB,GAAI,UAAW,EAAI,CAC5I,CAAC,EACDA,EAAsB,iBAAmBjE,EAAa,YAAY,CAC9D,KAAM,qBACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,aAAc,GACd,WAAaA,GAAMsM,EAAsB,eAAetM,CAAC,EACzD,cAAe,IAAIkL,EAAc,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAgBlL,GAAM,IAAIwL,GAAcc,EAAsB,cAAeA,EAAsB,iBAAkB,GAAI,UAAW,EAAI,CAC5I,CAAC,EACDA,EAAsB,gBAAkBjE,EAAa,YAAY,CAC7D,KAAM,oBACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,IAAQ,GACvC,WAAaA,GAAMsM,EAAsB,iBACzC,iBAAmBtM,GAAMsM,EAAsB,cAC/C,cAAe,IAAIpB,EAAc,IAAK,EAAG,GAAI,EAAE,CACnD,CAAC,EACDoB,EAAsB,uBAAyBjE,EAAa,YAAY,CACpE,KAAM,4BACN,QAAUrI,GAAMA,EAAE,gBAClB,KAAOA,GAAM0L,GAAa1L,CAAC,EAAI,GAAO,GACtC,WAAaA,GAAMsM,EAAsB,iBACzC,iBAAmBtM,GAAMsM,EAAsB,cAC/C,cAAe,IAAIpB,EAAc,EAAG,IAAK,EAAG,EAAE,CAClD,CAAC,ECjiBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAwBO,SAASwB,GAAY1Q,EAAM,CAC9B,MAAMJ,EAAI+Q,GAAuB3Q,CAAI,EAC/BF,EAAI8Q,GAAyB5Q,CAAI,EACjCf,EAAI4R,GAAwB7Q,CAAI,EAChC8Q,EAAW,CAAClR,EAAE,SAAS,EAAE,EAAGE,EAAE,SAAS,EAAE,EAAGb,EAAE,SAAS,EAAE,CAAC,EAEhE,SAAW,CAACiK,EAAG6H,CAAI,IAAKD,EAAS,QAAO,EAChCC,EAAK,SAAW,IAChBD,EAAS5H,CAAC,EAAI,IAAM6H,GAG5B,MAAO,IAAMD,EAAS,KAAK,EAAE,CACjC,CAOO,SAASE,GAAYC,EAAK,CAC7BA,EAAMA,EAAI,QAAQ,IAAK,EAAE,EACzB,MAAMC,EAAUD,EAAI,SAAW,EACzBE,EAAQF,EAAI,SAAW,EACvBG,EAAUH,EAAI,SAAW,EAC/B,GAAI,CAACC,GAAW,CAACC,GAAS,CAACC,EACvB,MAAM,IAAI,MAAM,kBAAoBH,CAAG,EAE3C,IAAIrR,EAAI,EACJE,EAAI,EACJb,EAAI,EACR,OAAIiS,GACAtR,EAAIyR,GAAYJ,EAAI,MAAM,EAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EACzCnR,EAAIuR,GAAYJ,EAAI,MAAM,EAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EACzChS,EAAIoS,GAAYJ,EAAI,MAAM,EAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAEpCE,GACLvR,EAAIyR,GAAYJ,EAAI,MAAM,EAAG,CAAC,CAAC,EAC/BnR,EAAIuR,GAAYJ,EAAI,MAAM,EAAG,CAAC,CAAC,EAC/BhS,EAAIoS,GAAYJ,EAAI,MAAM,EAAG,CAAC,CAAC,GAE1BG,IACLxR,EAAIyR,GAAYJ,EAAI,MAAM,EAAG,CAAC,CAAC,EAC/BnR,EAAIuR,GAAYJ,EAAI,MAAM,EAAG,CAAC,CAAC,EAC/BhS,EAAIoS,GAAYJ,EAAI,MAAM,EAAG,CAAC,CAAC,IAEzB,KAAO,IAAQrR,EAAI,MAAU,IAAQE,EAAI,MAAU,EAAMb,EAAI,OACnE,CACR,CACA,SAASoS,GAAYC,EAAO,CAExB,OAAO,SAASA,EAAO,EAAE,CAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBClBC,SAAUC,EAAQC,EAAS,CACuCC,EAAiB,QAAAD,EAAO,CAG3F,GAAGE,GAAO,UAAY,CA2BlB,QAzBIC,EAAU,SAAUvR,EAAG5B,EAAKC,EAAK,CACjC,OAAKD,IAAQ,SAASA,EAAI,GACrBC,IAAQ,SAASA,EAAI,GAEnB2B,EAAI5B,EAAMA,EAAM4B,EAAI3B,EAAMA,EAAM2B,CAC/C,EAEQwR,EAAUD,EAEVE,EAAa,SAAUC,EAAK,CAC5BA,EAAI,SAAW,GACfA,EAAI,WAAaA,EAAI,MAAM,CAAC,EAC5B,QAAS5I,EAAE,EAAGA,GAAG,EAAGA,IACZA,EAAI,IACA4I,EAAI5I,CAAC,EAAI,GAAK4I,EAAI5I,CAAC,EAAI,OAAO4I,EAAI,SAAW,IACjDA,EAAI5I,CAAC,EAAI0I,EAAQE,EAAI5I,CAAC,EAAG,EAAG,GAAG,GACxBA,IAAM,IACb4I,EAAI5I,CAAC,EAAI0I,EAAQE,EAAI5I,CAAC,EAAG,EAAG,CAAC,GAGrC,OAAO4I,CACf,EAGQC,EAAc,CAAA,EACTC,EAAM,EAAGC,EAAS,CAAC,UAAW,SAAU,SAAU,WAAY,QAAS,OAAQ,SAAU,YAAa,MAAM,EAAGD,EAAMC,EAAO,OAAQD,GAAO,EAAG,CACnJ,IAAIzF,EAAO0F,EAAOD,CAAG,EAErBD,EAAa,WAAaxF,EAAO,GAAG,EAAKA,EAAK,aACjD,CACD,IAAI2F,EAAS,SAASC,EAAK,CACvB,OAAOJ,EAAY,OAAO,UAAU,SAAS,KAAKI,CAAG,CAAC,GAAK,QACnE,EAEQC,EAASF,EAETG,EAAW,SAAU/F,EAAMgG,EAAU,CAIrC,OAHKA,IAAa,SAASA,EAAS,MAGhChG,EAAK,QAAU,EAAY,MAAM,UAAU,MAAM,KAAKA,CAAI,EAG7D8F,EAAO9F,EAAK,CAAC,CAAC,GAAK,UAAYgG,EAC3BA,EAAS,MAAM,EAAE,EACtB,OAAO,SAAUvP,EAAG,CAAE,OAAOuJ,EAAK,CAAC,EAAEvJ,CAAC,IAAM,OAAY,EACxD,IAAI,SAAUA,EAAG,CAAE,OAAOuJ,EAAK,CAAC,EAAEvJ,CAAC,CAAE,CAAE,EAIhCuJ,EAAK,CAAC,CACrB,EAEQiG,EAASL,EAETM,EAAS,SAAUlG,EAAM,CACzB,GAAIA,EAAK,OAAS,EAAK,OAAO,KAC9B,IAAImG,EAAInG,EAAK,OAAO,EACpB,OAAIiG,EAAOjG,EAAKmG,CAAC,CAAC,GAAK,SAAmBnG,EAAKmG,CAAC,EAAE,YAAa,EACxD,IACf,EAEQC,EAAO,KAAK,GAEZC,EAAQ,CACX,SAAUd,EACV,MAAOF,EACP,KAAMO,EACN,OAAQG,EACR,KAAMG,EACN,GAAIE,EACJ,MAAOA,EAAK,EACZ,QAASA,EAAK,EACd,QAASA,EAAO,IAChB,QAAS,IAAMA,CACpB,EAEQE,EAAU,CACb,OAAQ,CAAE,EACV,WAAY,CAAE,CACnB,EAEQC,GAASF,EAAM,KACfG,GAAaH,EAAM,SACnBI,EAASJ,EAAM,KACfK,GAASJ,EAETK,EAAU,UAAiB,CAE3B,QADI3G,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIC,EAAK,KACT,GAAIJ,EAAOzG,EAAK,CAAC,CAAC,IAAM,UACpBA,EAAK,CAAC,EAAE,aACRA,EAAK,CAAC,EAAE,cAAgB,KAAK,YAE7B,OAAOA,EAAK,CAAC,EAIjB,IAAI8G,EAAOP,GAAOvG,CAAI,EAClB+G,EAAa,GAEjB,GAAI,CAACD,EAAM,CACPC,EAAa,GACRL,GAAO,SACRA,GAAO,WAAaA,GAAO,WAAW,KAAK,SAAUrN,EAAE1G,EAAG,CAAE,OAAOA,EAAE,EAAI0G,EAAE,CAAI,CAAA,EAC/EqN,GAAO,OAAS,IAGpB,QAAS9J,EAAI,EAAGoK,EAAON,GAAO,WAAY9J,EAAIoK,EAAK,OAAQpK,GAAK,EAAG,CAC/D,IAAIqK,EAAMD,EAAKpK,CAAC,EAGhB,GADAkK,EAAOG,EAAI,KAAK,MAAMA,EAAKjH,CAAI,EAC3B8G,EAAQ,KACf,CACJ,CAED,GAAIJ,GAAO,OAAOI,CAAI,EAAG,CACrB,IAAItB,EAAMkB,GAAO,OAAOI,CAAI,EAAE,MAAM,KAAMC,EAAa/G,EAAOA,EAAK,MAAM,EAAE,EAAE,CAAC,EAC9E6G,EAAG,KAAOL,GAAWhB,CAAG,CACpC,KACY,OAAM,IAAI,MAAM,mBAAmBxF,CAAI,EAIvC6G,EAAG,KAAK,SAAW,GAAKA,EAAG,KAAK,KAAK,CAAC,CAClD,EAEIF,EAAQ,UAAU,SAAW,UAAqB,CAC9C,OAAIF,EAAO,KAAK,GAAG,GAAK,WAAqB,KAAK,IAAG,EAC7C,IAAO,KAAK,KAAK,KAAK,GAAG,EAAK,GAC9C,EAEI,IAAIS,EAAUP,EAEVQ,EAAW,UAAY,CAE1B,QADInH,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOO,EAAS,MAAO,CAAE,IAAI,EAAG,OAAQnH,CAAI,CAAG,EACxF,EAEImH,EAAS,MAAQD,EACjBC,EAAS,QAAU,QAEnB,IAAIC,EAAWD,EAEXE,GAAWhB,EAAM,OACjBiB,GAAQ,KAAK,IAEbC,GAAa,UAAY,CAEzB,QADIvH,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIY,EAAMH,GAASrH,EAAM,KAAK,EAC1B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACblU,EAAIA,EAAI,IACRE,EAAIA,EAAI,IACRb,EAAIA,EAAI,IACR,IAAI8D,EAAI,EAAI6Q,GAAMhU,EAAEgU,GAAM9T,EAAEb,CAAC,CAAC,EAC1ByD,EAAIK,EAAI,EAAI,GAAK,EAAEA,GAAK,EACxB7D,GAAK,EAAEU,EAAEmD,GAAKL,EACdqB,GAAK,EAAEjE,EAAEiD,GAAKL,EACdrC,GAAK,EAAEpB,EAAE8D,GAAKL,EAClB,MAAO,CAACxD,EAAE6E,EAAE1D,EAAE0C,CAAC,CACvB,EAEQgR,GAAaF,GAEbG,GAAWrB,EAAM,OAEjBsB,GAAW,UAAY,CAEvB,QADI3H,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC5G,EAAO0H,GAAS1H,EAAM,MAAM,EAC5B,IAAI,EAAIA,EAAK,CAAC,EACVvI,EAAIuI,EAAK,CAAC,EACVjM,EAAIiM,EAAK,CAAC,EACVvJ,EAAIuJ,EAAK,CAAC,EACVnG,EAAQmG,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,EACxC,OAAIvJ,IAAM,EAAY,CAAC,EAAE,EAAE,EAAEoD,CAAK,EAC3B,CACH,GAAK,EAAI,EAAI,KAAO,EAAE,IAAM,EAAEpD,GAC9BgB,GAAK,EAAI,EAAI,KAAO,EAAEA,IAAM,EAAEhB,GAC9B1C,GAAK,EAAI,EAAI,KAAO,EAAEA,IAAM,EAAE0C,GAC9BoD,CACZ,CACA,EAEQ+N,GAAaD,GAEbE,GAAWT,EACXU,GAAUZ,EACVa,GAAUzB,EACV0B,GAAW3B,EAAM,OACjB4B,GAAS5B,EAAM,KAEf6B,GAAWT,GAEfK,GAAQ,UAAU,KAAO,UAAW,CAChC,OAAOI,GAAS,KAAK,IAAI,CACjC,EAEIL,GAAS,KAAO,UAAY,CAExB,QADI7H,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOkB,GAAS,CAAE,IAAM,EAAC,OAAQ9H,EAAM,CAAC,MAAM,CAAC,CAAG,EAC9F,EAEI+H,GAAQ,OAAO,KAAOH,GAEtBG,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADI/H,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAOgI,GAAShI,EAAM,MAAM,EACxBiI,GAAOjI,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,MAAO,MAEd,CACT,CAAK,EAED,IAAImI,GAAW9B,EAAM,OACjB+B,GAAS/B,EAAM,KACfgC,GAAM,SAAUhP,EAAG,CAAE,OAAO,KAAK,MAAMA,EAAE,GAAG,EAAE,KAU9CiP,GAAY,UAAY,CAExB,QADItI,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAI2B,EAAOJ,GAASnI,EAAM,MAAM,EAC5B8G,EAAOsB,GAAOpI,CAAI,GAAK,MAC3B,OAAAuI,EAAK,CAAC,EAAIF,GAAIE,EAAK,CAAC,GAAK,CAAC,EAC1BA,EAAK,CAAC,EAAIF,GAAIE,EAAK,CAAC,EAAE,GAAG,EAAI,IAC7BA,EAAK,CAAC,EAAIF,GAAIE,EAAK,CAAC,EAAE,GAAG,EAAI,IACzBzB,IAAS,QAAWyB,EAAK,OAAS,GAAKA,EAAK,CAAC,EAAE,GAC/CA,EAAK,CAAC,EAAIA,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,EACtCzB,EAAO,QAEPyB,EAAK,OAAS,EAEVzB,EAAO,IAAOyB,EAAK,KAAK,GAAG,EAAK,GAChD,EAEQC,GAAYF,GAEZG,GAAWpC,EAAM,OAUjBqC,GAAY,UAAY,CAExB,QADI1I,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC5G,EAAOyI,GAASzI,EAAM,MAAM,EAC5B,IAAI1M,EAAI0M,EAAK,CAAC,EACVxM,EAAIwM,EAAK,CAAC,EACVrN,EAAIqN,EAAK,CAAC,EAEd1M,GAAK,IACLE,GAAK,IACLb,GAAK,IAEL,IAAIT,EAAM,KAAK,IAAIoB,EAAGE,EAAGb,CAAC,EACtBR,EAAM,KAAK,IAAImB,EAAGE,EAAGb,CAAC,EAEtBwT,GAAKhU,EAAMD,GAAO,EAClBwF,EAAGqC,EAeP,OAbI5H,IAAQD,GACRwF,EAAI,EACJqC,EAAI,OAAO,KAEXrC,EAAIyO,EAAI,IAAOhU,EAAMD,IAAQC,EAAMD,IAAQC,EAAMD,IAAQ,EAAIC,EAAMD,GAGnEoB,GAAKnB,EAAO4H,GAAKvG,EAAIb,IAAMR,EAAMD,GAC5BsB,GAAKrB,EAAO4H,EAAI,GAAKpH,EAAIW,IAAMnB,EAAMD,GACrCS,GAAKR,IAAO4H,EAAI,GAAKzG,EAAIE,IAAMrB,EAAMD,IAE9C6H,GAAK,GACDA,EAAI,IAAKA,GAAK,KACdiG,EAAK,OAAO,GAAKA,EAAK,CAAC,IAAI,OAAoB,CAACjG,EAAErC,EAAEyO,EAAEnG,EAAK,CAAC,CAAC,EAC1D,CAACjG,EAAErC,EAAEyO,CAAC,CACrB,EAEQwC,GAAYD,GAEZE,GAAWvC,EAAM,OACjBwC,GAASxC,EAAM,KACfyC,GAAUN,GACVO,GAAYJ,GACZK,GAAU,KAAK,MAUfC,GAAY,UAAY,CAExB,QADIjJ,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIsC,EAAON,GAAS5I,EAAM,MAAM,EAC5B8G,EAAO+B,GAAO7I,CAAI,GAAK,MAC3B,OAAI8G,EAAK,OAAO,EAAE,CAAC,GAAK,MACbgC,GAAQC,GAAUG,CAAI,EAAGpC,CAAI,GAExCoC,EAAK,CAAC,EAAIF,GAAQE,EAAK,CAAC,CAAC,EACzBA,EAAK,CAAC,EAAIF,GAAQE,EAAK,CAAC,CAAC,EACzBA,EAAK,CAAC,EAAIF,GAAQE,EAAK,CAAC,CAAC,GACrBpC,IAAS,QAAWoC,EAAK,OAAS,GAAKA,EAAK,CAAC,EAAE,KAC/CA,EAAK,CAAC,EAAIA,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,EACtCpC,EAAO,QAEHA,EAAO,IAAOoC,EAAK,MAAM,EAAEpC,IAAO,MAAM,EAAE,CAAC,EAAE,KAAK,GAAG,EAAK,IAC1E,EAEQqC,GAAYF,GAEZG,GAAW/C,EAAM,OACjBgD,GAAU,KAAK,MAEfC,GAAY,UAAY,CAIxB,QAHIC,EAEAvJ,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GACzC5G,EAAOoJ,GAASpJ,EAAM,KAAK,EAC3B,IAAIjG,EAAIiG,EAAK,CAAC,EACVtI,EAAIsI,EAAK,CAAC,EACVmG,EAAInG,EAAK,CAAC,EACV1M,EAAEE,EAAEb,EACR,GAAI+E,IAAM,EACNpE,EAAIE,EAAIb,EAAIwT,EAAE,QACX,CACH,IAAIqD,EAAK,CAAC,EAAE,EAAE,CAAC,EACX5W,EAAI,CAAC,EAAE,EAAE,CAAC,EACV6W,EAAKtD,EAAI,GAAMA,GAAK,EAAEzO,GAAKyO,EAAEzO,EAAEyO,EAAEzO,EACjCgS,EAAK,EAAIvD,EAAIsD,EACbE,EAAK5P,EAAI,IACbyP,EAAG,CAAC,EAAIG,EAAK,EAAE,EACfH,EAAG,CAAC,EAAIG,EACRH,EAAG,CAAC,EAAIG,EAAK,EAAE,EACf,QAAS/M,EAAE,EAAGA,EAAE,EAAGA,IACX4M,EAAG5M,CAAC,EAAI,IAAK4M,EAAG5M,CAAC,GAAK,GACtB4M,EAAG5M,CAAC,EAAI,IAAK4M,EAAG5M,CAAC,GAAK,GACtB,EAAI4M,EAAG5M,CAAC,EAAI,EACVhK,EAAEgK,CAAC,EAAI8M,GAAMD,EAAKC,GAAM,EAAIF,EAAG5M,CAAC,EAC7B,EAAI4M,EAAG5M,CAAC,EAAI,EACfhK,EAAEgK,CAAC,EAAI6M,EACJ,EAAID,EAAG5M,CAAC,EAAI,EACfhK,EAAEgK,CAAC,EAAI8M,GAAMD,EAAKC,IAAQ,EAAI,EAAKF,EAAG5M,CAAC,GAAK,EAE5ChK,EAAEgK,CAAC,EAAI8M,EAEhBH,EAAS,CAACF,GAAQzW,EAAE,CAAC,EAAE,GAAG,EAAEyW,GAAQzW,EAAE,CAAC,EAAE,GAAG,EAAEyW,GAAQzW,EAAE,CAAC,EAAE,GAAG,CAAC,EAAGU,EAAIiW,EAAO,CAAC,EAAG/V,EAAI+V,EAAO,CAAC,EAAG5W,EAAI4W,EAAO,CAAC,CAChH,CACD,OAAIvJ,EAAK,OAAS,EAEP,CAAC1M,EAAEE,EAAEb,EAAEqN,EAAK,CAAC,CAAC,EAElB,CAAC1M,EAAEE,EAAEb,EAAE,CAAC,CACvB,EAEQiX,GAAYN,GAEZO,GAAUD,GACVE,GAAUxD,EAEVyD,GAAS,kDACTC,GAAU,wEACVC,GAAa,mFACbC,GAAc,yGACdC,GAAS,kFACTC,GAAU,wGAEVC,GAAU,KAAK,MAEfC,GAAY,SAAUC,EAAK,CAC3BA,EAAMA,EAAI,YAAa,EAAC,KAAI,EAC5B,IAAI9S,EAEJ,GAAIqS,GAAQ,OAAO,MACf,GAAI,CACA,OAAOA,GAAQ,OAAO,MAAMS,CAAG,CAClC,MAAW,CAEX,CAIL,GAAK9S,EAAI8S,EAAI,MAAMR,EAAM,EAAI,CAEzB,QADIvE,EAAM/N,EAAE,MAAM,EAAE,CAAC,EACZ,EAAE,EAAG,EAAE,EAAG,IACf+N,EAAI,CAAC,EAAI,CAACA,EAAI,CAAC,EAEnB,OAAAA,EAAI,CAAC,EAAI,EACFA,CACV,CAGD,GAAK/N,EAAI8S,EAAI,MAAMP,EAAO,EAAI,CAE1B,QADIQ,EAAQ/S,EAAE,MAAM,EAAE,CAAC,EACdiO,EAAI,EAAGA,EAAI,EAAGA,IACnB8E,EAAM9E,CAAG,EAAI,CAAC8E,EAAM9E,CAAG,EAE3B,OAAO8E,CACV,CAGD,GAAK/S,EAAI8S,EAAI,MAAMN,EAAU,EAAI,CAE7B,QADIQ,EAAQhT,EAAE,MAAM,EAAE,CAAC,EACdiT,EAAI,EAAGA,EAAI,EAAGA,IACnBD,EAAMC,CAAG,EAAIL,GAAQI,EAAMC,CAAG,EAAI,IAAI,EAE1C,OAAAD,EAAM,CAAC,EAAI,EACJA,CACV,CAGD,GAAKhT,EAAI8S,EAAI,MAAML,EAAW,EAAI,CAE9B,QADIS,EAAQlT,EAAE,MAAM,EAAE,CAAC,EACdmT,EAAI,EAAGA,EAAI,EAAGA,IACnBD,EAAMC,CAAG,EAAIP,GAAQM,EAAMC,CAAG,EAAI,IAAI,EAE1C,OAAAD,EAAM,CAAC,EAAI,CAACA,EAAM,CAAC,EACZA,CACV,CAGD,GAAKlT,EAAI8S,EAAI,MAAMJ,EAAM,EAAI,CACzB,IAAIU,EAAMpT,EAAE,MAAM,EAAE,CAAC,EACrBoT,EAAI,CAAC,GAAK,IACVA,EAAI,CAAC,GAAK,IACV,IAAIC,EAAQjB,GAAQgB,CAAG,EACvB,OAAAC,EAAM,CAAC,EAAI,EACJA,CACV,CAGD,GAAKrT,EAAI8S,EAAI,MAAMH,EAAO,EAAI,CAC1B,IAAIW,EAAQtT,EAAE,MAAM,EAAE,CAAC,EACvBsT,EAAM,CAAC,GAAK,IACZA,EAAM,CAAC,GAAK,IACZ,IAAIC,EAAQnB,GAAQkB,CAAK,EACzB,OAAAC,EAAM,CAAC,EAAI,CAACvT,EAAE,CAAC,EACRuT,CACV,CACT,EAEIV,GAAU,KAAO,SAAU5S,EAAG,CAC1B,OAAOqS,GAAO,KAAKrS,CAAC,GAChBsS,GAAQ,KAAKtS,CAAC,GACduS,GAAW,KAAKvS,CAAC,GACjBwS,GAAY,KAAKxS,CAAC,GAClByS,GAAO,KAAKzS,CAAC,GACb0S,GAAQ,KAAK1S,CAAC,CAC1B,EAEI,IAAIuT,GAAYX,GAEZY,GAAW9D,EACX+D,GAAUjE,EACVkE,GAAU9E,EACV+E,GAAShF,EAAM,KAEfiF,GAAUnC,GACVoC,GAAUN,GAEdE,GAAQ,UAAU,IAAM,SAASrE,EAAM,CACnC,OAAOwE,GAAQ,KAAK,KAAMxE,CAAI,CACtC,EAEIoE,GAAS,IAAM,UAAY,CAEvB,QADIlL,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOuE,GAAS,CAAE,IAAM,EAAC,OAAQnL,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEIoL,GAAQ,OAAO,IAAMG,GAErBH,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,SAAUrR,EAAG,CAEf,QADIyR,EAAO,CAAA,EAAI5E,EAAM,UAAU,OAAS,EAChCA,KAAQ,GAAI4E,EAAM5E,CAAG,EAAK,UAAWA,EAAM,GAEnD,GAAI,CAAC4E,EAAK,QAAUH,GAAOtR,CAAC,IAAM,UAAYwR,GAAQ,KAAKxR,CAAC,EACxD,MAAO,KAEd,CACT,CAAK,EAED,IAAI0R,GAAUvE,EACVwE,GAAWtE,EACXuE,GAAUrF,EACVsF,GAAWvF,EAAM,OAErBsF,GAAQ,OAAO,GAAK,UAAY,CAE5B,QADI3L,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIpB,EAAMoG,GAAS5L,EAAM,MAAM,EAC/B,OAAAwF,EAAI,CAAC,GAAK,IACVA,EAAI,CAAC,GAAK,IACVA,EAAI,CAAC,GAAK,IACHA,CACf,EAEIkG,GAAS,GAAK,UAAY,CAEtB,QADI1L,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAO6E,GAAS,CAAE,IAAM,EAAC,OAAQzL,EAAM,CAAC,IAAI,CAAC,CAAG,EAC5F,EAEIyL,GAAQ,UAAU,GAAK,UAAW,CAC9B,IAAIjG,EAAM,KAAK,KACf,MAAO,CAACA,EAAI,CAAC,EAAE,IAAKA,EAAI,CAAC,EAAE,IAAKA,EAAI,CAAC,EAAE,IAAKA,EAAI,CAAC,CAAC,CAC1D,EAEI,IAAIqG,GAAWxF,EAAM,OAEjByF,GAAY,UAAY,CAExB,QADI9L,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIY,EAAMqE,GAAS7L,EAAM,KAAK,EAC1B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACTtV,EAAM,KAAK,IAAIoB,EAAGE,EAAGb,CAAC,EACtBR,EAAM,KAAK,IAAImB,EAAGE,EAAGb,CAAC,EACtB2M,EAAQnN,EAAMD,EACdU,EAAI0M,EAAQ,IAAM,IAClByM,EAAK7Z,GAAO,IAAMoN,GAAS,IAC3BvF,EACJ,OAAIuF,IAAU,EACVvF,EAAI,OAAO,KAEPzG,IAAMnB,IAAO4H,GAAKvG,EAAIb,GAAK2M,GAC3B9L,IAAMrB,IAAO4H,EAAI,GAAGpH,EAAIW,GAAKgM,GAC7B3M,IAAMR,IAAO4H,EAAI,GAAGzG,EAAIE,GAAK8L,GACjCvF,GAAK,GACDA,EAAI,IAAKA,GAAK,MAEf,CAACA,EAAGnH,EAAGmZ,CAAE,CACxB,EAEQC,GAAYF,GAEZG,GAAW5F,EAAM,OACjB6F,GAAU,KAAK,MAUfC,GAAU,UAAY,CAItB,QAHI5C,EAAQ6C,EAAUC,EAAUC,EAAUC,EAAUC,EAEhDxM,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GACzC5G,EAAOiM,GAASjM,EAAM,KAAK,EAC3B,IAAIjG,EAAIiG,EAAK,CAAC,EACVpN,EAAIoN,EAAK,CAAC,EACV+L,EAAK/L,EAAK,CAAC,EACX1M,EAAEE,EAAEb,EACRoZ,EAAKA,EAAK,IACV,IAAIU,EAAK7Z,EAAI,IACb,GAAIA,IAAM,EACNU,EAAIE,EAAIb,EAAIoZ,MACT,CACChS,IAAM,MAAOA,EAAI,GACjBA,EAAI,MAAOA,GAAK,KAChBA,EAAI,IAAKA,GAAK,KAClBA,GAAK,GACL,IAAI6C,EAAIsP,GAAQnS,CAAC,EACb3D,EAAI2D,EAAI6C,EACR8P,EAAIX,GAAM,EAAInZ,GACd4E,EAAIkV,EAAID,GAAM,EAAIrW,GAClBjB,GAAIuX,EAAID,EAAKrW,EACbuW,GAAID,EAAID,EACZ,OAAQ7P,EAAC,CACL,IAAK,GAAI2M,EAAS,CAACoD,GAAGxX,GAAGuX,CAAC,EAAGpZ,EAAIiW,EAAO,CAAC,EAAG/V,EAAI+V,EAAO,CAAC,EAAG5W,EAAI4W,EAAO,CAAC,EAAI,MAC3E,IAAK,GAAI6C,EAAW,CAAC5U,EAAGmV,GAAGD,CAAC,EAAGpZ,EAAI8Y,EAAS,CAAC,EAAG5Y,EAAI4Y,EAAS,CAAC,EAAGzZ,EAAIyZ,EAAS,CAAC,EAAI,MACnF,IAAK,GAAIC,EAAW,CAACK,EAAGC,GAAGxX,EAAC,EAAG7B,EAAI+Y,EAAS,CAAC,EAAG7Y,EAAI6Y,EAAS,CAAC,EAAG1Z,EAAI0Z,EAAS,CAAC,EAAI,MACnF,IAAK,GAAIC,EAAW,CAACI,EAAGlV,EAAGmV,EAAC,EAAGrZ,EAAIgZ,EAAS,CAAC,EAAG9Y,EAAI8Y,EAAS,CAAC,EAAG3Z,EAAI2Z,EAAS,CAAC,EAAI,MACnF,IAAK,GAAIC,EAAW,CAACpX,GAAGuX,EAAGC,EAAC,EAAGrZ,EAAIiZ,EAAS,CAAC,EAAG/Y,EAAI+Y,EAAS,CAAC,EAAG5Z,EAAI4Z,EAAS,CAAC,EAAI,MACnF,IAAK,GAAIC,EAAW,CAACG,GAAGD,EAAGlV,CAAC,EAAGlE,EAAIkZ,EAAS,CAAC,EAAGhZ,EAAIgZ,EAAS,CAAC,EAAG7Z,EAAI6Z,EAAS,CAAC,EAAI,KACtF,CACJ,CACD,MAAO,CAAClZ,EAAGE,EAAGb,EAAGqN,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,CAAC,CACtD,EAEQ4M,GAAYT,GAEZU,GAAWxG,EAAM,OACjByG,GAASzG,EAAM,KACf0G,GAAW3F,EACX4F,GAAU9F,EACV+F,GAAU3G,EAEV4G,GAAUlB,GAEdgB,GAAQ,UAAU,IAAM,UAAW,CAC/B,OAAOE,GAAQ,KAAK,IAAI,CAChC,EAEIH,GAAS,IAAM,UAAY,CAEvB,QADI/M,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOoG,GAAS,CAAE,IAAM,EAAC,OAAQhN,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEIiN,GAAQ,OAAO,IAAML,GAErBK,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADIjN,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAO6M,GAAS7M,EAAM,KAAK,EACvB8M,GAAO9M,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,MAAO,KAEd,CACT,CAAK,EAED,IAAImN,GAAW9G,EAAM,OACjB+G,GAAO/G,EAAM,KACbgH,GAAU,KAAK,MAEfC,GAAY,UAAY,CAExB,QADItN,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIY,EAAM2F,GAASnN,EAAM,MAAM,EAC3B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACTnO,EAAImO,EAAI,CAAC,EACTV,EAAOsG,GAAKpN,CAAI,GAAK,OACrB3G,IAAM,SAAaA,EAAI,GACvByN,IAAS,SACTA,EAAOzN,EAAI,EAAI,OAAS,OAE5B/F,EAAI+Z,GAAQ/Z,CAAC,EACbE,EAAI6Z,GAAQ7Z,CAAC,EACbb,EAAI0a,GAAQ1a,CAAC,EACb,IAAI2G,EAAIhG,GAAK,GAAKE,GAAK,EAAIb,EACvB4a,EAAM,SAAWjU,EAAE,SAAS,EAAE,EAClCiU,EAAMA,EAAI,OAAOA,EAAI,OAAS,CAAC,EAC/B,IAAIC,EAAM,IAAMH,GAAQhU,EAAI,GAAG,EAAE,SAAS,EAAE,EAE5C,OADAmU,EAAMA,EAAI,OAAOA,EAAI,OAAS,CAAC,EACvB1G,EAAK,YAAa,EAAA,CACtB,IAAK,OAAQ,MAAQ,IAAMyG,EAAMC,EACjC,IAAK,OAAQ,MAAQ,IAAMA,EAAMD,EACjC,QAAS,MAAQ,IAAMA,CAC1B,CACT,EAEQE,GAAYH,GAEZI,GAAS,sCACTC,GAAU,sCAEVC,GAAY,SAAUjJ,EAAK,CAC3B,GAAIA,EAAI,MAAM+I,EAAM,EAAG,EAEf/I,EAAI,SAAW,GAAKA,EAAI,SAAW,KACnCA,EAAMA,EAAI,OAAO,CAAC,GAGlBA,EAAI,SAAW,IACfA,EAAMA,EAAI,MAAM,EAAE,EAClBA,EAAMA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,GAElD,IAAIrL,EAAI,SAASqL,EAAK,EAAE,EACpBrR,EAAIgG,GAAK,GACT9F,EAAI8F,GAAK,EAAI,IACb3G,EAAI2G,EAAI,IACZ,MAAO,CAAChG,EAAEE,EAAEb,EAAE,CAAC,CAClB,CAGD,GAAIgS,EAAI,MAAMgJ,EAAO,EAAG,EAChBhJ,EAAI,SAAW,GAAKA,EAAI,SAAW,KAEnCA,EAAMA,EAAI,OAAO,CAAC,GAGlBA,EAAI,SAAW,IACfA,EAAMA,EAAI,MAAM,EAAE,EAClBA,EAAMA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,EAAEA,EAAI,CAAC,GAEhE,IAAIkJ,EAAM,SAASlJ,EAAK,EAAE,EACtBmJ,EAAMD,GAAO,GAAK,IAClBE,EAAMF,GAAO,GAAK,IAClBG,EAAMH,GAAO,EAAI,IACjBxU,EAAI,KAAK,OAAOwU,EAAM,KAAQ,IAAO,GAAG,EAAI,IAChD,MAAO,CAACC,EAAIC,EAAIC,EAAI3U,CAAC,CACxB,CAMD,MAAM,IAAI,MAAO,sBAAwBsL,EACjD,EAEQsJ,GAAYL,GAEZM,GAAW9G,EACX+G,GAAUjH,EACVkH,GAAS/H,EAAM,KACfgI,GAAU/H,EAEVgI,GAAYb,GAEhBU,GAAQ,UAAU,IAAM,SAASrH,EAAM,CACnC,OAAOwH,GAAU,KAAK,KAAMxH,CAAI,CACxC,EAEIoH,GAAS,IAAM,UAAY,CAEvB,QADIlO,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOuH,GAAS,CAAE,IAAM,EAAC,OAAQnO,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEIqO,GAAQ,OAAO,IAAMJ,GACrBI,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,SAAUtU,EAAG,CAEf,QADIyR,EAAO,CAAA,EAAI5E,EAAM,UAAU,OAAS,EAChCA,KAAQ,GAAI4E,EAAM5E,CAAG,EAAK,UAAWA,EAAM,GAEnD,GAAI,CAAC4E,EAAK,QAAU4C,GAAOrU,CAAC,IAAM,UAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQA,EAAE,MAAM,GAAK,EAC/E,MAAO,KAEd,CACT,CAAK,EAED,IAAIwU,GAAWlI,EAAM,OACjBmI,GAAUnI,EAAM,MAChBoI,GAAQ,KAAK,IACbC,GAAS,KAAK,KACdC,GAAO,KAAK,KAEZC,GAAY,UAAY,CAExB,QADI5O,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAMzC,IAAIY,EAAM+G,GAASvO,EAAM,KAAK,EAC1B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACblU,GAAK,IACLE,GAAK,IACLb,GAAK,IACL,IAAIoH,EACA8U,EAAOJ,GAAMnb,EAAEE,EAAEb,CAAC,EAClBiK,GAAKtJ,EAAEE,EAAEb,GAAK,EACd+E,EAAIkF,EAAI,EAAI,EAAIiS,EAAKjS,EAAI,EAC7B,OAAIlF,IAAM,EACNqC,EAAI,KAEJA,GAAMzG,EAAEE,GAAIF,EAAEX,IAAM,EACpBoH,GAAK2U,IAAQpb,EAAEE,IAAIF,EAAEE,IAAMF,EAAEX,IAAIa,EAAEb,EAAE,EACrCoH,EAAI4U,GAAK5U,CAAC,EACNpH,EAAIa,IACJuG,EAAIyU,GAAUzU,GAElBA,GAAKyU,IAEF,CAACzU,EAAE,IAAIrC,EAAEkF,CAAC,CACzB,EAEQkS,GAAYF,GAEZG,GAAW1I,EAAM,OACjB2I,GAAQ3I,EAAM,MACd4I,GAAU5I,EAAM,MAChB6I,GAAU7I,EAAM,QAChB8I,GAAQ,KAAK,IAObC,GAAU,UAAY,CAEtB,QADIpP,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAMzC5G,EAAO+O,GAAS/O,EAAM,KAAK,EAC3B,IAAIjG,EAAIiG,EAAK,CAAC,EACVtI,EAAIsI,EAAK,CAAC,EACVpD,EAAIoD,EAAK,CAAC,EACV1M,EAAEE,EAAE,EAER,OAAI,MAAMuG,CAAC,IAAKA,EAAI,GAChB,MAAMrC,CAAC,IAAKA,EAAI,GAEhBqC,EAAI,MAAOA,GAAK,KAChBA,EAAI,IAAKA,GAAK,KAClBA,GAAK,IACDA,EAAI,EAAE,GACN,GAAK,EAAErC,GAAG,EACVpE,GAAK,EAAEoE,EAAEyX,GAAMF,GAAQlV,CAAC,EAAEoV,GAAMD,GAAQD,GAAQlV,CAAC,GAAG,EACpDvG,EAAI,GAAK,EAAEF,IACJyG,EAAI,EAAE,GACbA,GAAK,EAAE,EACPzG,GAAK,EAAEoE,GAAG,EACVlE,GAAK,EAAEkE,EAAEyX,GAAMF,GAAQlV,CAAC,EAAEoV,GAAMD,GAAQD,GAAQlV,CAAC,GAAG,EACpD,EAAI,GAAKzG,EAAEE,KAEXuG,GAAK,EAAE,EACPvG,GAAK,EAAEkE,GAAG,EACV,GAAK,EAAEA,EAAEyX,GAAMF,GAAQlV,CAAC,EAAEoV,GAAMD,GAAQD,GAAQlV,CAAC,GAAG,EACpDzG,EAAI,GAAKE,EAAE,IAEfF,EAAI0b,GAAMpS,EAAEtJ,EAAE,CAAC,EACfE,EAAIwb,GAAMpS,EAAEpJ,EAAE,CAAC,EACf,EAAIwb,GAAMpS,EAAE,EAAE,CAAC,EACR,CAACtJ,EAAE,IAAKE,EAAE,IAAK,EAAE,IAAKwM,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,CAAC,CAClE,EAEQqP,GAAYD,GAEZE,GAAWjJ,EAAM,OACjBkJ,GAASlJ,EAAM,KACfmJ,GAAWpI,EACXqI,GAAUvI,EACVwI,GAAUpJ,EAEVqJ,GAAUb,GAEdW,GAAQ,UAAU,IAAM,UAAW,CAC/B,OAAOE,GAAQ,KAAK,IAAI,CAChC,EAEIH,GAAS,IAAM,UAAY,CAEvB,QADIxP,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAO6I,GAAS,CAAE,IAAM,EAAC,OAAQzP,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEI0P,GAAQ,OAAO,IAAML,GAErBK,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADI1P,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAOsP,GAAStP,EAAM,KAAK,EACvBuP,GAAOvP,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,MAAO,KAEd,CACT,CAAK,EAED,IAAI4P,GAAWvJ,EAAM,OACjBwJ,GAASxJ,EAAM,KACfyJ,GAAW1I,EACX2I,GAAU7I,EACV8I,GAAU1J,EAEV2J,GAAYtH,GAEhBoH,GAAQ,UAAU,IAAM,UAAW,CAC/B,OAAOE,GAAU,KAAK,IAAI,CAClC,EAEIH,GAAS,IAAM,UAAY,CAEvB,QADI9P,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOmJ,GAAS,CAAE,IAAM,EAAC,OAAQ/P,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEIgQ,GAAQ,OAAO,IAAMpG,GAErBoG,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADIhQ,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAO4P,GAAS5P,EAAM,KAAK,EACvB6P,GAAO7P,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,MAAO,KAEd,CACT,CAAK,EAED,IAAIkQ,GAAW7J,EAAM,OACjB8J,GAAQ,KAAK,IACbC,GAAQ,KAAK,IAQbC,GAAU,UAAY,CAEtB,QADIrQ,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC5G,EAAOkQ,GAASlQ,EAAM,KAAK,EAC3B,IAAI1M,EAAI0M,EAAK,CAAC,EACVxM,EAAIwM,EAAK,CAAC,EACVrN,EAAIqN,EAAK,CAAC,EACV6O,EAAOsB,GAAM7c,EAAGE,EAAGb,CAAC,EACpB2d,EAAOF,GAAM9c,EAAGE,EAAGb,CAAC,EACpB2M,EAAQgR,EAAOzB,EACf9U,EAAErC,EAAEiV,EACR,OAAAA,EAAI2D,EAAO,IACPA,IAAS,GACTvW,EAAI,OAAO,IACXrC,EAAI,IAEJA,EAAI4H,EAAQgR,EACRhd,IAAMgd,IAAQvW,GAAKvG,EAAIb,GAAK2M,GAC5B9L,IAAM8c,IAAQvW,EAAI,GAAGpH,EAAIW,GAAKgM,GAC9B3M,IAAM2d,IAAQvW,EAAI,GAAGzG,EAAIE,GAAK8L,GAClCvF,GAAK,GACDA,EAAI,IAAKA,GAAK,MAEf,CAACA,EAAGrC,EAAGiV,CAAC,CACvB,EAEQ4D,GAAYF,GAEZG,GAAWnK,EAAM,OACjBoK,GAAU,KAAK,MAEfC,GAAU,UAAY,CAItB,QAHInH,EAAQ6C,EAAUC,EAAUC,EAAUC,EAAUC,EAEhDxM,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GACzC5G,EAAOwQ,GAASxQ,EAAM,KAAK,EAC3B,IAAIjG,EAAIiG,EAAK,CAAC,EACVtI,EAAIsI,EAAK,CAAC,EACV2M,EAAI3M,EAAK,CAAC,EACV1M,EAAEE,EAAEb,EAER,GADAga,GAAK,IACDjV,IAAM,EACNpE,EAAIE,EAAIb,EAAIga,MACT,CACC5S,IAAM,MAAOA,EAAI,GACjBA,EAAI,MAAOA,GAAK,KAChBA,EAAI,IAAKA,GAAK,KAClBA,GAAK,GAEL,IAAI6C,EAAI6T,GAAQ1W,CAAC,EACb3D,EAAI2D,EAAI6C,EACR8P,EAAIC,GAAK,EAAIjV,GACbF,EAAImV,GAAK,EAAIjV,EAAItB,GACjBjB,EAAIwX,GAAK,EAAIjV,GAAK,EAAItB,IAE1B,OAAQwG,EAAC,CACL,IAAK,GAAI2M,EAAS,CAACoD,EAAGxX,EAAGuX,CAAC,EAAGpZ,EAAIiW,EAAO,CAAC,EAAG/V,EAAI+V,EAAO,CAAC,EAAG5W,EAAI4W,EAAO,CAAC,EAAI,MAC3E,IAAK,GAAI6C,EAAW,CAAC5U,EAAGmV,EAAGD,CAAC,EAAGpZ,EAAI8Y,EAAS,CAAC,EAAG5Y,EAAI4Y,EAAS,CAAC,EAAGzZ,EAAIyZ,EAAS,CAAC,EAAI,MACnF,IAAK,GAAIC,EAAW,CAACK,EAAGC,EAAGxX,CAAC,EAAG7B,EAAI+Y,EAAS,CAAC,EAAG7Y,EAAI6Y,EAAS,CAAC,EAAG1Z,EAAI0Z,EAAS,CAAC,EAAI,MACnF,IAAK,GAAIC,EAAW,CAACI,EAAGlV,EAAGmV,CAAC,EAAGrZ,EAAIgZ,EAAS,CAAC,EAAG9Y,EAAI8Y,EAAS,CAAC,EAAG3Z,EAAI2Z,EAAS,CAAC,EAAI,MACnF,IAAK,GAAIC,EAAW,CAACpX,EAAGuX,EAAGC,CAAC,EAAGrZ,EAAIiZ,EAAS,CAAC,EAAG/Y,EAAI+Y,EAAS,CAAC,EAAG5Z,EAAI4Z,EAAS,CAAC,EAAI,MACnF,IAAK,GAAIC,EAAW,CAACG,EAAGD,EAAGlV,CAAC,EAAGlE,EAAIkZ,EAAS,CAAC,EAAGhZ,EAAIgZ,EAAS,CAAC,EAAG7Z,EAAI6Z,EAAS,CAAC,EAAI,KACtF,CACJ,CACD,MAAO,CAAClZ,EAAEE,EAAEb,EAAEqN,EAAK,OAAS,EAAEA,EAAK,CAAC,EAAE,CAAC,CAC/C,EAEQ2Q,GAAYD,GAEZE,GAAWvK,EAAM,OACjBwK,GAASxK,EAAM,KACfyK,GAAW1J,EACX2J,GAAU7J,EACV8J,GAAU1K,EAEV2K,GAAUV,GAEdQ,GAAQ,UAAU,IAAM,UAAW,CAC/B,OAAOE,GAAQ,KAAK,IAAI,CAChC,EAEIH,GAAS,IAAM,UAAY,CAEvB,QADI9Q,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOmK,GAAS,CAAE,IAAM,EAAC,OAAQ/Q,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEIgR,GAAQ,OAAO,IAAML,GAErBK,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADIhR,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAO4Q,GAAS5Q,EAAM,KAAK,EACvB6Q,GAAO7Q,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,MAAO,KAEd,CACT,CAAK,EAED,IAAIkR,GAAe,CAEf,GAAI,GAGJ,GAAI,OACJ,GAAI,EACJ,GAAI,QAEJ,GAAI,WACJ,GAAI,WACJ,GAAI,UACJ,GAAI,UACZ,EAEQC,GAAkBD,GAClBE,GAAW/K,EAAM,OACjBgL,GAAQ,KAAK,IAEbC,GAAY,UAAY,CAExB,QADItR,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIY,EAAM4J,GAASpR,EAAM,KAAK,EAC1B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACT+J,EAAQC,GAAQle,EAAEE,EAAEb,CAAC,EACrBmB,EAAIyd,EAAM,CAAC,EACXxd,EAAIwd,EAAM,CAAC,EACXvd,EAAIud,EAAM,CAAC,EACXpL,EAAI,IAAMpS,EAAI,GAClB,MAAO,CAACoS,EAAI,EAAI,EAAIA,EAAG,KAAOrS,EAAIC,GAAI,KAAOA,EAAIC,EAAE,CAC3D,EAEQyd,GAAU,SAAUne,EAAG,CACvB,OAAKA,GAAK,MAAQ,OAAkBA,EAAI,MACjC+d,IAAO/d,EAAI,MAAS,MAAO,GAAG,CAC7C,EAEQoe,GAAU,SAAUvc,EAAG,CACvB,OAAIA,EAAIgc,GAAgB,GAAaE,GAAMlc,EAAG,EAAI,CAAC,EAC5CA,EAAIgc,GAAgB,GAAKA,GAAgB,EACxD,EAEQK,GAAU,SAAUle,EAAEE,EAAEb,EAAG,CAC3BW,EAAIme,GAAQne,CAAC,EACbE,EAAIie,GAAQje,CAAC,EACbb,EAAI8e,GAAQ9e,CAAC,EACb,IAAImB,EAAI4d,IAAS,SAAYpe,EAAI,SAAYE,EAAI,SAAYb,GAAKwe,GAAgB,EAAE,EAChFpd,EAAI2d,IAAS,SAAYpe,EAAI,SAAYE,EAAI,QAAYb,GAAKwe,GAAgB,EAAE,EAChFnd,EAAI0d,IAAS,SAAYpe,EAAI,QAAYE,EAAI,SAAYb,GAAKwe,GAAgB,EAAE,EACpF,MAAO,CAACrd,EAAEC,EAAEC,CAAC,CACrB,EAEQ2d,GAAYL,GAEZM,GAAkBV,GAClBW,GAAWxL,EAAM,OACjByL,GAAQ,KAAK,IAObC,GAAY,UAAY,CAExB,QADI/R,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC5G,EAAO6R,GAAS7R,EAAM,KAAK,EAC3B,IAAImG,EAAInG,EAAK,CAAC,EACV3G,EAAI2G,EAAK,CAAC,EACVrN,EAAIqN,EAAK,CAAC,EACVlM,EAAEC,EAAEC,EAAGV,EAAEE,EAAEwe,EAEf,OAAAje,GAAKoS,EAAI,IAAM,IACfrS,EAAI,MAAMuF,CAAC,EAAItF,EAAIA,EAAIsF,EAAI,IAC3BrF,EAAI,MAAMrB,CAAC,EAAIoB,EAAIA,EAAIpB,EAAI,IAE3BoB,EAAI6d,GAAgB,GAAKK,GAAQle,CAAC,EAClCD,EAAI8d,GAAgB,GAAKK,GAAQne,CAAC,EAClCE,EAAI4d,GAAgB,GAAKK,GAAQje,CAAC,EAElCV,EAAI4e,GAAQ,UAAYpe,EAAI,UAAYC,EAAI,SAAYC,CAAC,EACzDR,EAAI0e,GAAQ,SAAape,EAAI,UAAYC,EAAI,QAAYC,CAAC,EAC1Dge,EAAKE,GAAQ,SAAYpe,EAAI,SAAYC,EAAI,UAAYC,CAAC,EAEnD,CAACV,EAAEE,EAAEwe,EAAGhS,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,CAAC,CACpD,EAEQkS,GAAU,SAAU5e,EAAG,CACvB,MAAO,MAAOA,GAAK,OAAU,MAAQA,EAAI,MAAQwe,GAAMxe,EAAG,EAAI,GAAG,EAAI,KAC7E,EAEQ2e,GAAU,SAAU9c,EAAG,CACvB,OAAOA,EAAIyc,GAAgB,GAAKzc,EAAIA,EAAIA,EAAIyc,GAAgB,IAAMzc,EAAIyc,GAAgB,GAC9F,EAEQO,GAAYJ,GAEZK,GAAW/L,EAAM,OACjBgM,GAAShM,EAAM,KACfiM,GAAWlL,EACXmL,GAAUrL,EACVsL,GAAUlM,EAEVmM,GAAYd,GAEhBY,GAAQ,UAAU,IAAM,UAAW,CAC/B,OAAOE,GAAU,KAAK,IAAI,CAClC,EAEIH,GAAS,IAAM,UAAY,CAEvB,QADItS,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAO2L,GAAS,CAAE,IAAM,EAAC,OAAQvS,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEIwS,GAAQ,OAAO,IAAML,GAErBK,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADIxS,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAOoS,GAASpS,EAAM,KAAK,EACvBqS,GAAOrS,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,MAAO,KAEd,CACT,CAAK,EAED,IAAI0S,GAAWrM,EAAM,OACjBsM,GAAUtM,EAAM,QAChBuM,GAAS,KAAK,KACdC,GAAU,KAAK,MACfC,GAAU,KAAK,MAEfC,GAAY,UAAY,CAExB,QADI/S,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIY,EAAMkL,GAAS1S,EAAM,KAAK,EAC1BmG,EAAIqB,EAAI,CAAC,EACTnO,EAAImO,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACT5U,EAAIggB,GAAOvZ,EAAIA,EAAI1G,EAAIA,CAAC,EACxBoH,GAAK8Y,GAAQlgB,EAAG0G,CAAC,EAAIsZ,GAAU,KAAO,IAC1C,OAAIG,GAAQlgB,EAAE,GAAK,IAAM,IAAKmH,EAAI,OAAO,KAClC,CAACoM,EAAGvT,EAAGmH,CAAC,CACvB,EAEQiZ,GAAYD,GAEZE,GAAW5M,EAAM,OACjB6M,GAAUvB,GACVwB,GAAYH,GAEZI,GAAY,UAAY,CAExB,QADIpT,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIY,EAAMyL,GAASjT,EAAM,KAAK,EAC1B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACT+J,EAAQ2B,GAAQ5f,EAAEE,EAAEb,CAAC,EACrBwT,EAAIoL,EAAM,CAAC,EACXlY,EAAIkY,EAAM,CAAC,EACXS,EAAKT,EAAM,CAAC,EAChB,OAAO4B,GAAUhN,EAAE9M,EAAE2Y,CAAE,CAC/B,EAEQqB,GAAYD,GAEZE,GAAWjN,EAAM,OACjBkN,GAAUlN,EAAM,QAChBmN,GAAQ,KAAK,IACbC,GAAQ,KAAK,IAEbC,GAAY,UAAY,CAExB,QADI1T,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GASzC,IAAIY,EAAM8L,GAAStT,EAAM,KAAK,EAC1BmG,EAAIqB,EAAI,CAAC,EACT5U,EAAI4U,EAAI,CAAC,EACTzN,EAAIyN,EAAI,CAAC,EACb,OAAI,MAAMzN,CAAC,IAAKA,EAAI,GACpBA,EAAIA,EAAIwZ,GACD,CAACpN,EAAGsN,GAAM1Z,CAAC,EAAInH,EAAG4gB,GAAMzZ,CAAC,EAAInH,CAAC,CAC7C,EAEQ+gB,GAAYD,GAEZE,GAAWvN,EAAM,OACjBwN,GAAYF,GACZG,GAAU3B,GAEV4B,GAAY,UAAY,CAExB,QADI/T,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC5G,EAAO4T,GAAS5T,EAAM,KAAK,EAC3B,IAAImG,EAAInG,EAAK,CAAC,EACVpN,EAAIoN,EAAK,CAAC,EACV,EAAIA,EAAK,CAAC,EACVwH,EAAMqM,GAAW1N,EAAEvT,EAAE,CAAC,EACtBohB,EAAIxM,EAAI,CAAC,EACTnO,EAAImO,EAAI,CAAC,EACTwK,EAAKxK,EAAI,CAAC,EACV+J,EAAQuC,GAASE,EAAE3a,EAAE2Y,CAAE,EACvB1e,EAAIie,EAAM,CAAC,EACX/d,EAAI+d,EAAM,CAAC,EACX5e,EAAI4e,EAAM,CAAC,EACf,MAAO,CAACje,EAAGE,EAAGb,EAAGqN,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,CAAC,CACtD,EAEQiU,GAAYF,GAEZG,GAAW7N,EAAM,OACjB8N,GAAUF,GAEVG,GAAU,UAAY,CAEtB,QADIpU,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIyN,EAAMH,GAASlU,EAAM,KAAK,EAAE,QAAO,EACvC,OAAOmU,GAAQ,MAAM,OAAQE,CAAG,CACxC,EAEQC,GAAYF,GAEZG,GAAWlO,EAAM,OACjBmO,GAASnO,EAAM,KACfoO,GAAWrN,EACXsN,GAAUxN,EACVyN,GAAUrO,EAEVsO,GAAUvB,GAEdqB,GAAQ,UAAU,IAAM,UAAW,CAAE,OAAOE,GAAQ,KAAK,IAAI,GAC7DF,GAAQ,UAAU,IAAM,UAAW,CAAE,OAAOE,GAAQ,KAAK,IAAI,EAAE,QAAS,GAExEH,GAAS,IAAM,UAAY,CAEvB,QADIzU,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAO8N,GAAS,CAAE,IAAM,EAAC,OAAQ1U,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EACIyU,GAAS,IAAM,UAAY,CAEvB,QADIzU,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAO8N,GAAS,CAAE,IAAM,EAAC,OAAQ1U,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEI2U,GAAQ,OAAO,IAAMV,GACrBU,GAAQ,OAAO,IAAML,GAErB,CAAC,MAAM,KAAK,EAAE,QAAQ,SAAU7c,EAAG,CAAE,OAAOkd,GAAQ,WAAW,KAAK,CAChE,EAAG,EACH,KAAM,UAAY,CAEd,QADI3U,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAOuU,GAASvU,EAAMvI,CAAC,EACnB+c,GAAOxU,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,OAAOvI,CAEd,CACT,CAAK,CAAI,CAAA,EAQL,IAAIod,GAAW,CACX,UAAW,UACX,aAAc,UACd,KAAM,UACN,WAAY,UACZ,MAAO,UACP,MAAO,UACP,OAAQ,UACR,MAAO,UACP,eAAgB,UAChB,KAAM,UACN,WAAY,UACZ,MAAO,UACP,UAAW,UACX,UAAW,UACX,WAAY,UACZ,UAAW,UACX,MAAO,UACP,WAAY,UACZ,eAAgB,UAChB,SAAU,UACV,QAAS,UACT,KAAM,UACN,SAAU,UACV,SAAU,UACV,cAAe,UACf,SAAU,UACV,UAAW,UACX,SAAU,UACV,UAAW,UACX,YAAa,UACb,eAAgB,UAChB,WAAY,UACZ,WAAY,UACZ,QAAS,UACT,WAAY,UACZ,aAAc,UACd,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,WAAY,UACZ,SAAU,UACV,YAAa,UACb,QAAS,UACT,QAAS,UACT,WAAY,UACZ,UAAW,UACX,YAAa,UACb,YAAa,UACb,QAAS,UACT,UAAW,UACX,WAAY,UACZ,KAAM,UACN,UAAW,UACX,KAAM,UACN,MAAO,UACP,YAAa,UACb,KAAM,UACN,SAAU,UACV,QAAS,UACT,UAAW,UACX,OAAQ,UACR,MAAO,UACP,MAAO,UACP,WAAY,UACZ,SAAU,UACV,cAAe,UACf,UAAW,UACX,aAAc,UACd,UAAW,UACX,WAAY,UACZ,UAAW,UACX,eAAgB,UAChB,qBAAsB,UACtB,UAAW,UACX,WAAY,UACZ,UAAW,UACX,UAAW,UACX,YAAa,UACb,cAAe,UACf,aAAc,UACd,eAAgB,UAChB,eAAgB,UAChB,eAAgB,UAChB,YAAa,UACb,KAAM,UACN,UAAW,UACX,MAAO,UACP,QAAS,UACT,OAAQ,UACR,QAAS,UACT,QAAS,UACT,iBAAkB,UAClB,WAAY,UACZ,aAAc,UACd,aAAc,UACd,eAAgB,UAChB,gBAAiB,UACjB,kBAAmB,UACnB,gBAAiB,UACjB,gBAAiB,UACjB,aAAc,UACd,UAAW,UACX,UAAW,UACX,SAAU,UACV,YAAa,UACb,KAAM,UACN,QAAS,UACT,MAAO,UACP,UAAW,UACX,OAAQ,UACR,UAAW,UACX,OAAQ,UACR,cAAe,UACf,UAAW,UACX,cAAe,UACf,cAAe,UACf,WAAY,UACZ,UAAW,UACX,KAAM,UACN,KAAM,UACN,KAAM,UACN,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,cAAe,UACf,IAAK,UACL,UAAW,UACX,UAAW,UACX,YAAa,UACb,OAAQ,UACR,WAAY,UACZ,SAAU,UACV,SAAU,UACV,OAAQ,UACR,OAAQ,UACR,QAAS,UACT,UAAW,UACX,UAAW,UACX,UAAW,UACX,KAAM,UACN,YAAa,UACb,UAAW,UACX,IAAK,UACL,KAAM,UACN,QAAS,UACT,OAAQ,UACR,UAAW,UACX,OAAQ,UACR,MAAO,UACP,MAAO,UACP,WAAY,UACZ,OAAQ,UACR,YAAa,SACrB,EAEQC,GAAWD,GAEXE,GAAU7N,EACV8N,GAAU1O,EACV2O,GAAS5O,EAAM,KAEf6O,GAASJ,GACTK,GAAUlH,GACVmH,GAAU3H,GAEdsH,GAAQ,UAAU,KAAO,UAAW,CAEhC,QADIpQ,EAAMyQ,GAAQ,KAAK,KAAM,KAAK,EACzBxY,EAAI,EAAGoK,EAAO,OAAO,KAAKkO,EAAM,EAAGtY,EAAIoK,EAAK,OAAQpK,GAAK,EAAG,CACjE,IAAI/F,EAAImQ,EAAKpK,CAAC,EAEd,GAAIsY,GAAOre,CAAC,IAAM8N,EAAO,OAAO9N,EAAE,YAAW,CAChD,CACD,OAAO8N,CACf,EAEIqQ,GAAQ,OAAO,MAAQ,SAAU/U,EAAM,CAEnC,GADAA,EAAOA,EAAK,cACRiV,GAAOjV,CAAI,EAAK,OAAOkV,GAAQD,GAAOjV,CAAI,CAAC,EAC/C,MAAM,IAAI,MAAM,uBAAuBA,CAAI,CACnD,EAEI+U,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,SAAUjb,EAAG,CAEf,QADIyR,EAAO,CAAA,EAAI5E,EAAM,UAAU,OAAS,EAChCA,KAAQ,GAAI4E,EAAM5E,CAAG,EAAK,UAAWA,EAAM,GAEnD,GAAI,CAAC4E,EAAK,QAAUyJ,GAAOlb,CAAC,IAAM,UAAYmb,GAAOnb,EAAE,YAAW,CAAE,EAChE,MAAO,OAEd,CACT,CAAK,EAED,IAAIsb,GAAWhP,EAAM,OAEjBiP,GAAY,UAAY,CAExB,QADItV,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIY,EAAM6N,GAASrV,EAAM,KAAK,EAC1B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACb,OAAQlU,GAAK,KAAOE,GAAK,GAAKb,CACtC,EAEQ4iB,GAAYD,GAEZE,GAASnP,EAAM,KAEfoP,GAAU,SAAU7jB,EAAK,CACzB,GAAI4jB,GAAO5jB,CAAG,GAAK,UAAYA,GAAO,GAAKA,GAAO,SAAU,CACxD,IAAI0B,EAAI1B,GAAO,GACX4B,EAAK5B,GAAO,EAAK,IACjBe,EAAIf,EAAM,IACd,MAAO,CAAC0B,EAAEE,EAAEb,EAAE,CAAC,CAClB,CACD,MAAM,IAAI,MAAM,sBAAsBf,CAAG,CACjD,EAEQ8jB,GAAYD,GAEZE,GAAWvO,EACXwO,GAAU1O,EACV2O,GAAUvP,EACVwP,GAASzP,EAAM,KAEf0P,GAAUR,GAEdK,GAAQ,UAAU,IAAM,UAAW,CAC/B,OAAOG,GAAQ,KAAK,IAAI,CAChC,EAEIJ,GAAS,IAAM,UAAY,CAEvB,QADI3V,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOgP,GAAS,CAAE,IAAM,EAAC,OAAQ5V,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEI6V,GAAQ,OAAO,IAAMH,GAErBG,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADI7V,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,GAAI5G,EAAK,SAAW,GAAK8V,GAAO9V,EAAK,CAAC,CAAC,IAAM,UAAYA,EAAK,CAAC,GAAK,GAAKA,EAAK,CAAC,GAAK,SAChF,MAAO,KAEd,CACT,CAAK,EAED,IAAIgW,GAAW5O,EACX6O,GAAU/O,EACVgP,GAAU5P,EACV6P,GAAW9P,EAAM,OACjB+P,GAAS/P,EAAM,KACfgQ,GAAU,KAAK,MAEnBJ,GAAQ,UAAU,IAAM,SAAS5N,EAAK,CAGlC,OAFKA,IAAQ,SAASA,EAAI,IAEtBA,IAAQ,GAAgB,KAAK,KAAK,MAAM,EAAE,CAAC,EACxC,KAAK,KAAK,MAAM,EAAE,CAAC,EAAE,IAAIgO,EAAO,CAC/C,EAEIJ,GAAQ,UAAU,KAAO,SAAS5N,EAAK,CACnC,OAAKA,IAAQ,SAASA,EAAI,IAEnB,KAAK,KAAK,MAAM,EAAE,CAAC,EAAE,IAAI,SAAUsE,EAAE/P,EAAG,CAC3C,OAAOA,EAAE,EAAKyL,IAAQ,GAAQsE,EAAI0J,GAAQ1J,CAAC,EAAKA,CAC5D,CAAS,CACT,EAEIqJ,GAAS,IAAM,UAAY,CAEvB,QADIhW,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOqP,GAAS,CAAE,IAAM,EAAC,OAAQjW,EAAM,CAAC,KAAK,CAAC,CAAG,EAC7F,EAEIkW,GAAQ,OAAO,IAAM,UAAY,CAE7B,QADIlW,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIsC,EAAOiN,GAASnW,EAAM,MAAM,EAChC,OAAIkJ,EAAK,CAAC,IAAM,SAAaA,EAAK,CAAC,EAAI,GAChCA,CACf,EAEIgN,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADIlW,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAOmW,GAASnW,EAAM,MAAM,EACxBoW,GAAOpW,CAAI,IAAM,UAAYA,EAAK,SAAW,GAC7CA,EAAK,SAAW,GAAKoW,GAAOpW,EAAK,CAAC,CAAC,GAAK,UAAYA,EAAK,CAAC,GAAK,GAAKA,EAAK,CAAC,GAAK,GAC/E,MAAO,KAEd,CACT,CAAK,EAOD,IAAIsW,GAAQ,KAAK,IAEbC,GAAoB,SAAUC,EAAQ,CACtC,IAAIC,EAAOD,EAAS,IAChBljB,EAAEE,EAAEb,EACR,OAAI8jB,EAAO,IACPnjB,EAAI,IACJE,EAAIijB,EAAO,EAAI,EAAI,oBAAsB,oBAAuBjjB,EAAIijB,EAAK,GAAK,mBAAqBH,GAAM9iB,CAAC,EAC1Gb,EAAI8jB,EAAO,GAAK,EAAI,oBAAsB,mBAAsB9jB,EAAI8jB,EAAK,IAAM,mBAAqBH,GAAM3jB,CAAC,IAE3GW,EAAI,mBAAqB,kBAAqBA,EAAImjB,EAAK,IAAM,kBAAoBH,GAAMhjB,CAAC,EACxFE,EAAI,kBAAoB,oBAAuBA,EAAIijB,EAAK,IAAM,iBAAmBH,GAAM9iB,CAAC,EACxFb,EAAI,KAED,CAACW,EAAEE,EAAEb,EAAE,CAAC,CACvB,EAEQ+jB,GAAoBH,GAOpBI,GAAkBD,GAClBE,GAAWvQ,EAAM,OACjBwQ,GAAQ,KAAK,MAEbC,GAAoB,UAAY,CAEhC,QADI9W,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAQzC,QANIpB,EAAMoR,GAAS5W,EAAM,KAAK,EAC1B1M,EAAIkS,EAAI,CAAC,EAAG7S,EAAI6S,EAAI,CAAC,EACrBuR,EAAU,IACVC,EAAU,IACVC,EAAM,GACNR,EACGO,EAAUD,EAAUE,GAAK,CAC5BR,GAAQO,EAAUD,GAAW,GAC7B,IAAIvM,EAAQmM,GAAgBF,CAAI,EAC3BjM,EAAM,CAAC,EAAIA,EAAM,CAAC,GAAO7X,EAAIW,EAC9B0jB,EAAUP,EAEVM,EAAUN,CAEjB,CACD,OAAOI,GAAMJ,CAAI,CACzB,EAEQS,GAAoBJ,GAEpBK,GAAW/P,EACXgQ,GAAUlQ,EACVmQ,GAAU/Q,EAEVgR,GAAkBJ,GAEtBE,GAAQ,UAAU,KAClBA,GAAQ,UAAU,OAClBA,GAAQ,UAAU,YAAc,UAAW,CACvC,OAAOE,GAAgB,KAAK,IAAI,CACxC,EAEIH,GAAS,KACTA,GAAS,OACTA,GAAS,YAAc,UAAY,CAE/B,QADInX,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAOwQ,GAAS,CAAE,IAAM,EAAC,OAAQpX,EAAM,CAAC,MAAM,CAAC,CAAG,EAC9F,EAEIqX,GAAQ,OAAO,KACfA,GAAQ,OAAO,OACfA,GAAQ,OAAO,YAAcX,GAE7B,IAAIa,GAAWlR,EAAM,OACjBmR,GAAO,KAAK,KACZC,GAAQ,KAAK,IACbC,GAAS,KAAK,KAEdC,GAAc,UAAY,CAE1B,QADI3X,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAIzC,IAAIY,EAAM+P,GAASvX,EAAM,KAAK,EAC1B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACT+J,EAAQ,CAACqG,GAAStkB,EAAI,GAAG,EAAGskB,GAASpkB,EAAI,GAAG,EAAGokB,GAASjlB,EAAI,GAAG,CAAC,EAChEklB,EAAKtG,EAAM,CAAC,EACZuG,EAAKvG,EAAM,CAAC,EACZwG,EAAKxG,EAAM,CAAC,EACZpL,EAAIqR,GAAK,YAAeK,EAAK,YAAeC,EAAK,YAAeC,CAAE,EAClEtgB,EAAI+f,GAAK,YAAeK,EAAK,YAAeC,EAAK,YAAeC,CAAE,EAClErgB,EAAI8f,GAAK,YAAeK,EAAK,YAAeC,EAAK,YAAeC,CAAE,EAEtE,MAAO,CACH,YAAe5R,EAAI,WAAc1O,EAAI,YAAeC,EACpD,aAAeyO,EAAI,YAAc1O,EAAI,YAAeC,EACpD,YAAeyO,EAAI,YAAe1O,EAAI,WAAcC,CAChE,CACA,EAEQsgB,GAAcL,GAElB,SAASC,GAAShlB,EAAG,CACjB,IAAIqlB,EAAM,KAAK,IAAIrlB,CAAC,EACpB,OAAIqlB,EAAM,OACCrlB,EAAI,OAEP8kB,GAAO9kB,CAAC,GAAK,GAAK6kB,IAAOQ,EAAM,MAAS,MAAO,GAAG,CAC7D,CAED,IAAIC,GAAW7R,EAAM,OACjB8R,GAAQ,KAAK,IACbC,GAAO,KAAK,KAOZC,GAAc,UAAY,CAE1B,QADIrY,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC5G,EAAOkY,GAASlY,EAAM,KAAK,EAC3B,IAAIgU,EAAIhU,EAAK,CAAC,EACV3G,EAAI2G,EAAK,CAAC,EACVrN,EAAIqN,EAAK,CAAC,EAEVmG,EAAIgS,GAAMnE,EAAI,YAAe3a,EAAI,YAAe1G,EAAG,CAAC,EACpD8E,EAAI0gB,GAAMnE,EAAI,YAAe3a,EAAI,YAAe1G,EAAG,CAAC,EACpD+E,EAAIygB,GAAMnE,EAAI,YAAe3a,EAAI,YAAc1G,EAAG,CAAC,EAEvD,MAAO,CACH,IAAM2lB,GAAS,aAAgBnS,EAAI,aAAe1O,EAAI,YAAeC,CAAC,EACtE,IAAM4gB,GAAS,cAAgBnS,EAAI,aAAe1O,EAAI,YAAeC,CAAC,EACtE,IAAM4gB,GAAS,aAAgBnS,EAAI,YAAe1O,EAAI,YAAcC,CAAC,EACrEsI,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,CACxC,CACA,EAEQuY,GAAcF,GAElB,SAASC,GAAS1lB,EAAG,CACjB,IAAIqlB,EAAM,KAAK,IAAIrlB,CAAC,EACpB,OAAIqlB,EAAM,UACEG,GAAKxlB,CAAC,GAAK,IAAM,MAAQulB,GAAMF,EAAK,EAAI,GAAG,EAAI,MAEpDrlB,EAAI,KACd,CAED,IAAI4lB,GAAWnS,EAAM,OACjBoS,GAASpS,EAAM,KACfqS,GAAWtR,EACXuR,GAAUzR,EACV0R,GAAUtS,EAEVuS,GAAcb,GAElBW,GAAQ,UAAU,MAAQ,UAAY,CAClC,OAAOE,GAAY,KAAK,IAAI,CACpC,EAEIH,GAAS,MAAQ,UAAY,CAEzB,QADI1Y,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAO+R,GAAS,CAAE,IAAM,EAAC,OAAQ3Y,EAAM,CAAC,OAAO,CAAC,CAAG,EAC/F,EAEI4Y,GAAQ,OAAO,MAAQL,GAEvBK,GAAQ,WAAW,KAAK,CACpB,EAAG,EACH,KAAM,UAAY,CAEd,QADI5Y,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAOwY,GAASxY,EAAM,OAAO,EACzByY,GAAOzY,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,MAAO,OAEd,CACT,CAAK,EAED,IAAI8Y,GAAWzS,EAAM,OACjB0S,GAAYf,GACZgB,GAAUhG,GAEViG,GAAc,UAAY,CAE1B,QADIjZ,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,IAAIY,EAAMsR,GAAS9Y,EAAM,KAAK,EAC1B1M,EAAIkU,EAAI,CAAC,EACThU,EAAIgU,EAAI,CAAC,EACT7U,EAAI6U,EAAI,CAAC,EACT+J,EAAQwH,GAAUzlB,EAAGE,EAAGb,CAAC,EACzBwT,EAAIoL,EAAM,CAAC,EACXlY,EAAIkY,EAAM,CAAC,EACXS,EAAKT,EAAM,CAAC,EAChB,OAAOyH,GAAQ7S,EAAG9M,EAAG2Y,CAAE,CAC/B,EAEQkH,GAAcD,GAEdE,GAAW9S,EAAM,OACjB+S,GAAUzF,GACV0F,GAAYd,GAEZe,GAAY,UAAY,CAExB,QADItZ,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC5G,EAAOmZ,GAASnZ,EAAM,KAAK,EAC3B,IAAImG,EAAInG,EAAK,CAAC,EACVpN,EAAIoN,EAAK,CAAC,EACV,EAAIA,EAAK,CAAC,EACVwH,EAAM4R,GAAQjT,EAAGvT,EAAG,CAAC,EACrBohB,EAAIxM,EAAI,CAAC,EACTnO,EAAImO,EAAI,CAAC,EACTwK,EAAKxK,EAAI,CAAC,EACV+J,EAAQ8H,GAAUrF,EAAG3a,EAAG2Y,CAAE,EAC1B1e,EAAIie,EAAM,CAAC,EACX/d,EAAI+d,EAAM,CAAC,EACX5e,EAAI4e,EAAM,CAAC,EACf,MAAO,CAACje,EAAGE,EAAGb,EAAGqN,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAI,CAAC,CACtD,EAEQuZ,GAAcD,GAEdE,GAASnT,EAAM,OACfoT,GAASpT,EAAM,KACfqT,GAAWtS,EACXuS,GAAUzS,EACV9U,GAAQkU,EAERsT,GAAYV,GAEhBS,GAAQ,UAAU,MAAQ,UAAY,CAClC,OAAOC,GAAU,KAAK,IAAI,CAClC,EAEIF,GAAS,MAAQ,UAAY,CAEzB,QADI1Z,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,OAAO,IAAK,SAAS,UAAU,KAAK,MAAO+S,GAAS,CAAE,IAAM,EAAC,OAAQ3Z,EAAM,CAAC,OAAO,CAAC,CAAG,EAC/F,EAEI5N,GAAM,OAAO,MAAQmnB,GAErBnnB,GAAM,WAAW,KAAK,CAClB,EAAG,EACH,KAAM,UAAY,CAEd,QADI4N,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAGzC,GADA5G,EAAOwZ,GAAOxZ,EAAM,OAAO,EACvByZ,GAAOzZ,CAAI,IAAM,SAAWA,EAAK,SAAW,EAC5C,MAAO,OAEd,CACT,CAAK,EAED,IAAI6Z,GAAU3S,EACV4S,GAASzT,EAAM,KAEnBwT,GAAQ,UAAU,MAAQ,SAASxgB,EAAG0gB,EAAQ,CAG1C,OAFKA,IAAW,SAASA,EAAO,IAE5B1gB,IAAM,QAAaygB,GAAOzgB,CAAC,IAAM,SAC7B0gB,GACA,KAAK,KAAK,CAAC,EAAI1gB,EACR,MAEJ,IAAIwgB,GAAQ,CAAC,KAAK,KAAK,CAAC,EAAG,KAAK,KAAK,CAAC,EAAG,KAAK,KAAK,CAAC,EAAGxgB,CAAC,EAAG,KAAK,EAEpE,KAAK,KAAK,CAAC,CAC1B,EAEI,IAAI2gB,GAAU9S,EAEd8S,GAAQ,UAAU,QAAU,UAAW,CACnC,OAAO,KAAK,KAAK,UAAY,EACrC,EAEI,IAAIC,GAAU/S,EACVgT,GAAkBhJ,GAEtB+I,GAAQ,UAAU,OAAS,SAASjoB,EAAQ,CACtCA,IAAW,SAASA,EAAO,GAEhC,IAAI6U,EAAK,KACLsT,EAAMtT,EAAG,MACb,OAAAsT,EAAI,CAAC,GAAKD,GAAgB,GAAKloB,EACxB,IAAIioB,GAAQE,EAAK,KAAK,EAAE,MAAMtT,EAAG,QAAS,EAAI,CAC1D,EAEIoT,GAAQ,UAAU,SAAW,SAASjoB,EAAQ,CAC7C,OAAKA,IAAW,SAASA,EAAO,GAEzB,KAAK,OAAO,CAACA,CAAM,CAC/B,EAEIioB,GAAQ,UAAU,OAASA,GAAQ,UAAU,OAC7CA,GAAQ,UAAU,SAAWA,GAAQ,UAAU,SAE/C,IAAIG,GAAUlT,EAEdkT,GAAQ,UAAU,IAAM,SAAUC,EAAI,CAClC,IAAI7S,EAAM6S,EAAG,MAAM,GAAG,EAClBvT,EAAOU,EAAI,CAAC,EACZ8S,EAAU9S,EAAI,CAAC,EACf+S,EAAM,KAAKzT,CAAI,IACnB,GAAIwT,EAAS,CACT,IAAI1d,EAAIkK,EAAK,QAAQwT,CAAO,GAAKxT,EAAK,OAAO,EAAG,CAAC,IAAM,KAAO,EAAI,GAClE,GAAIlK,EAAI,GAAM,OAAO2d,EAAI3d,CAAC,EAC1B,MAAM,IAAI,MAAO,mBAAqB0d,EAAU,YAAcxT,CAAI,CAC9E,KACY,QAAOyT,CAEnB,EAEI,IAAIC,GAAUtT,EACVuT,GAASpU,EAAM,KACfqU,GAAQ,KAAK,IAEbC,GAAM,KACNC,GAAW,GAEfJ,GAAQ,UAAU,UAAY,SAASK,EAAK,CACxC,GAAIA,IAAQ,QAAaJ,GAAOI,CAAG,IAAM,SAAU,CAC/C,GAAIA,IAAQ,EAER,OAAO,IAAIL,GAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAG,KAAK,EAElD,GAAIK,IAAQ,EAER,OAAO,IAAIL,GAAQ,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAG,KAAK,EAGxD,IAAIM,EAAU,KAAK,YACfhU,EAAO,MACPiU,EAAWH,GAEXI,EAAO,SAAUnY,EAAKG,EAAM,CAC5B,IAAIxH,EAAMqH,EAAI,YAAYG,EAAM,GAAK8D,CAAI,EACrCmU,EAAKzf,EAAI,YACb,OAAI,KAAK,IAAIqf,EAAMI,CAAE,EAAIN,IAAO,CAACI,IAEtBvf,EAEJyf,EAAKJ,EAAMG,EAAKnY,EAAKrH,CAAG,EAAIwf,EAAKxf,EAAKwH,CAAI,CACjE,EAEgBwC,GAAOsV,EAAUD,EAAMG,EAAK,IAAIR,GAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAG,IAAI,EAAIQ,EAAK,KAAM,IAAIR,GAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,MACtG,OAAO,IAAIA,GAAQhV,EAAI,OAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CACjD,CACD,OAAO0V,GAAc,MAAM,OAAS,KAAK,KAAM,MAAM,EAAE,CAAC,CAAC,CACjE,EAGI,IAAIA,GAAgB,SAAU5nB,EAAEE,EAAEb,EAAG,CAGjC,OAAAW,EAAI6nB,GAAY7nB,CAAC,EACjBE,EAAI2nB,GAAY3nB,CAAC,EACjBb,EAAIwoB,GAAYxoB,CAAC,EACV,MAASW,EAAI,MAASE,EAAI,MAASb,CAClD,EAEQwoB,GAAc,SAAUrnB,EAAG,CAC3B,OAAAA,GAAK,IACEA,GAAK,OAAUA,EAAE,MAAQ4mB,IAAO5mB,EAAE,MAAO,MAAO,GAAG,CAClE,EAEQsnB,GAAiB,CAAA,EAEjBC,GAAUnU,EACVoU,GAASjV,EAAM,KACfkV,GAAeH,GAEfI,GAAQ,SAAUC,EAAMC,EAAMtlB,EAAG,CAC5BA,IAAM,SAASA,EAAE,IAEtB,QADIoV,EAAO,CAAA,EAAI5E,EAAM,UAAU,OAAS,EAChCA,KAAQ,GAAI4E,EAAM5E,CAAG,EAAK,UAAWA,EAAM,GAEnD,IAAIE,EAAO0E,EAAK,CAAC,GAAK,OAKtB,GAJI,CAAC+P,GAAazU,CAAI,GAAK,CAAC0E,EAAK,SAE7B1E,EAAO,OAAO,KAAKyU,EAAY,EAAE,CAAC,GAElC,CAACA,GAAazU,CAAI,EAClB,MAAM,IAAI,MAAO,sBAAwBA,EAAO,iBAAiB,EAErE,OAAIwU,GAAOG,CAAI,IAAM,WAAYA,EAAO,IAAIJ,GAAQI,CAAI,GACpDH,GAAOI,CAAI,IAAM,WAAYA,EAAO,IAAIL,GAAQK,CAAI,GACjDH,GAAazU,CAAI,EAAE2U,EAAMC,EAAMtlB,CAAC,EAClC,MAAMqlB,EAAK,MAAO,EAAGrlB,GAAKslB,EAAK,MAAK,EAAKD,EAAK,MAAO,EAAC,CACnE,EAEQE,GAAUzU,EACV0U,GAAMJ,GAEVG,GAAQ,UAAU,IAClBA,GAAQ,UAAU,YAAc,SAASD,EAAMtlB,EAAG,CAC5CA,IAAM,SAASA,EAAE,IAEtB,QADIoV,EAAO,CAAA,EAAI5E,EAAM,UAAU,OAAS,EAChCA,KAAQ,GAAI4E,EAAM5E,CAAG,EAAK,UAAWA,EAAM,GAEnD,OAAOgV,GAAI,MAAM,OAAQ,CAAE,KAAMF,EAAMtlB,CAAG,EAAC,OAAQoV,CAAM,CAAA,CAC9D,EAEI,IAAIqQ,GAAU3U,EAEd2U,GAAQ,UAAU,YAAc,SAAS9B,EAAQ,CAC3CA,IAAW,SAASA,EAAO,IAEhC,IAAIvU,EAAM,KAAK,KACXnM,EAAImM,EAAI,CAAC,EACb,OAAIuU,GACH,KAAK,KAAO,CAACvU,EAAI,CAAC,EAAEnM,EAAGmM,EAAI,CAAC,EAAEnM,EAAGmM,EAAI,CAAC,EAAEnM,EAAGA,CAAC,EACrC,MAEA,IAAIwiB,GAAQ,CAACrW,EAAI,CAAC,EAAEnM,EAAGmM,EAAI,CAAC,EAAEnM,EAAGmM,EAAI,CAAC,EAAEnM,EAAGA,CAAC,EAAG,KAAK,CAEjE,EAEI,IAAIyiB,GAAU5U,EACV6U,GAAgB7K,GAEpB4K,GAAQ,UAAU,SAAW,SAAS9pB,EAAQ,CACxCA,IAAW,SAASA,EAAO,GAEhC,IAAI6U,EAAK,KACLmV,EAAMnV,EAAG,MACb,OAAAmV,EAAI,CAAC,GAAKD,GAAc,GAAK/pB,EACzBgqB,EAAI,CAAC,EAAI,IAAKA,EAAI,CAAC,EAAI,GACpB,IAAIF,GAAQE,EAAK,KAAK,EAAE,MAAMnV,EAAG,QAAS,EAAI,CAC1D,EAEIiV,GAAQ,UAAU,WAAa,SAAS9pB,EAAQ,CAC/C,OAAKA,IAAW,SAASA,EAAO,GAEzB,KAAK,SAAS,CAACA,CAAM,CACjC,EAEI,IAAIiqB,GAAU/U,EACVgV,GAAS7V,EAAM,KAEnB4V,GAAQ,UAAU,IAAM,SAAU5B,EAAIrV,EAAO+U,EAAQ,CAC5CA,IAAW,SAASA,EAAS,IAElC,IAAIvS,EAAM6S,EAAG,MAAM,GAAG,EAClBvT,EAAOU,EAAI,CAAC,EACZ8S,EAAU9S,EAAI,CAAC,EACf+S,EAAM,KAAKzT,CAAI,IACnB,GAAIwT,EAAS,CACT,IAAI1d,EAAIkK,EAAK,QAAQwT,CAAO,GAAKxT,EAAK,OAAO,EAAG,CAAC,IAAM,KAAO,EAAI,GAClE,GAAIlK,EAAI,GAAI,CACR,GAAIsf,GAAOlX,CAAK,GAAK,SACjB,OAAQA,EAAM,OAAO,CAAC,EAAC,CACnB,IAAK,IACDuV,EAAI3d,CAAC,GAAK,CAACoI,EACX,MACJ,IAAK,IACDuV,EAAI3d,CAAC,GAAK,CAACoI,EACX,MACJ,IAAK,IACDuV,EAAI3d,CAAC,GAAK,CAACoI,EAAM,OAAO,CAAC,EACzB,MACJ,IAAK,IACDuV,EAAI3d,CAAC,GAAK,CAACoI,EAAM,OAAO,CAAC,EACzB,MACJ,QACIuV,EAAI3d,CAAC,EAAI,CAACoI,CACjB,SACMkX,GAAOlX,CAAK,IAAM,SACzBuV,EAAI3d,CAAC,EAAIoI,MAET,OAAM,IAAI,MAAM,iCAAiC,EAErD,IAAImX,EAAM,IAAIF,GAAQ1B,EAAKzT,CAAI,EAC/B,OAAIiT,GACA,KAAK,KAAOoC,EAAI,KACT,MAEJA,CACV,CACD,MAAM,IAAI,MAAO,mBAAqB7B,EAAU,YAAcxT,CAAI,CAC9E,KACY,QAAOyT,CAEnB,EAEI,IAAI6B,GAAUlV,EAEV1B,GAAM,SAAUiW,EAAMC,EAAMtlB,EAAG,CAC/B,IAAIimB,EAAOZ,EAAK,KACZa,EAAOZ,EAAK,KAChB,OAAO,IAAIU,GACPC,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAED,EAAK,CAAC,GAC7BA,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAED,EAAK,CAAC,GAC7BA,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAED,EAAK,CAAC,GAC7B,KACH,CACT,EAGIjB,GAAe,IAAM5V,GAErB,IAAI+W,GAAUrV,EACVsV,GAAS,KAAK,KACdC,GAAQ,KAAK,IAEbC,GAAO,SAAUjB,EAAMC,EAAMtlB,EAAG,CAChC,IAAIoR,EAAMiU,EAAK,KACXkB,EAAKnV,EAAI,CAAC,EACV1I,EAAK0I,EAAI,CAAC,EACVoV,EAAKpV,EAAI,CAAC,EACV+J,EAAQmK,EAAK,KACbmB,EAAKtL,EAAM,CAAC,EACZxS,EAAKwS,EAAM,CAAC,EACZuL,EAAKvL,EAAM,CAAC,EAChB,OAAO,IAAIgL,GACPC,GAAOC,GAAME,EAAG,CAAC,GAAK,EAAEvmB,GAAKqmB,GAAMI,EAAG,CAAC,EAAIzmB,CAAC,EAC5ComB,GAAOC,GAAM3d,EAAG,CAAC,GAAK,EAAE1I,GAAKqmB,GAAM1d,EAAG,CAAC,EAAI3I,CAAC,EAC5ComB,GAAOC,GAAMG,EAAG,CAAC,GAAK,EAAExmB,GAAKqmB,GAAMK,EAAG,CAAC,EAAI1mB,CAAC,EAC5C,KACH,CACT,EAGIglB,GAAe,KAAOsB,GAEtB,IAAIK,GAAU7V,EAEViT,GAAM,SAAUsB,EAAMC,EAAMtlB,EAAG,CAC/B,IAAIimB,EAAOZ,EAAK,MACZa,EAAOZ,EAAK,MAChB,OAAO,IAAIqB,GACPV,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAED,EAAK,CAAC,GAC7BA,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAED,EAAK,CAAC,GAC7BA,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAED,EAAK,CAAC,GAC7B,KACH,CACT,EAGIjB,GAAe,IAAMjB,GAErB,IAAI6C,GAAU9V,EAEV+V,GAAO,SAAUxB,EAAMC,EAAMtlB,EAAGqB,EAAG,CACnC,IAAI8R,EAAQ6C,EAERiQ,EAAMC,EACN7kB,IAAM,OACN4kB,EAAOZ,EAAK,MACZa,EAAOZ,EAAK,OACLjkB,IAAM,OACb4kB,EAAOZ,EAAK,MACZa,EAAOZ,EAAK,OACLjkB,IAAM,OACb4kB,EAAOZ,EAAK,MACZa,EAAOZ,EAAK,OACLjkB,IAAM,OACb4kB,EAAOZ,EAAK,MACZa,EAAOZ,EAAK,OACLjkB,IAAM,OAASA,IAAM,OAC5BA,EAAI,MACJ4kB,EAAOZ,EAAK,MACZa,EAAOZ,EAAK,OACLjkB,IAAM,UACb4kB,EAAOZ,EAAK,MAAO,EAAC,QAAO,EAC3Ba,EAAOZ,EAAK,MAAO,EAAC,QAAO,GAG/B,IAAIwB,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,GAC9B9lB,EAAE,OAAO,EAAG,CAAC,IAAM,KAAOA,IAAM,WAC/B8R,EAAS8S,EAAMa,EAAO3T,EAAO,CAAC,EAAG6T,EAAO7T,EAAO,CAAC,EAAG+T,EAAO/T,EAAO,CAAC,EAClE6C,EAAWkQ,EAAMa,EAAO/Q,EAAS,CAAC,EAAGiR,EAAOjR,EAAS,CAAC,EAAGmR,EAAOnR,EAAS,CAAC,GAG/E,IAAIoR,EAAKnmB,EAAKomB,EAAKC,EAEnB,MAAI,CAAC,MAAMR,CAAI,GAAK,CAAC,MAAMC,CAAI,GAEvBA,EAAOD,GAAQC,EAAOD,EAAO,IAC7BQ,EAAKP,GAAQD,EAAO,KACbC,EAAOD,GAAQA,EAAOC,EAAO,IACpCO,EAAKP,EAAO,IAAMD,EAElBQ,EAAKP,EAAOD,EAEhB7lB,EAAM6lB,EAAO9mB,EAAIsnB,GACT,MAAMR,CAAI,EAGV,MAAMC,CAAI,EAIlB9lB,EAAM,OAAO,KAHbA,EAAM8lB,GACDG,GAAQ,GAAKA,GAAQ,IAAM7lB,GAAK,QAAS+lB,EAAMH,KAJpDhmB,EAAM6lB,GACDK,GAAQ,GAAKA,GAAQ,IAAM9lB,GAAK,QAAS+lB,EAAMJ,IAQpDI,IAAQ,SAAaA,EAAMJ,EAAOhnB,GAAKinB,EAAOD,IAClDK,EAAMH,EAAOlnB,GAAKmnB,EAAOD,GAClB7lB,IAAM,QAAU,IAAIulB,GAAQ,CAACS,EAAKD,EAAKnmB,CAAG,EAAGI,CAAC,EAAI,IAAIulB,GAAQ,CAAC3lB,EAAKmmB,EAAKC,CAAG,EAAGhmB,CAAC,CAC/F,EAEQkmB,GAAoBV,GAEpBjB,GAAM,SAAUP,EAAMC,EAAMtlB,EAAG,CAClC,OAAOunB,GAAkBlC,EAAMC,EAAMtlB,EAAG,KAAK,CAClD,EAGIglB,GAAe,IAAMY,GACrBZ,GAAe,IAAMY,GAErB,IAAI4B,GAAU1W,EAEVtV,GAAM,SAAU6pB,EAAMC,EAAMtlB,EAAG,CAC/B,IAAIynB,EAAKpC,EAAK,MACVqC,EAAKpC,EAAK,MACd,OAAO,IAAIkC,GAAQC,EAAKznB,GAAK0nB,EAAGD,GAAK,KAAK,CAClD,EAGIzC,GAAe,IAAMxpB,GAErB,IAAImsB,GAAoBd,GAEpBe,GAAM,SAAUvC,EAAMC,EAAMtlB,EAAG,CAClC,OAAO2nB,GAAkBtC,EAAMC,EAAMtlB,EAAG,KAAK,CAClD,EAGIglB,GAAe,IAAM4C,GAErB,IAAIC,GAAoBhB,GAEpBiB,GAAM,SAAUzC,EAAMC,EAAMtlB,EAAG,CAClC,OAAO6nB,GAAkBxC,EAAMC,EAAMtlB,EAAG,KAAK,CAClD,EAGIglB,GAAe,IAAM8C,GAErB,IAAIC,GAAoBlB,GAEpBpS,GAAM,SAAU4Q,EAAMC,EAAMtlB,EAAG,CAClC,OAAO+nB,GAAkB1C,EAAMC,EAAMtlB,EAAG,KAAK,CAClD,EAGIglB,GAAe,IAAMvQ,GAErB,IAAIuT,GAAoBnB,GAEpBoB,GAAM,SAAU5C,EAAMC,EAAMtlB,EAAG,CAClC,OAAOgoB,GAAkB3C,EAAMC,EAAMtlB,EAAG,KAAK,CAClD,EAGIglB,GAAe,IAAMiD,GAErB,IAAIC,GAAUpX,EAEVqX,GAAQ,SAAU9C,EAAMC,EAAMtlB,EAAG,CACjC,IAAIimB,EAAOZ,EAAK,QACZa,EAAOZ,EAAK,QAChB,OAAO,IAAI4C,GACPjC,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAID,EAAK,CAAC,GAC/BA,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAID,EAAK,CAAC,GAC/BA,EAAK,CAAC,EAAIjmB,GAAKkmB,EAAK,CAAC,EAAID,EAAK,CAAC,GAC/B,OACZ,CACA,EAGIjB,GAAe,MAAQmD,GAEvB,IAAIC,GAAkBvB,GAElBwB,GAAQ,SAAUhD,EAAMC,EAAMtlB,EAAG,CACjC,OAAOooB,GAAgB/C,EAAMC,EAAMtlB,EAAG,OAAO,CACrD,EAGIglB,GAAe,MAAQqD,GAEvB,IAAIC,GAAUxX,EACVyX,GAAatY,EAAM,SACnBuY,GAAQ,KAAK,IACbC,GAAS,KAAK,KACdC,GAAO,KAAK,GACZC,GAAQ,KAAK,IACbC,GAAQ,KAAK,IACbC,GAAU,KAAK,MAEfC,GAAU,SAAUC,EAAQrY,EAAMsY,EAAS,CACtCtY,IAAS,SAASA,EAAK,QACvBsY,IAAY,SAASA,EAAQ,MAElC,IAAIjZ,EAAIgZ,EAAO,OACVC,IAAWA,EAAU,MAAM,KAAK,IAAI,MAAMjZ,CAAC,CAAC,EAAE,IAAI,UAAY,CAAE,MAAO,EAAE,CAAE,GAEhF,IAAI1P,EAAI0P,EAAIiZ,EAAQ,OAAO,SAAS/lB,EAAG1G,EAAG,CAAE,OAAO0G,EAAI1G,CAAI,CAAA,EAI3D,GAHAysB,EAAQ,QAAQ,SAAUC,EAAEziB,EAAG,CAAEwiB,EAAQxiB,CAAC,GAAKnG,CAAE,CAAE,EAEnD0oB,EAASA,EAAO,IAAI,SAAUvsB,EAAG,CAAE,OAAO,IAAI8rB,GAAQ9rB,CAAC,CAAE,CAAE,EACvDkU,IAAS,OACT,OAAOwY,GAAcH,EAAQC,CAAO,EAQxC,QANIG,EAAQJ,EAAO,QACfnpB,EAAMupB,EAAM,IAAIzY,CAAI,EACpB0Y,EAAM,CAAA,EACNC,EAAK,EACLC,EAAK,EAEA9iB,EAAE,EAAGA,EAAE5G,EAAI,OAAQ4G,IAGxB,GAFA5G,EAAI4G,CAAC,GAAK5G,EAAI4G,CAAC,GAAK,GAAKwiB,EAAQ,CAAC,EAClCI,EAAI,KAAK,MAAMxpB,EAAI4G,CAAC,CAAC,EAAI,EAAIwiB,EAAQ,CAAC,CAAC,EACnCtY,EAAK,OAAOlK,CAAC,IAAM,KAAO,CAAC,MAAM5G,EAAI4G,CAAC,CAAC,EAAG,CAC1C,IAAI+iB,EAAI3pB,EAAI4G,CAAC,EAAI,IAAMkiB,GACvBW,GAAMV,GAAMY,CAAC,EAAIP,EAAQ,CAAC,EAC1BM,GAAMV,GAAMW,CAAC,EAAIP,EAAQ,CAAC,CAC7B,CAGL,IAAIvlB,EAAQ0lB,EAAM,MAAO,EAAGH,EAAQ,CAAC,EACrCD,EAAO,QAAQ,SAAUvsB,EAAEgtB,EAAI,CAC3B,IAAIC,EAAOjtB,EAAE,IAAIkU,CAAI,EACrBjN,GAASjH,EAAE,MAAK,EAAKwsB,EAAQQ,EAAG,CAAC,EACjC,QAAShjB,EAAE,EAAGA,EAAE5G,EAAI,OAAQ4G,IACxB,GAAI,CAAC,MAAMijB,EAAKjjB,CAAC,CAAC,EAEd,GADA4iB,EAAI5iB,CAAC,GAAKwiB,EAAQQ,EAAG,CAAC,EAClB9Y,EAAK,OAAOlK,CAAC,IAAM,IAAK,CACxB,IAAI+iB,GAAIE,EAAKjjB,CAAC,EAAI,IAAMkiB,GACxBW,GAAMV,GAAMY,EAAC,EAAIP,EAAQQ,EAAG,CAAC,EAC7BF,GAAMV,GAAMW,EAAC,EAAIP,EAAQQ,EAAG,CAAC,CACrD,MACwB5pB,EAAI4G,CAAC,GAAKijB,EAAKjjB,CAAC,EAAIwiB,EAAQQ,EAAG,CAAC,CAIxD,CAAS,EAED,QAASla,EAAI,EAAGA,EAAI1P,EAAI,OAAQ0P,IAC5B,GAAIoB,EAAK,OAAOpB,CAAG,IAAM,IAAK,CAE1B,QADIoa,EAAMb,GAAQS,EAAKF,EAAI9Z,CAAG,EAAG+Z,EAAKD,EAAI9Z,CAAG,CAAC,EAAIoZ,GAAO,IAClDgB,EAAM,GAAKA,GAAO,IACzB,KAAOA,GAAO,KAAOA,GAAO,IAC5B9pB,EAAI0P,CAAG,EAAIoa,CAC3B,MACgB9pB,EAAI0P,CAAG,EAAI1P,EAAI0P,CAAG,EAAE8Z,EAAI9Z,CAAG,EAGnC,OAAA7L,GAASsM,EACD,IAAIuY,GAAQ1oB,EAAK8Q,CAAI,EAAG,MAAMjN,EAAQ,OAAU,EAAIA,EAAO,EAAI,CAC/E,EAGQylB,GAAgB,SAAUH,EAAQC,EAAS,CAG3C,QAFIjZ,EAAIgZ,EAAO,OACXnpB,EAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EACT4G,EAAE,EAAGA,EAAIuiB,EAAO,OAAQviB,IAAK,CAClC,IAAImjB,EAAMZ,EAAOviB,CAAC,EACd,EAAIwiB,EAAQxiB,CAAC,EAAIuJ,EACjBX,EAAMua,EAAI,KACd/pB,EAAI,CAAC,GAAK4oB,GAAMpZ,EAAI,CAAC,EAAE,CAAC,EAAI,EAC5BxP,EAAI,CAAC,GAAK4oB,GAAMpZ,EAAI,CAAC,EAAE,CAAC,EAAI,EAC5BxP,EAAI,CAAC,GAAK4oB,GAAMpZ,EAAI,CAAC,EAAE,CAAC,EAAI,EAC5BxP,EAAI,CAAC,GAAKwP,EAAI,CAAC,EAAI,CACtB,CACD,OAAAxP,EAAI,CAAC,EAAI6oB,GAAO7oB,EAAI,CAAC,CAAC,EACtBA,EAAI,CAAC,EAAI6oB,GAAO7oB,EAAI,CAAC,CAAC,EACtBA,EAAI,CAAC,EAAI6oB,GAAO7oB,EAAI,CAAC,CAAC,EAClBA,EAAI,CAAC,EAAI,WAAaA,EAAI,CAAC,EAAI,GAC5B,IAAI0oB,GAAQC,GAAW3oB,CAAG,CAAC,CAC1C,EAMQgqB,GAAW5Y,EACX6Y,GAAS5Z,EAAM,KAEf6Z,GAAQ,KAAK,IAEbC,GAAU,SAAShB,EAAQ,CAG3B,IAAIiB,EAAQ,MACRC,EAASL,GAAS,MAAM,EACxBM,EAAU,EAEVC,EAAU,CAAC,EAAG,CAAC,EACfC,EAAO,CAAA,EACPC,EAAW,CAAC,EAAE,CAAC,EACfC,EAAW,GACXC,EAAU,CAAA,EACVC,EAAO,GACPC,EAAO,EACPC,EAAO,EACPC,EAAoB,GACpBC,EAAc,CAAA,EACdC,EAAY,GACZC,EAAS,EAITC,EAAY,SAAShC,EAAQ,CAM7B,GALAA,EAASA,GAAU,CAAC,OAAQ,MAAM,EAC9BA,GAAUc,GAAOd,CAAM,IAAM,UAAYa,GAAS,QAClDA,GAAS,OAAOb,EAAO,YAAa,CAAA,IACpCA,EAASa,GAAS,OAAOb,EAAO,YAAa,CAAA,GAE7Cc,GAAOd,CAAM,IAAM,QAAS,CAExBA,EAAO,SAAW,IAClBA,EAAS,CAACA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,GAGlCA,EAASA,EAAO,MAAM,CAAC,EAEvB,QAASvsB,EAAE,EAAGA,EAAEusB,EAAO,OAAQvsB,IAC3BusB,EAAOvsB,CAAC,EAAIotB,GAASb,EAAOvsB,CAAC,CAAC,EAGlC4tB,EAAK,OAAS,EACd,QAASY,EAAI,EAAGA,EAAIjC,EAAO,OAAQiC,IAC/BZ,EAAK,KAAKY,GAAKjC,EAAO,OAAO,EAAE,CAEtC,CACD,OAAAkC,KACOV,EAAUxB,CAC7B,EAEYmC,EAAW,SAAStc,EAAO,CAC3B,GAAI0b,GAAY,KAAM,CAGlB,QAFI7pB,EAAI6pB,EAAS,OAAO,EACpB9jB,EAAI,EACDA,EAAI/F,GAAKmO,GAAS0b,EAAS9jB,CAAC,GAC/BA,IAEJ,OAAOA,EAAE,CACZ,CACD,MAAO,EACnB,EAEY2kB,EAAgB,SAAUpsB,EAAG,CAAE,OAAOA,CAAE,EACxCqsB,GAAa,SAAUrsB,EAAG,CAAE,OAAOA,CAAE,EAcrCssB,GAAW,SAASC,EAAKC,EAAW,CACpC,IAAI5B,EAAK5qB,EAET,GADIwsB,GAAa,OAAQA,EAAY,IACjC,MAAMD,CAAG,GAAMA,IAAQ,KAAS,OAAOrB,EAC3C,GAAKsB,EAYDxsB,EAAIusB,UAXAhB,GAAaA,EAAS,OAAS,EAAI,CAEnC,IAAI9tB,GAAI0uB,EAASI,CAAG,EACpBvsB,EAAIvC,IAAK8tB,EAAS,OAAO,EAC7C,MAA2BI,IAASD,EAEhB1rB,GAAKusB,EAAMb,IAASC,EAAOD,GAE3B1rB,EAAI,EAOZA,EAAIqsB,GAAWrsB,CAAC,EAEXwsB,IACDxsB,EAAIosB,EAAcpsB,CAAC,GAGnB+rB,IAAW,IAAK/rB,EAAI+qB,GAAM/qB,EAAG+rB,CAAM,GAEvC/rB,EAAIsrB,EAAS,CAAC,EAAKtrB,GAAK,EAAIsrB,EAAS,CAAC,EAAIA,EAAS,CAAC,GAEpDtrB,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAC,CAAC,EAE9B,IAAIsB,GAAI,KAAK,MAAMtB,EAAI,GAAK,EAE5B,GAAI8rB,GAAaD,EAAYvqB,EAAC,EAC1BspB,EAAMiB,EAAYvqB,EAAC,MAChB,CACH,GAAIwpB,GAAOU,CAAO,IAAM,QAEpB,QAAS/jB,EAAE,EAAGA,EAAE4jB,EAAK,OAAQ5jB,IAAK,CAC9B,IAAI8P,EAAI8T,EAAK5jB,CAAC,EACd,GAAIzH,GAAKuX,EAAG,CACRqT,EAAMY,EAAQ/jB,CAAC,EACf,KACH,CACD,GAAKzH,GAAKuX,GAAO9P,IAAO4jB,EAAK,OAAO,EAAK,CACrCT,EAAMY,EAAQ/jB,CAAC,EACf,KACH,CACD,GAAIzH,EAAIuX,GAAKvX,EAAIqrB,EAAK5jB,EAAE,CAAC,EAAG,CACxBzH,GAAKA,EAAEuX,IAAI8T,EAAK5jB,EAAE,CAAC,EAAE8P,GACrBqT,EAAMC,GAAS,YAAYW,EAAQ/jB,CAAC,EAAG+jB,EAAQ/jB,EAAE,CAAC,EAAGzH,EAAGirB,CAAK,EAC7D,KACH,CACJ,MACMH,GAAOU,CAAO,IAAM,aAC3BZ,EAAMY,EAAQxrB,CAAC,GAEf8rB,IAAaD,EAAYvqB,EAAC,EAAIspB,EACrC,CACD,OAAOA,CACnB,EAEYsB,GAAa,UAAY,CAAE,OAAOL,EAAc,CAAA,CAAG,EAEvDG,EAAUhC,CAAM,EAIhB,IAAI/oB,EAAI,SAASuW,EAAG,CAChB,IAAI/Z,EAAIotB,GAASyB,GAAS9U,CAAC,CAAC,EAC5B,OAAIiU,GAAQhuB,EAAEguB,CAAI,EAAYhuB,EAAEguB,CAAI,IAAqBhuB,CACrE,EAEQ,OAAAwD,EAAE,QAAU,SAASwrB,EAAS,CAC1B,GAAIA,GAAW,KAAM,CACjB,GAAI3B,GAAO2B,CAAO,IAAM,QACpBlB,EAAWkB,EACXrB,EAAU,CAACqB,EAAQ,CAAC,EAAGA,EAAQA,EAAQ,OAAO,CAAC,CAAC,MAC7C,CACH,IAAItrB,EAAI0pB,GAAS,QAAQO,CAAO,EAC5BqB,IAAY,EACZlB,EAAW,CAACpqB,EAAE,IAAKA,EAAE,GAAG,EAExBoqB,EAAWV,GAAS,OAAO1pB,EAAG,IAAKsrB,CAAO,CAEjD,CACD,OAAOxrB,CACV,CACD,OAAOsqB,CACnB,EAGQtqB,EAAE,OAAS,SAASyrB,EAAQ,CACxB,GAAI,CAAC,UAAU,OACX,OAAOtB,EAEXM,EAAOgB,EAAO,CAAC,EACff,EAAOe,EAAOA,EAAO,OAAO,CAAC,EAC7BrB,EAAO,CAAA,EACP,IAAI/pB,EAAIkqB,EAAQ,OAChB,GAAKkB,EAAO,SAAWprB,GAAOoqB,IAASC,EAEnC,QAASlkB,EAAI,EAAGoK,EAAO,MAAM,KAAK6a,CAAM,EAAGjlB,EAAIoK,EAAK,OAAQpK,GAAK,EAAG,CAChE,IAAItG,GAAI0Q,EAAKpK,CAAC,EAEhB4jB,EAAK,MAAMlqB,GAAEuqB,IAASC,EAAKD,EAAK,CACjC,KACE,CACH,QAASjuB,GAAE,EAAGA,GAAE6D,EAAG7D,KACf4tB,EAAK,KAAK5tB,IAAG6D,EAAE,EAAE,EAErB,GAAIorB,EAAO,OAAS,EAAG,CAEnB,IAAIC,EAAOD,EAAO,IAAI,SAAUvrB,EAAEsG,GAAG,CAAE,OAAOA,IAAGilB,EAAO,OAAO,EAAK,CAAA,EAChEE,EAAUF,EAAO,IAAI,SAAUvrB,EAAG,CAAE,OAAQA,EAAIuqB,IAASC,EAAOD,EAAQ,CAAA,EACvEkB,EAAQ,MAAM,SAAUL,EAAK9kB,GAAG,CAAE,OAAOklB,EAAKllB,EAAC,IAAM8kB,CAAM,CAAA,IAC5DF,GAAa,SAAUrsB,EAAG,CACtB,GAAIA,GAAK,GAAKA,GAAK,EAAK,OAAOA,EAE/B,QADIyH,GAAI,EACDzH,GAAK4sB,EAAQnlB,GAAE,CAAC,GAAKA,KAC5B,IAAIxG,IAAKjB,EAAI4sB,EAAQnlB,EAAC,IAAMmlB,EAAQnlB,GAAE,CAAC,EAAImlB,EAAQnlB,EAAC,GAChDuf,GAAM2F,EAAKllB,EAAC,EAAIxG,IAAK0rB,EAAKllB,GAAE,CAAC,EAAIklB,EAAKllB,EAAC,GAC3C,OAAOuf,EACnC,EAGiB,CACJ,CACD,OAAAoE,EAAU,CAACM,EAAMC,CAAI,EACd1qB,CACnB,EAEQA,EAAE,KAAO,SAAS4rB,EAAI,CAClB,OAAK,UAAU,QAGf5B,EAAQ4B,EACRX,KACOjrB,GAJIgqB,CAKvB,EAEQhqB,EAAE,MAAQ,SAAS+oB,EAAQqB,EAAM,CAC7B,OAAAW,EAAUhC,CAAM,EACT/oB,CACnB,EAEQA,EAAE,IAAM,SAAS6rB,EAAI,CACjB,OAAArB,EAAOqB,EACA7rB,CACnB,EAEQA,EAAE,OAAS,SAASsrB,EAAK,CACrB,OAAK,UAAU,QAGfpB,EAAUoB,EACHtrB,GAHIkqB,CAIvB,EAEQlqB,EAAE,iBAAmB,SAASuW,EAAG,CAC7B,OAAIA,GAAK,OAAQA,EAAI,IACrBoU,EAAoBpU,EACpB0U,KACIN,EACAQ,EAAgB,SAASpsB,EAAG,CAUxB,QATI+sB,EAAKT,GAAS,EAAG,EAAI,EAAE,IAAG,EAAG,CAAC,EAC9BU,EAAKV,GAAS,EAAG,EAAI,EAAE,IAAG,EAAG,CAAC,EAC9BW,GAAMF,EAAKC,EACXE,GAAWZ,GAAStsB,EAAG,EAAI,EAAE,IAAG,EAAG,CAAC,EACpCmtB,EAAUJ,GAAOC,EAAKD,GAAM/sB,EAC5BotB,EAASF,GAAWC,EACpBE,EAAK,EACL9Y,GAAK,EACLqR,GAAW,GACP,KAAK,IAAIwH,CAAM,EAAI,KAAUxH,MAAa,IAC7C,UAAW,CACR,OAAIqH,KAAOG,GAAU,IACjBA,EAAS,GACTC,EAAKrtB,EACLA,IAAMuU,GAAKvU,GAAK,KAEhBuU,GAAKvU,EACLA,IAAMqtB,EAAKrtB,GAAK,IAEpBktB,GAAWZ,GAAStsB,EAAG,EAAI,EAAE,IAAG,EAAG,CAAC,EAC7BotB,EAASF,GAAWC,CACvD,KAEoB,OAAOntB,CAC3B,EAEgBosB,EAAgB,SAAUpsB,EAAG,CAAE,OAAOA,CAAE,EAErCiB,CACnB,EAEQA,EAAE,QAAU,SAASsW,EAAG,CACpB,OAAIA,GAAK,MACDuT,GAAOvT,CAAC,IAAM,WACdA,EAAI,CAACA,EAAEA,CAAC,GAEZ+T,EAAW/T,EACJtW,GAEAqqB,CAEvB,EAEQrqB,EAAE,OAAS,SAASqsB,EAAWtG,EAAK,CAE5B,UAAU,OAAS,IAAKA,EAAM,OAClC,IAAIuG,EAAS,CAAA,EAEb,GAAI,UAAU,SAAW,EACrBA,EAAS/B,EAAQ,MAAM,CAAC,UAEjB8B,IAAc,EACrBC,EAAS,CAACtsB,EAAE,EAAG,CAAC,UAETqsB,EAAY,EAAG,CACtB,IAAIE,EAAKpC,EAAQ,CAAC,EACdqC,GAAKrC,EAAQ,CAAC,EAAIoC,EACtBD,EAASG,GAAU,EAAGJ,EAAW,EAAK,EAAE,IAAI,SAAU7lB,GAAG,CAAE,OAAOxG,EAAGusB,EAAO/lB,IAAG6lB,EAAU,GAAMG,EAAG,CAAG,CAAE,CAEvH,KAAmB,CACHzD,EAAS,CAAA,EACT,IAAI2D,GAAU,CAAA,EACd,GAAIpC,GAAaA,EAAS,OAAS,EAC/B,QAAS9jB,EAAI,EAAGmmB,EAAMrC,EAAS,OAAQsC,EAAM,GAAKD,EAAKC,EAAMpmB,EAAImmB,EAAMnmB,EAAImmB,EAAKC,EAAMpmB,IAAMA,IACxFkmB,GAAQ,MAAMpC,EAAS9jB,EAAE,CAAC,EAAE8jB,EAAS9jB,CAAC,GAAG,EAAG,OAGhDkmB,GAAUvC,EAEdmC,EAASI,GAAQ,IAAI,SAAUnW,GAAG,CAAE,OAAOvW,EAAEuW,EAAC,CAAE,CAAE,CACrD,CAED,OAAIqT,GAAS7D,CAAG,IACZuG,EAASA,EAAO,IAAI,SAAU9vB,GAAG,CAAE,OAAOA,GAAEupB,CAAG,GAAI,CAAE,GAElDuG,CACnB,EAEQtsB,EAAE,MAAQ,SAASxD,EAAG,CAClB,OAAIA,GAAK,MACLquB,EAAYruB,EACLwD,GAEA6qB,CAEvB,EAEQ7qB,EAAE,MAAQ,SAAS5C,EAAG,CAClB,OAAIA,GAAK,MACL0tB,EAAS1tB,EACF4C,GAEA8qB,CAEvB,EAEQ9qB,EAAE,OAAS,SAASE,EAAG,CACnB,OAAIA,GAAK,MACL+pB,EAASL,GAAS1pB,CAAC,EACZF,GAEAiqB,CAEvB,EAEejqB,CACf,EAEI,SAASysB,GAAU3mB,EAAMC,EAAO8mB,EAAW,CAIzC,QAHIC,EAAQ,CAAA,EACRC,EAAYjnB,EAAOC,EACnB4mB,EAAOE,EAAoBE,EAAYhnB,EAAQ,EAAIA,EAAQ,EAAxCA,EACdS,EAAIV,EAAMinB,EAAYvmB,EAAImmB,EAAMnmB,EAAImmB,EAAKI,EAAYvmB,IAAMA,IAClEsmB,EAAM,KAAKtmB,CAAC,EAEd,OAAOsmB,CACR,CAOD,IAAIE,GAAUlc,EAEVmc,GAAUlD,GAGVmD,GAAY,SAASzsB,EAAG,CAExB,QADIpE,EAAM,CAAC,EAAG,CAAC,EACNmK,EAAI,EAAGA,EAAI/F,EAAG+F,IAAK,CAExB,QADI2mB,EAAS,CAAC,CAAC,EACNhsB,EAAI,EAAGA,GAAK9E,EAAI,OAAQ8E,IAC7BgsB,EAAOhsB,CAAC,GAAK9E,EAAI8E,CAAC,GAAK,GAAK9E,EAAI8E,EAAI,CAAC,EAEzC9E,EAAM8wB,CACT,CACD,OAAO9wB,CACf,EAEQ+wB,GAAS,SAASrE,EAAQ,CAC1B,IAAI5V,EAAQ6C,EAAUC,EAElBoX,EAAGC,EAAMC,EAAMC,EAEnB,GADAzE,EAASA,EAAO,IAAI,SAAUvsB,EAAG,CAAE,OAAO,IAAIwwB,GAAQxwB,CAAC,CAAE,CAAE,EACvDusB,EAAO,SAAW,EAEjB5V,EAAS4V,EAAO,IAAI,SAAUvsB,EAAG,CAAE,OAAOA,EAAE,IAAG,CAAG,CAAE,EAAG8wB,EAAOna,EAAO,CAAC,EAAGoa,EAAOpa,EAAO,CAAC,EACzFka,EAAI,SAAStuB,EAAG,CACZ,IAAIglB,EAAO,CAAC,EAAG,EAAG,CAAC,EAAE,IAAI,SAAUvd,EAAG,CAAE,OAAO8mB,EAAK9mB,CAAC,EAAKzH,GAAKwuB,EAAK/mB,CAAC,EAAI8mB,EAAK9mB,CAAC,EAAM,CAAA,EACrF,OAAO,IAAIwmB,GAAQjJ,EAAK,KAAK,CAC7C,UACmBgF,EAAO,SAAW,EAExB/S,EAAW+S,EAAO,IAAI,SAAUvsB,EAAG,CAAE,OAAOA,EAAE,IAAK,EAAG,EAAG8wB,EAAOtX,EAAS,CAAC,EAAGuX,EAAOvX,EAAS,CAAC,EAAGwX,EAAOxX,EAAS,CAAC,EACnHqX,EAAI,SAAStuB,EAAG,CACZ,IAAIglB,EAAO,CAAC,EAAG,EAAG,CAAC,EAAE,IAAI,SAAUvd,EAAG,CAAE,OAAS,EAAEzH,IAAI,EAAEA,GAAKuuB,EAAK9mB,CAAC,EAAM,GAAK,EAAEzH,GAAKA,EAAIwuB,EAAK/mB,CAAC,EAAMzH,EAAIA,EAAIyuB,EAAKhnB,CAAC,CAAK,CAAA,EACzH,OAAO,IAAIwmB,GAAQjJ,EAAK,KAAK,CAC7C,UACmBgF,EAAO,SAAW,EAAG,CAE5B,IAAI0E,EACHxX,EAAW8S,EAAO,IAAI,SAAUvsB,EAAG,CAAE,OAAOA,EAAE,IAAG,CAAK,CAAA,EAAG8wB,EAAOrX,EAAS,CAAC,EAAGsX,EAAOtX,EAAS,CAAC,EAAGuX,EAAOvX,EAAS,CAAC,EAAGwX,EAAOxX,EAAS,CAAC,EACvIoX,EAAI,SAAStuB,EAAG,CACZ,IAAIglB,EAAO,CAAC,EAAG,EAAG,CAAC,EAAE,IAAI,SAAUvd,EAAG,CAAE,OAAS,EAAEzH,IAAI,EAAEA,IAAI,EAAEA,GAAKuuB,EAAK9mB,CAAC,EAAM,GAAK,EAAEzH,IAAM,EAAEA,GAAKA,EAAIwuB,EAAK/mB,CAAC,EAAM,GAAK,EAAEzH,GAAKA,EAAIA,EAAIyuB,EAAKhnB,CAAC,EAAMzH,EAAEA,EAAEA,EAAI0uB,EAAKjnB,CAAC,CAAK,CAAA,EACvK,OAAO,IAAIwmB,GAAQjJ,EAAK,KAAK,CAC7C,CACA,SAAmBgF,EAAO,QAAU,EAAG,CAE3B,IAAI2E,EAAMrxB,EAAKoE,EACfitB,EAAO3E,EAAO,IAAI,SAAUvsB,EAAG,CAAE,OAAOA,EAAE,KAAM,CAAE,EAClDiE,EAAIsoB,EAAO,OAAS,EACpB1sB,EAAM6wB,GAAUzsB,CAAC,EACjB4sB,EAAI,SAAUtuB,EAAG,CACb,IAAImE,EAAI,EAAInE,EACRglB,EAAO,CAAC,EAAG,EAAG,CAAC,EAAE,IAAI,SAAUvd,EAAG,CAAE,OAAOknB,EAAK,OAAO,SAAUC,EAAKC,EAAIzsB,EAAG,CAAE,OAAQwsB,EAAMtxB,EAAI8E,CAAC,EAAI,KAAK,IAAK+B,EAAIzC,EAAIU,CAAI,EAAG,KAAK,IAAKpC,EAAGoC,CAAG,EAAGysB,EAAGpnB,CAAC,CAAK,EAAE,CAAC,CAAI,CAAA,EACtK,OAAO,IAAIwmB,GAAQjJ,EAAK,KAAK,CAC7C,CACA,KACY,OAAM,IAAI,WAAW,iDAAiD,EAE1E,OAAOsJ,CACf,EAEQQ,GAAW,SAAU9E,EAAQ,CAC7B,IAAI/oB,EAAIotB,GAAOrE,CAAM,EACrB,OAAA/oB,EAAE,MAAQ,UAAY,CAAE,OAAOitB,GAAQjtB,CAAC,GACjCA,CACf,EAOQ8tB,GAAW9c,EAEX+c,GAAQ,SAAUC,EAAQC,EAAKvd,EAAM,CACrC,GAAI,CAACqd,GAAMrd,CAAI,EACX,MAAM,IAAI,MAAM,sBAAwBA,CAAI,EAEhD,OAAOqd,GAAMrd,CAAI,EAAEsd,EAAQC,CAAG,CACtC,EAEQC,GAAU,SAAUluB,EAAG,CAAE,OAAO,SAAUguB,EAAOC,EAAK,CAClD,IAAIE,EAAKL,GAASG,CAAG,EAAE,IAAG,EACtBxG,EAAKqG,GAASE,CAAM,EAAE,IAAG,EAC7B,OAAOF,GAAS,IAAI9tB,EAAEmuB,EAAI1G,CAAE,CAAC,CAChC,GAED2G,GAAO,SAAUpuB,EAAG,CAAE,OAAO,SAAUmuB,EAAI1G,EAAI,CAC3C,IAAI1B,EAAM,CAAA,EACV,OAAAA,EAAI,CAAC,EAAI/lB,EAAEmuB,EAAG,CAAC,EAAG1G,EAAG,CAAC,CAAC,EACvB1B,EAAI,CAAC,EAAI/lB,EAAEmuB,EAAG,CAAC,EAAG1G,EAAG,CAAC,CAAC,EACvB1B,EAAI,CAAC,EAAI/lB,EAAEmuB,EAAG,CAAC,EAAG1G,EAAG,CAAC,CAAC,EAChB1B,CACV,GAEDrZ,GAAS,SAAUzJ,EAAG,CAAE,OAAOA,CAAE,EACjCorB,GAAW,SAAUprB,EAAE1G,EAAG,CAAE,OAAO0G,EAAI1G,EAAI,KAC3C+xB,GAAS,SAAUrrB,EAAE1G,EAAG,CAAE,OAAO0G,EAAI1G,EAAIA,EAAI0G,GAC7CsrB,GAAU,SAAUtrB,EAAE1G,EAAG,CAAE,OAAO0G,EAAI1G,EAAI0G,EAAI1G,GAC9CiyB,GAAS,SAAUvrB,EAAE1G,EAAG,CAAE,MAAO,MAAO,GAAK,EAAE0G,EAAE,MAAQ,EAAE1G,EAAE,OAC7DkyB,GAAU,SAAUxrB,EAAE1G,EAAG,CAAE,OAAOA,EAAI,IAAM,EAAI0G,EAAI1G,EAAI,IAAM,KAAO,EAAI,GAAK,EAAI0G,EAAI,MAAU,EAAI1G,EAAI,OACxGmyB,GAAO,SAAUzrB,EAAE1G,EAAG,CAAE,MAAO,MAAO,GAAK,EAAIA,EAAI,MAAQ0G,EAAE,KAAM,EACnE0rB,GAAQ,SAAU1rB,EAAE1G,EAAG,CACvB,OAAI0G,IAAM,IAAc,KACxBA,EAAI,KAAO1G,EAAI,MAAQ,EAAI0G,EAAI,KACxBA,EAAI,IAAM,IAAMA,EAC/B,EAKI8qB,GAAM,OAASG,GAAQE,GAAK1hB,EAAM,CAAC,EACnCqhB,GAAM,SAAWG,GAAQE,GAAKC,EAAQ,CAAC,EACvCN,GAAM,OAASG,GAAQE,GAAKI,EAAM,CAAC,EACnCT,GAAM,QAAUG,GAAQE,GAAKK,EAAO,CAAC,EACrCV,GAAM,OAASG,GAAQE,GAAKE,EAAM,CAAC,EACnCP,GAAM,QAAUG,GAAQE,GAAKG,EAAO,CAAC,EACrCR,GAAM,MAAQG,GAAQE,GAAKO,EAAK,CAAC,EACjCZ,GAAM,KAAOG,GAAQE,GAAKM,EAAI,CAAC,EAgf/B,QA7eIE,GAAUb,GAMVc,GAAS5e,EAAM,KACf6e,GAAW7e,EAAM,SACjB8e,GAAQ9e,EAAM,MACd+e,GAAQ,KAAK,IACbC,GAAQ,KAAK,IACbC,GAAQ,KAAK,IACbC,GAAWne,EAEXoe,GAAY,SAAS1zB,EAAO2zB,EAAWpuB,EAAK+C,EAAOsrB,EAAW,CACzD5zB,IAAU,SAASA,EAAM,KACzB2zB,IAAc,SAASA,EAAU,MACjCpuB,IAAQ,SAASA,EAAI,GACrB+C,IAAU,SAASA,EAAM,GACzBsrB,IAAc,SAASA,EAAU,CAAC,EAAE,CAAC,GAE1C,IAAIhI,EAAK,EAAGiI,EACRV,GAAOS,CAAS,IAAM,QACtBC,EAAKD,EAAU,CAAC,EAAIA,EAAU,CAAC,GAE/BC,EAAK,EACLD,EAAY,CAACA,EAAWA,CAAS,GAGrC,IAAItvB,EAAI,SAASwvB,EAAO,CACpB,IAAIvsB,EAAI8rB,KAAWrzB,EAAM,KAAK,IAAQ2zB,EAAYG,GAC9Czf,EAAIif,GAAMM,EAAU,CAAC,EAAKC,EAAKC,EAAQxrB,CAAK,EAC5CL,EAAI2jB,IAAO,EAAIrmB,EAAI,CAAC,EAAKuuB,EAAQlI,EAAMrmB,EACvCwuB,EAAO9rB,EAAIoM,GAAK,EAAEA,GAAM,EACxB2f,EAAQR,GAAMjsB,CAAC,EACf0sB,EAAQV,GAAMhsB,CAAC,EACf/F,EAAI6S,EAAK0f,GAAQ,QAAWC,EAAU,QAASC,GAC/CvyB,EAAI2S,EAAK0f,GAAQ,QAAWC,EAAU,OAASC,GAC/CpzB,EAAIwT,EAAK0f,GAAO,QAAWC,GAC/B,OAAOP,GAASL,GAAS,CAAC5xB,EAAE,IAAIE,EAAE,IAAIb,EAAE,IAAI,CAAC,CAAC,CAAC,CAC3D,EAEQ,OAAAyD,EAAE,MAAQ,SAASsB,EAAG,CAClB,OAAKA,GAAK,KAAgB5F,GAC1BA,EAAQ4F,EACDtB,EACnB,EAEQA,EAAE,UAAY,SAAS9C,EAAG,CACtB,OAAKA,GAAK,KAAgBmyB,GAC1BA,EAAYnyB,EACL8C,EACnB,EAEQA,EAAE,MAAQ,SAAS5C,EAAG,CAClB,OAAKA,GAAK,KAAgB4G,GAC1BA,EAAQ5G,EACD4C,EACnB,EAEQA,EAAE,IAAM,SAAS2D,EAAG,CAChB,OAAKA,GAAK,KAAgB1C,GAC1BA,EAAM0C,EACFkrB,GAAO5tB,CAAG,IAAM,SAChBqmB,EAAKrmB,EAAI,CAAC,EAAIA,EAAI,CAAC,EACfqmB,IAAO,IAAKrmB,EAAMA,EAAI,CAAC,IAE3BqmB,EAAK,EAEFtnB,EACnB,EAEQA,EAAE,UAAY,SAAS2D,EAAG,CACtB,OAAKA,GAAK,KAAgB2rB,GACtBT,GAAOlrB,CAAC,IAAM,SACd2rB,EAAY3rB,EACZ4rB,EAAK5rB,EAAE,CAAC,EAAIA,EAAE,CAAC,IAEf2rB,EAAY,CAAC3rB,EAAEA,CAAC,EAChB4rB,EAAK,GAEFvvB,EACnB,EAEQA,EAAE,MAAQ,UAAY,CAAE,OAAOmvB,GAAS,MAAMnvB,CAAC,GAE/CA,EAAE,IAAIiB,CAAG,EAEFjB,CACf,EAEQ4vB,GAAU9e,EACV+e,GAAS,mBAETC,GAAU,KAAK,MACfC,GAAS,KAAK,OAEdC,GAAW,UAAY,CAEvB,QADIC,EAAO,IACFzpB,EAAE,EAAGA,EAAE,EAAGA,IACfypB,GAAQJ,GAAO,OAAOC,GAAQC,GAAQ,EAAG,EAAE,CAAC,EAEhD,OAAO,IAAIH,GAAQK,EAAM,KAAK,CACtC,EAEQC,GAAO1gB,EACP2gB,GAAM,KAAK,IACXC,GAAQ,KAAK,IACbC,GAAQ,KAAK,MACbC,GAAQ,KAAK,IAGbC,GAAU,SAAUC,EAAMC,EAAK,CAC1BA,IAAQ,SAASA,EAAI,MAE1B,IAAIvzB,EAAI,CACJ,IAAK,OAAO,UACZ,IAAK,OAAO,UAAU,GACtB,IAAK,EACL,OAAQ,CAAE,EACV,MAAO,CACnB,EACQ,OAAIgzB,GAAKM,CAAI,IAAM,WACfA,EAAO,OAAO,OAAOA,CAAI,GAE7BA,EAAK,QAAQ,SAAUlF,EAAK,CACpBmF,GAAOP,GAAK5E,CAAG,IAAM,WAAYA,EAAMA,EAAImF,CAAG,GACzBnF,GAAQ,MAAQ,CAAC,MAAMA,CAAG,IAC/CpuB,EAAE,OAAO,KAAKouB,CAAG,EACjBpuB,EAAE,KAAOouB,EACLA,EAAMpuB,EAAE,MAAOA,EAAE,IAAMouB,GACvBA,EAAMpuB,EAAE,MAAOA,EAAE,IAAMouB,GAC3BpuB,EAAE,OAAS,EAE3B,CAAS,EAEDA,EAAE,OAAS,CAACA,EAAE,IAAKA,EAAE,GAAG,EAExBA,EAAE,OAAS,SAAUwT,EAAMlV,EAAK,CAAE,OAAOk1B,GAAOxzB,EAAGwT,EAAMlV,CAAG,CAAE,EAEvD0B,CACf,EAGQwzB,GAAS,SAAUF,EAAM9f,EAAMlV,EAAK,CAC/BkV,IAAS,SAASA,EAAK,SACvBlV,IAAQ,SAASA,EAAI,GAEtB00B,GAAKM,CAAI,GAAK,UACdA,EAAOD,GAAQC,CAAI,GAEvB,IAAI10B,EAAM00B,EAAK,IACXz0B,EAAMy0B,EAAK,IACXG,EAASH,EAAK,OAAO,KAAK,SAAUvtB,GAAE1G,GAAG,CAAE,OAAO0G,GAAE1G,EAAI,CAAA,EAE5D,GAAIf,IAAQ,EAAK,MAAO,CAACM,EAAIC,CAAG,EAEhC,IAAI20B,EAAS,CAAA,EAOb,GALIhgB,EAAK,OAAO,EAAE,CAAC,IAAM,MACrBggB,EAAO,KAAK50B,CAAG,EACf40B,EAAO,KAAK30B,CAAG,GAGf2U,EAAK,OAAO,EAAE,CAAC,IAAM,IAAK,CAC1BggB,EAAO,KAAK50B,CAAG,EACf,QAAS0K,EAAE,EAAGA,EAAEhL,EAAKgL,IACjBkqB,EAAO,KAAK50B,EAAM0K,EAAEhL,GAAMO,EAAID,EAAK,EAEvC40B,EAAO,KAAK30B,CAAG,CAClB,SAEQ2U,EAAK,OAAO,EAAE,CAAC,IAAM,IAAK,CAC/B,GAAI5U,GAAO,EACP,MAAM,IAAI,MAAM,qDAAqD,EAEzE,IAAI80B,EAAU,KAAK,OAAST,GAAIr0B,CAAG,EAC/B+0B,EAAU,KAAK,OAASV,GAAIp0B,CAAG,EACnC20B,EAAO,KAAK50B,CAAG,EACf,QAASwT,EAAI,EAAGA,EAAI9T,EAAK8T,IACrBohB,EAAO,KAAKN,GAAM,GAAIQ,EAAYthB,EAAI9T,GAAQq1B,EAAUD,EAAS,CAAC,EAEtEF,EAAO,KAAK30B,CAAG,CAClB,SAEQ2U,EAAK,OAAO,EAAE,CAAC,IAAM,IAAK,CAC/BggB,EAAO,KAAK50B,CAAG,EACf,QAASwY,EAAI,EAAGA,EAAI9Y,EAAK8Y,IAAO,CAC5B,IAAIgC,GAAMqa,EAAO,OAAO,GAAKrc,EAAK9Y,EAC9Bs1B,EAAKT,GAAM/Z,CAAC,EAChB,GAAIwa,IAAOxa,EACPoa,EAAO,KAAKC,EAAOG,CAAE,CAAC,MACnB,CACH,IAAIC,EAAKza,EAAIwa,EACbJ,EAAO,KAAMC,EAAOG,CAAE,GAAG,EAAEC,GAAQJ,EAAOG,EAAG,CAAC,EAAEC,CAAG,CACtD,CACJ,CACDL,EAAO,KAAK30B,CAAG,CAElB,SAEQ2U,EAAK,OAAO,EAAE,CAAC,IAAM,IAAK,CAM/B,IAAIsgB,EACAvwB,EAAIkwB,EAAO,OACXM,EAAc,IAAI,MAAMxwB,CAAC,EACzBywB,EAAe,IAAI,MAAM11B,CAAG,EAC5B21B,GAAS,GACTC,GAAW,EACXC,GAAY,KAGhBA,GAAY,CAAA,EACZA,GAAU,KAAKv1B,CAAG,EAClB,QAAS0Y,EAAI,EAAGA,EAAIhZ,EAAKgZ,IACrB6c,GAAU,KAAKv1B,EAAQ0Y,EAAIhZ,GAAQO,EAAID,EAAK,EAIhD,IAFAu1B,GAAU,KAAKt1B,CAAG,EAEXo1B,IAAQ,CAEX,QAAShwB,EAAE,EAAGA,EAAE3F,EAAK2F,IACjB+vB,EAAa/vB,CAAC,EAAI,EAEtB,QAASmwB,EAAI,EAAGA,EAAI7wB,EAAG6wB,IAInB,QAHI1iB,EAAQ+hB,EAAOW,CAAG,EAClBC,EAAU,OAAO,UACjBC,GAAQ,OACHC,GAAI,EAAGA,GAAIj2B,EAAKi2B,KAAO,CAC5B,IAAIC,EAAOpB,GAAMe,GAAUI,EAAG,EAAE7iB,CAAK,EACjC8iB,EAAOH,IACPA,EAAUG,EACVF,GAAOC,IAEXP,EAAaM,EAAI,IACjBP,EAAYK,CAAG,EAAIE,EACtB,CAKL,QADIG,EAAe,IAAI,MAAMn2B,CAAG,EACvBo2B,EAAI,EAAGA,EAAIp2B,EAAKo2B,IACrBD,EAAaC,CAAG,EAAI,KAExB,QAASC,GAAI,EAAGA,GAAIpxB,EAAGoxB,KACnBb,EAAUC,EAAYY,EAAG,EACrBF,EAAaX,CAAO,IAAM,KAC1BW,EAAaX,CAAO,EAAIL,EAAOkB,EAAG,EAElCF,EAAaX,CAAO,GAAKL,EAAOkB,EAAG,EAG3C,QAASC,GAAI,EAAGA,GAAIt2B,EAAKs2B,KACrBH,EAAaG,EAAG,GAAK,EAAEZ,EAAaY,EAAG,EAI3CX,GAAS,GACT,QAASY,GAAI,EAAGA,GAAIv2B,EAAKu2B,KACrB,GAAIJ,EAAaI,EAAG,IAAMV,GAAUU,EAAG,EAAG,CACtCZ,GAAS,GACT,KACH,CAGLE,GAAYM,EACZP,KAEIA,GAAW,MACXD,GAAS,GAEhB,CAKD,QADIa,GAAY,CAAA,EACPC,GAAI,EAAGA,GAAIz2B,EAAKy2B,KACrBD,GAAUC,EAAG,EAAI,GAErB,QAASC,GAAI,EAAGA,GAAIzxB,EAAGyxB,KACnBlB,EAAUC,EAAYiB,EAAG,EACzBF,GAAUhB,CAAO,EAAE,KAAKL,EAAOuB,EAAG,CAAC,EAGvC,QADIC,GAAkB,CAAA,EACbC,GAAI,EAAGA,GAAI52B,EAAK42B,KACrBD,GAAgB,KAAKH,GAAUI,EAAG,EAAE,CAAC,CAAC,EACtCD,GAAgB,KAAKH,GAAUI,EAAG,EAAEJ,GAAUI,EAAG,EAAE,OAAO,CAAC,CAAC,EAEhED,GAAkBA,GAAgB,KAAK,SAAUlvB,GAAE1G,GAAE,CAAE,OAAO0G,GAAE1G,EAAE,CAAE,EACpEm0B,EAAO,KAAKyB,GAAgB,CAAC,CAAC,EAC9B,QAASE,GAAI,EAAGA,GAAMF,GAAgB,OAAQE,IAAM,EAAG,CACnD,IAAI9b,GAAI4b,GAAgBE,EAAG,EACvB,CAAC,MAAM9b,EAAC,GAAMma,EAAO,QAAQna,EAAC,IAAM,IACpCma,EAAO,KAAKna,EAAC,CAEpB,CACJ,CACD,OAAOma,CACf,EAEQ4B,GAAY,CAAC,QAAS/B,GAAS,OAAQG,EAAM,EAE7C6B,GAAUzhB,EAGV0hB,GAAW,SAAUvvB,EAAG1G,EAAG,CAG3B0G,EAAI,IAAIsvB,GAAQtvB,CAAC,EACjB1G,EAAI,IAAIg2B,GAAQh2B,CAAC,EACjB,IAAIk2B,EAAKxvB,EAAE,YACPyvB,EAAKn2B,EAAE,YACX,OAAOk2B,EAAKC,GAAMD,EAAK,MAASC,EAAK,MAASA,EAAK,MAASD,EAAK,IACzE,EAEQE,GAAU7hB,EACV8hB,GAAO,KAAK,KACZC,GAAM,KAAK,IACX/2B,GAAM,KAAK,IACXC,GAAM,KAAK,IACX+2B,GAAQ,KAAK,MACbjR,GAAM,KAAK,IACXkR,GAAM,KAAK,IACXC,GAAM,KAAK,IACXC,GAAM,KAAK,IACXC,GAAK,KAAK,GAEVC,GAAS,SAASlwB,EAAG1G,EAAG62B,EAAIC,EAAIC,EAAI,CAC/BF,IAAO,SAASA,EAAG,GACnBC,IAAO,SAASA,EAAG,GACnBC,IAAO,SAASA,EAAG,GAIxB,IAAIC,EAAU,SAASC,GAAK,CACxB,MAAO,KAAMA,IAAO,EAAIN,GACpC,EACYO,EAAU,SAASC,GAAK,CACxB,MAAQ,GAAIR,GAAKQ,GAAO,GACpC,EACQzwB,EAAI,IAAI0vB,GAAQ1vB,CAAC,EACjB1G,EAAI,IAAIo2B,GAAQp2B,CAAC,EACjB,IAAI6U,EAAM,MAAM,KAAKnO,EAAE,IAAK,CAAA,EACxB8oB,EAAK3a,EAAI,CAAC,EACVuiB,EAAKviB,EAAI,CAAC,EACVwiB,EAAKxiB,EAAI,CAAC,EACV+J,EAAQ,MAAM,KAAK5e,EAAE,IAAK,CAAA,EAC1Bs3B,EAAK1Y,EAAM,CAAC,EACZ2Y,EAAK3Y,EAAM,CAAC,EACZ4Y,EAAK5Y,EAAM,CAAC,EACZ6Y,GAAQjI,EAAK8H,GAAI,EACjBI,EAAKrB,GAAKC,GAAIc,EAAI,CAAC,EAAId,GAAIe,EAAI,CAAC,CAAC,EACjCM,EAAKtB,GAAKC,GAAIiB,EAAI,CAAC,EAAIjB,GAAIkB,EAAI,CAAC,CAAC,EACjCI,GAAQF,EAAKC,GAAI,EACjBE,GAAI,IAAK,EAAExB,GAAKC,GAAIsB,EAAM,CAAC,GAAGtB,GAAIsB,EAAM,CAAC,EAAItB,GAAI,GAAI,CAAC,EAAE,GACxDwB,GAAMV,GAAI,EAAES,IACZE,GAAMR,GAAI,EAAEM,IACZG,EAAM3B,GAAKC,GAAIwB,GAAK,CAAC,EAAIxB,GAAIe,EAAI,CAAC,CAAC,EACnCY,EAAM5B,GAAKC,GAAIyB,GAAK,CAAC,EAAIzB,GAAIkB,EAAI,CAAC,CAAC,EACnCU,GAASF,EAAMC,GAAK,EACpBE,EAAUnB,EAAQT,GAAMc,EAAIS,EAAG,CAAC,EAChCM,EAAUpB,EAAQT,GAAMiB,EAAIO,EAAG,CAAC,EAChCM,GAAMF,GAAW,EAAIA,EAAUA,EAAU,IACzCG,GAAMF,GAAW,EAAIA,EAAUA,EAAU,IACzCG,EAAQjT,GAAI+S,GAAMC,EAAG,EAAI,KAAOD,GAAMC,GAAM,KAAK,GAAKD,GAAMC,IAAK,EACjEE,EAAI,EAAI,IAAKhC,GAAIU,EAAQqB,EAAQ,EAAE,CAAC,EAAI,IAAK/B,GAAIU,EAAQ,EAAEqB,CAAK,CAAC,EAAI,IAAK/B,GAAIU,EAAQ,EAAEqB,EAAQ,CAAC,CAAC,EAAI,GAAI/B,GAAIU,EAAQ,EAAEqB,EAAQ,EAAE,CAAC,EACnIE,EAAUH,GAAMD,GACpBI,EAAUnT,GAAImT,CAAO,GAAK,IAAMA,EAAUH,IAAOD,GAAMI,EAAU,IAAMA,EAAU,IACjFA,EAAU,EAAEpC,GAAK2B,EAAIC,CAAG,EAAExB,GAAIS,EAAQuB,CAAO,EAAE,CAAC,EAChD,IAAIC,GAASpB,EAAK9H,EACdmJ,GAAUV,EAAMD,EAChBY,GAAK,EAAK,KAAMtC,GAAImB,EAAO,GAAI,CAAC,EAAGpB,GAAK,GAAKC,GAAImB,EAAO,GAAI,CAAC,CAAC,EAC9DoB,GAAK,EAAI,KAAMX,EACfY,GAAK,EAAI,KAAMZ,EAAMM,EACrBO,GAAa,GAAGrC,GAAI,CAACJ,IAAKiC,EAAQ,KAAK,GAAI,CAAC,CAAC,EAC7CS,GAAK,EAAE3C,GAAKC,GAAI4B,EAAO,CAAC,GAAG5B,GAAI4B,EAAO,CAAC,EAAI5B,GAAI,GAAI,CAAC,EAAE,EACtD2C,GAAK,CAACD,GAAGvC,GAAI,EAAES,EAAQ6B,EAAU,CAAC,EAClChJ,GAASsG,GAAKC,GAAIoC,IAAQ7B,EAAG+B,IAAK,CAAC,EAAItC,GAAIqC,IAAS7B,EAAG+B,IAAK,CAAC,EAAIvC,GAAImC,GAAS1B,EAAG+B,IAAK,CAAC,EAAIG,IAAIN,IAAS7B,EAAG+B,MAAMJ,GAAS1B,EAAG+B,IAAI,EACrI,OAAOt5B,GAAI,EAAGD,GAAI,IAAKwwB,EAAM,CAAC,CACtC,EAEQmJ,GAAU3kB,EAGV4kB,GAAW,SAASzyB,EAAG1G,EAAGmU,EAAM,CAC3BA,IAAS,SAASA,EAAK,OAI5BzN,EAAI,IAAIwyB,GAAQxyB,CAAC,EACjB1G,EAAI,IAAIk5B,GAAQl5B,CAAC,EACjB,IAAIk2B,EAAKxvB,EAAE,IAAIyN,CAAI,EACfgiB,EAAKn2B,EAAE,IAAImU,CAAI,EACfilB,EAAS,EACb,QAASnvB,KAAKisB,EAAI,CACd,IAAIvyB,GAAKuyB,EAAGjsB,CAAC,GAAK,IAAMksB,EAAGlsB,CAAC,GAAK,GACjCmvB,GAAUz1B,EAAEA,CACf,CACD,OAAO,KAAK,KAAKy1B,CAAM,CAC/B,EAEQC,GAAQ9kB,EAER+kB,GAAQ,UAAY,CAEpB,QADIjsB,EAAO,CAAE,EAAE4G,EAAM,UAAU,OACvBA,KAAQ5G,EAAM4G,CAAG,EAAK,UAAWA,GAEzC,GAAI,CACA,WAAK,SAAS,UAAU,KAAK,MAAOolB,GAAO,CAAE,MAAO,OAAQhsB,CAAI,CAAG,GAC5D,EACV,MAAW,CACR,MAAO,EACV,CACT,EAGQksB,GAAW9kB,EAEX+kB,GAAQhM,GAERiM,GAAS,CACZ,KAAM,UAAgB,CAAE,OAAOD,GAAM,CAACD,GAAS,IAAI,IAAI,EAAE,EAAE,EAAGA,GAAS,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAG,EACzF,IAAK,UAAe,CAAE,OAAOC,GAAM,CAAC,OAAO,OAAO,OAAO,MAAM,CAAC,EAAE,KAAK,KAAK,CAAG,CACpF,EAmBQE,GAAc,CAEd,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC3G,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC1G,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC1G,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC1G,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC3G,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACzG,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC1G,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACzG,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC1G,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAI3G,SAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAClI,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAChI,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC9H,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC9H,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC9H,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAChI,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC9H,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC9H,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAI9H,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC7F,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC/F,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACxG,KAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACzI,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC9F,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC3I,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAChG,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,CACnH,EAGazvB,GAAI,EAAGoK,GAAO,OAAO,KAAKqlB,EAAW,EAAGzvB,GAAIoK,GAAK,OAAQpK,IAAK,EAAG,CACtE,IAAIiqB,GAAM7f,GAAKpK,EAAC,EAEhByvB,GAAYxF,GAAI,YAAW,CAAE,EAAIwF,GAAYxF,EAAG,CACnD,CAED,IAAIyF,GAAgBD,GAEhB/0B,GAAS8P,EAgDb9P,GAAO,QAAU4nB,GACjB5nB,GAAO,OAAS2sB,GAChB3sB,GAAO,MAAQ0tB,GACf1tB,GAAO,UAAYkuB,GACnBluB,GAAO,IAAMA,GAAO,YAAckkB,GAClClkB,GAAO,OAAS8uB,GAChB9uB,GAAO,MAAQ6oB,GAGf7oB,GAAO,QAAUoxB,GAAU,QAC3BpxB,GAAO,SAAWsxB,GAClBtxB,GAAO,OAASiyB,GAChBjyB,GAAO,SAAWw0B,GAClBx0B,GAAO,OAASoxB,GAAU,OAC1BpxB,GAAO,MAAQ20B,GAGf30B,GAAO,OAAS80B,GAGhB90B,GAAO,OAASwd,GAChBxd,GAAO,OAASg1B,GAEhB,IAAIC,GAAYj1B,GAEhB,OAAOi1B,EAEX,2CCv/GA,IAAIC,GAAoB,EACpBC,GAAmB,KACnBC,GAAwB,KACxBC,GAA6B,GAE7BC,GAAmB,GACnBC,GAAkB,GAAOD,GAAmB,GAE5CE,GAAwB,OAAO,cAAiB,WAEpD,SAASnN,GAAGoN,EAAKC,EAAK,CAAE,MAAO,GAAM,EAAMA,EAAM,EAAMD,CAAM,CAC7D,SAASE,GAAGF,EAAKC,EAAK,CAAE,MAAO,GAAMA,EAAM,EAAMD,CAAM,CACvD,SAASjyB,GAAGiyB,EAAU,CAAE,MAAO,GAAMA,CAAM,CAG3C,SAASG,GAAYC,EAAIJ,EAAKC,EAAK,CAAE,QAASrN,GAAEoN,EAAKC,CAAG,EAAIG,EAAKF,GAAEF,EAAKC,CAAG,GAAKG,EAAKryB,GAAEiyB,CAAG,GAAKI,CAAK,CAGpG,SAASC,GAAUD,EAAIJ,EAAKC,EAAK,CAAE,MAAO,GAAMrN,GAAEoN,EAAKC,CAAG,EAAIG,EAAKA,EAAK,EAAMF,GAAEF,EAAKC,CAAG,EAAIG,EAAKryB,GAAEiyB,CAAG,CAAI,CAE1G,SAASM,GAAiBC,EAAIC,EAAIC,EAAIC,EAAKC,EAAK,CAC9C,IAAIC,EAAUC,EAAUhxB,EAAI,EAC5B,GACEgxB,EAAWL,GAAMC,EAAKD,GAAM,EAC5BI,EAAWT,GAAWU,EAAUH,EAAKC,CAAG,EAAIJ,EACxCK,EAAW,EACbH,EAAKI,EAELL,EAAKK,QAEA,KAAK,IAAID,CAAQ,EAAIjB,IAAyB,EAAE9vB,EAAI+vB,IAC7D,OAAOiB,CACT,CAEA,SAASC,GAAsBP,EAAIQ,EAASL,EAAKC,EAAK,CACrD,QAAS9wB,EAAI,EAAGA,EAAI4vB,GAAmB,EAAE5vB,EAAG,CAC1C,IAAImxB,EAAeX,GAASU,EAASL,EAAKC,CAAG,EAC7C,GAAIK,IAAiB,EACnB,OAAOD,EAET,IAAIH,EAAWT,GAAWY,EAASL,EAAKC,CAAG,EAAIJ,EAC/CQ,GAAWH,EAAWI,CACvB,CACD,OAAOD,CACR,CAEA,SAASE,GAAcl6B,EAAG,CACxB,OAAOA,CACT,KAEAymB,GAAiB,SAAiBkT,EAAKQ,EAAKP,EAAKQ,EAAK,CACpD,GAAI,EAAE,GAAKT,GAAOA,GAAO,GAAK,GAAKC,GAAOA,GAAO,GAC/C,MAAM,IAAI,MAAM,yCAAyC,EAG3D,GAAID,IAAQQ,GAAOP,IAAQQ,EACzB,OAAOF,GAKT,QADIG,EAAerB,GAAwB,IAAI,aAAaF,EAAgB,EAAI,IAAI,MAAMA,EAAgB,EACjGhwB,EAAI,EAAGA,EAAIgwB,GAAkB,EAAEhwB,EACtCuxB,EAAavxB,CAAC,EAAIswB,GAAWtwB,EAAIiwB,GAAiBY,EAAKC,CAAG,EAG5D,SAASU,EAAUd,EAAI,CAKrB,QAJIe,EAAgB,EAChBC,EAAgB,EAChBC,EAAa3B,GAAmB,EAE7B0B,IAAkBC,GAAcJ,EAAaG,CAAa,GAAKhB,EAAI,EAAEgB,EAC1ED,GAAiBxB,GAEnB,EAAEyB,EAGF,IAAIxG,GAAQwF,EAAKa,EAAaG,CAAa,IAAMH,EAAaG,EAAgB,CAAC,EAAIH,EAAaG,CAAa,GACzGE,EAAYH,EAAgBvG,EAAO+E,GAEnC4B,EAAerB,GAASoB,EAAWf,EAAKC,CAAG,EAC/C,OAAIe,GAAgBhC,GACXoB,GAAqBP,EAAIkB,EAAWf,EAAKC,CAAG,EAC1Ce,IAAiB,EACnBD,EAEAnB,GAAgBC,EAAIe,EAAeA,EAAgBxB,GAAiBY,EAAKC,CAAG,CAEtF,CAED,OAAO,SAAuB55B,EAAG,CAE/B,OAAIA,IAAM,EACD,EAELA,IAAM,EACD,EAEFo5B,GAAWkB,EAASt6B,CAAC,EAAGm6B,EAAKC,CAAG,CAC3C,CACA,sCCxGAQ,GAAiB,CAChB,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,aAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,KAAQ,CAAC,EAAG,IAAK,GAAG,EACpB,WAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,MAAS,CAAC,IAAK,IAAK,GAAG,EACvB,MAAS,CAAC,IAAK,IAAK,GAAG,EACvB,OAAU,CAAC,IAAK,IAAK,GAAG,EACxB,MAAS,CAAC,EAAG,EAAG,CAAC,EACjB,eAAkB,CAAC,IAAK,IAAK,GAAG,EAChC,KAAQ,CAAC,EAAG,EAAG,GAAG,EAClB,WAAc,CAAC,IAAK,GAAI,GAAG,EAC3B,MAAS,CAAC,IAAK,GAAI,EAAE,EACrB,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,UAAa,CAAC,GAAI,IAAK,GAAG,EAC1B,WAAc,CAAC,IAAK,IAAK,CAAC,EAC1B,UAAa,CAAC,IAAK,IAAK,EAAE,EAC1B,MAAS,CAAC,IAAK,IAAK,EAAE,EACtB,eAAkB,CAAC,IAAK,IAAK,GAAG,EAChC,SAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,QAAW,CAAC,IAAK,GAAI,EAAE,EACvB,KAAQ,CAAC,EAAG,IAAK,GAAG,EACpB,SAAY,CAAC,EAAG,EAAG,GAAG,EACtB,SAAY,CAAC,EAAG,IAAK,GAAG,EACxB,cAAiB,CAAC,IAAK,IAAK,EAAE,EAC9B,SAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,UAAa,CAAC,EAAG,IAAK,CAAC,EACvB,SAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,YAAe,CAAC,IAAK,EAAG,GAAG,EAC3B,eAAkB,CAAC,GAAI,IAAK,EAAE,EAC9B,WAAc,CAAC,IAAK,IAAK,CAAC,EAC1B,WAAc,CAAC,IAAK,GAAI,GAAG,EAC3B,QAAW,CAAC,IAAK,EAAG,CAAC,EACrB,WAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,aAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,cAAiB,CAAC,GAAI,GAAI,GAAG,EAC7B,cAAiB,CAAC,GAAI,GAAI,EAAE,EAC5B,cAAiB,CAAC,GAAI,GAAI,EAAE,EAC5B,cAAiB,CAAC,EAAG,IAAK,GAAG,EAC7B,WAAc,CAAC,IAAK,EAAG,GAAG,EAC1B,SAAY,CAAC,IAAK,GAAI,GAAG,EACzB,YAAe,CAAC,EAAG,IAAK,GAAG,EAC3B,QAAW,CAAC,IAAK,IAAK,GAAG,EACzB,QAAW,CAAC,IAAK,IAAK,GAAG,EACzB,WAAc,CAAC,GAAI,IAAK,GAAG,EAC3B,UAAa,CAAC,IAAK,GAAI,EAAE,EACzB,YAAe,CAAC,IAAK,IAAK,GAAG,EAC7B,YAAe,CAAC,GAAI,IAAK,EAAE,EAC3B,QAAW,CAAC,IAAK,EAAG,GAAG,EACvB,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,WAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,KAAQ,CAAC,IAAK,IAAK,CAAC,EACpB,UAAa,CAAC,IAAK,IAAK,EAAE,EAC1B,KAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,MAAS,CAAC,EAAG,IAAK,CAAC,EACnB,YAAe,CAAC,IAAK,IAAK,EAAE,EAC5B,KAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,SAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,QAAW,CAAC,IAAK,IAAK,GAAG,EACzB,UAAa,CAAC,IAAK,GAAI,EAAE,EACzB,OAAU,CAAC,GAAI,EAAG,GAAG,EACrB,MAAS,CAAC,IAAK,IAAK,GAAG,EACvB,MAAS,CAAC,IAAK,IAAK,GAAG,EACvB,SAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,cAAiB,CAAC,IAAK,IAAK,GAAG,EAC/B,UAAa,CAAC,IAAK,IAAK,CAAC,EACzB,aAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,WAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,qBAAwB,CAAC,IAAK,IAAK,GAAG,EACtC,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,WAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,YAAe,CAAC,IAAK,IAAK,GAAG,EAC7B,cAAiB,CAAC,GAAI,IAAK,GAAG,EAC9B,aAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,eAAkB,CAAC,IAAK,IAAK,GAAG,EAChC,eAAkB,CAAC,IAAK,IAAK,GAAG,EAChC,eAAkB,CAAC,IAAK,IAAK,GAAG,EAChC,YAAe,CAAC,IAAK,IAAK,GAAG,EAC7B,KAAQ,CAAC,EAAG,IAAK,CAAC,EAClB,UAAa,CAAC,GAAI,IAAK,EAAE,EACzB,MAAS,CAAC,IAAK,IAAK,GAAG,EACvB,QAAW,CAAC,IAAK,EAAG,GAAG,EACvB,OAAU,CAAC,IAAK,EAAG,CAAC,EACpB,iBAAoB,CAAC,IAAK,IAAK,GAAG,EAClC,WAAc,CAAC,EAAG,EAAG,GAAG,EACxB,aAAgB,CAAC,IAAK,GAAI,GAAG,EAC7B,aAAgB,CAAC,IAAK,IAAK,GAAG,EAC9B,eAAkB,CAAC,GAAI,IAAK,GAAG,EAC/B,gBAAmB,CAAC,IAAK,IAAK,GAAG,EACjC,kBAAqB,CAAC,EAAG,IAAK,GAAG,EACjC,gBAAmB,CAAC,GAAI,IAAK,GAAG,EAChC,gBAAmB,CAAC,IAAK,GAAI,GAAG,EAChC,aAAgB,CAAC,GAAI,GAAI,GAAG,EAC5B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,SAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,YAAe,CAAC,IAAK,IAAK,GAAG,EAC7B,KAAQ,CAAC,EAAG,EAAG,GAAG,EAClB,QAAW,CAAC,IAAK,IAAK,GAAG,EACzB,MAAS,CAAC,IAAK,IAAK,CAAC,EACrB,UAAa,CAAC,IAAK,IAAK,EAAE,EAC1B,OAAU,CAAC,IAAK,IAAK,CAAC,EACtB,UAAa,CAAC,IAAK,GAAI,CAAC,EACxB,OAAU,CAAC,IAAK,IAAK,GAAG,EACxB,cAAiB,CAAC,IAAK,IAAK,GAAG,EAC/B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,cAAiB,CAAC,IAAK,IAAK,GAAG,EAC/B,cAAiB,CAAC,IAAK,IAAK,GAAG,EAC/B,WAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,KAAQ,CAAC,IAAK,IAAK,EAAE,EACrB,KAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,KAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,WAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,OAAU,CAAC,IAAK,EAAG,GAAG,EACtB,cAAiB,CAAC,IAAK,GAAI,GAAG,EAC9B,IAAO,CAAC,IAAK,EAAG,CAAC,EACjB,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,UAAa,CAAC,GAAI,IAAK,GAAG,EAC1B,YAAe,CAAC,IAAK,GAAI,EAAE,EAC3B,OAAU,CAAC,IAAK,IAAK,GAAG,EACxB,WAAc,CAAC,IAAK,IAAK,EAAE,EAC3B,SAAY,CAAC,GAAI,IAAK,EAAE,EACxB,SAAY,CAAC,IAAK,IAAK,GAAG,EAC1B,OAAU,CAAC,IAAK,GAAI,EAAE,EACtB,OAAU,CAAC,IAAK,IAAK,GAAG,EACxB,QAAW,CAAC,IAAK,IAAK,GAAG,EACzB,UAAa,CAAC,IAAK,GAAI,GAAG,EAC1B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,UAAa,CAAC,IAAK,IAAK,GAAG,EAC3B,KAAQ,CAAC,IAAK,IAAK,GAAG,EACtB,YAAe,CAAC,EAAG,IAAK,GAAG,EAC3B,UAAa,CAAC,GAAI,IAAK,GAAG,EAC1B,IAAO,CAAC,IAAK,IAAK,GAAG,EACrB,KAAQ,CAAC,EAAG,IAAK,GAAG,EACpB,QAAW,CAAC,IAAK,IAAK,GAAG,EACzB,OAAU,CAAC,IAAK,GAAI,EAAE,EACtB,UAAa,CAAC,GAAI,IAAK,GAAG,EAC1B,OAAU,CAAC,IAAK,IAAK,GAAG,EACxB,MAAS,CAAC,IAAK,IAAK,GAAG,EACvB,MAAS,CAAC,IAAK,IAAK,GAAG,EACvB,WAAc,CAAC,IAAK,IAAK,GAAG,EAC5B,OAAU,CAAC,IAAK,IAAK,CAAC,EACtB,YAAe,CAAC,IAAK,IAAK,EAAE,CAC7B,kBCvJAC,GAAiB,SAAoB9oB,EAAK,CACzC,MAAI,CAACA,GAAO,OAAOA,GAAQ,SACnB,GAGDA,aAAe,OAAS,MAAM,QAAQA,CAAG,GAC9CA,EAAI,QAAU,IAAMA,EAAI,kBAAkB,UACzC,OAAO,yBAAyBA,EAAMA,EAAI,OAAS,IAAOA,EAAI,YAAY,OAAS,SACvF,ECNI8oB,GAAaC,GAEbC,GAAS,MAAM,UAAU,OACzBC,GAAQ,MAAM,UAAU,MAExBC,GAAUC,GAAc,QAAG,SAAiBhvB,EAAM,CAGrD,QAFIivB,EAAU,CAAA,EAELryB,EAAI,EAAGgK,EAAM5G,EAAK,OAAQpD,EAAIgK,EAAKhK,IAAK,CAChD,IAAIsyB,EAAMlvB,EAAKpD,CAAC,EAEZ+xB,GAAWO,CAAG,EAEjBD,EAAUJ,GAAO,KAAKI,EAASH,GAAM,KAAKI,CAAG,CAAC,EAE9CD,EAAQ,KAAKC,CAAG,CAEjB,CAED,OAAOD,CACR,EAEAF,GAAQ,KAAO,SAAUI,EAAI,CAC5B,OAAO,UAAY,CAClB,OAAOA,EAAGJ,GAAQ,SAAS,CAAC,CAC9B,CACA,oBC3BIK,GAAaR,GACbG,GAAUM,GACVC,GAAiB,OAAO,eAExBC,GAAe,OAAO,OAAO,IAAI,EAGrC,QAAStvB,MAAQmvB,GACZE,GAAe,KAAKF,GAAYnvB,EAAI,IACvCsvB,GAAaH,GAAWnvB,EAAI,CAAC,EAAIA,IAInC,IAAIuvB,GAAKC,GAAA,QAAiB,CACzB,GAAI,CAAE,EACN,IAAK,CAAE,CACR,EAEAD,GAAG,IAAM,SAAUE,EAAQ,CAC1B,IAAIC,EAASD,EAAO,UAAU,EAAG,CAAC,EAAE,cAChChO,EACAkO,EACJ,OAAQD,EAAM,CACb,IAAK,MACJjO,EAAM8N,GAAG,IAAI,IAAIE,CAAM,EACvBE,EAAQ,MACR,MACD,IAAK,MACJlO,EAAM8N,GAAG,IAAI,IAAIE,CAAM,EACvBE,EAAQ,MACR,MACD,QACClO,EAAM8N,GAAG,IAAI,IAAIE,CAAM,EACvBE,EAAQ,MACR,KACD,CAED,OAAKlO,EAIE,CAAC,MAAOkO,EAAO,MAAOlO,CAAG,EAHxB,IAIT,EAEA8N,GAAG,IAAI,IAAM,SAAUE,EAAQ,CAC9B,GAAI,CAACA,EACJ,OAAO,KAGR,IAAIG,EAAO,sBACPlrB,EAAM,kCACNuE,EAAO,+HACP4mB,EAAM,uHACNC,EAAU,UAEVvqB,EAAM,CAAC,EAAG,EAAG,EAAG,CAAC,EACjBwqB,EACApzB,EACAqzB,EAEJ,GAAID,EAAQN,EAAO,MAAM/qB,CAAG,EAAG,CAI9B,IAHAsrB,EAAWD,EAAM,CAAC,EAClBA,EAAQA,EAAM,CAAC,EAEVpzB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAEvB,IAAIszB,EAAKtzB,EAAI,EACb4I,EAAI5I,CAAC,EAAI,SAASozB,EAAM,MAAME,EAAIA,EAAK,CAAC,EAAG,EAAE,CAC7C,CAEGD,IACHzqB,EAAI,CAAC,EAAI,SAASyqB,EAAU,EAAE,EAAI,IAEnC,SAAUD,EAAQN,EAAO,MAAMG,CAAI,EAAG,CAItC,IAHAG,EAAQA,EAAM,CAAC,EACfC,EAAWD,EAAM,CAAC,EAEbpzB,EAAI,EAAGA,EAAI,EAAGA,IAClB4I,EAAI5I,CAAC,EAAI,SAASozB,EAAMpzB,CAAC,EAAIozB,EAAMpzB,CAAC,EAAG,EAAE,EAGtCqzB,IACHzqB,EAAI,CAAC,EAAI,SAASyqB,EAAWA,EAAU,EAAE,EAAI,IAE9C,SAAUD,EAAQN,EAAO,MAAMxmB,CAAI,EAAG,CACtC,IAAKtM,EAAI,EAAGA,EAAI,EAAGA,IAClB4I,EAAI5I,CAAC,EAAI,SAASozB,EAAMpzB,EAAI,CAAC,EAAG,CAAC,EAG9BozB,EAAM,CAAC,IACNA,EAAM,CAAC,EACVxqB,EAAI,CAAC,EAAI,WAAWwqB,EAAM,CAAC,CAAC,EAAI,IAEhCxqB,EAAI,CAAC,EAAI,WAAWwqB,EAAM,CAAC,CAAC,EAG9B,SAAUA,EAAQN,EAAO,MAAMI,CAAG,EAAG,CACrC,IAAKlzB,EAAI,EAAGA,EAAI,EAAGA,IAClB4I,EAAI5I,CAAC,EAAI,KAAK,MAAM,WAAWozB,EAAMpzB,EAAI,CAAC,CAAC,EAAI,IAAI,EAGhDozB,EAAM,CAAC,IACNA,EAAM,CAAC,EACVxqB,EAAI,CAAC,EAAI,WAAWwqB,EAAM,CAAC,CAAC,EAAI,IAEhCxqB,EAAI,CAAC,EAAI,WAAWwqB,EAAM,CAAC,CAAC,EAG9B,KAAM,QAAIA,EAAQN,EAAO,MAAMK,CAAO,GAClCC,EAAM,CAAC,IAAM,cACT,CAAC,EAAG,EAAG,EAAG,CAAC,EAGdV,GAAe,KAAKF,GAAYY,EAAM,CAAC,CAAC,GAI7CxqB,EAAM4pB,GAAWY,EAAM,CAAC,CAAC,EACzBxqB,EAAI,CAAC,EAAI,EAEFA,GANC,KAQD,KAGR,IAAK5I,EAAI,EAAGA,EAAI,EAAGA,IAClB4I,EAAI5I,CAAC,EAAIuzB,GAAM3qB,EAAI5I,CAAC,EAAG,EAAG,GAAG,EAE9B,OAAA4I,EAAI,CAAC,EAAI2qB,GAAM3qB,EAAI,CAAC,EAAG,EAAG,CAAC,EAEpBA,CACR,EAEAgqB,GAAG,IAAI,IAAM,SAAUE,EAAQ,CAC9B,GAAI,CAACA,EACJ,OAAO,KAGR,IAAI7kB,EAAM,+KACNmlB,EAAQN,EAAO,MAAM7kB,CAAG,EAE5B,GAAImlB,EAAO,CACV,IAAIn2B,EAAQ,WAAWm2B,EAAM,CAAC,CAAC,EAC3Bj2B,GAAM,WAAWi2B,EAAM,CAAC,CAAC,EAAI,IAAO,KAAO,IAC3Ct4B,EAAIy4B,GAAM,WAAWH,EAAM,CAAC,CAAC,EAAG,EAAG,GAAG,EACtC7pB,EAAIgqB,GAAM,WAAWH,EAAM,CAAC,CAAC,EAAG,EAAG,GAAG,EACtC32B,EAAI82B,GAAM,MAAMt2B,CAAK,EAAI,EAAIA,EAAO,EAAG,CAAC,EAE5C,MAAO,CAACE,EAAGrC,EAAGyO,EAAG9M,CAAC,CAClB,CAED,OAAO,IACR,EAEAm2B,GAAG,IAAI,IAAM,SAAUE,EAAQ,CAC9B,GAAI,CAACA,EACJ,OAAO,KAGR,IAAIU,EAAM,sKACNJ,EAAQN,EAAO,MAAMU,CAAG,EAE5B,GAAIJ,EAAO,CACV,IAAIn2B,EAAQ,WAAWm2B,EAAM,CAAC,CAAC,EAC3Bj2B,GAAM,WAAWi2B,EAAM,CAAC,CAAC,EAAI,IAAO,KAAO,IAC3C3Q,EAAI8Q,GAAM,WAAWH,EAAM,CAAC,CAAC,EAAG,EAAG,GAAG,EACtCr9B,EAAIw9B,GAAM,WAAWH,EAAM,CAAC,CAAC,EAAG,EAAG,GAAG,EACtC32B,EAAI82B,GAAM,MAAMt2B,CAAK,EAAI,EAAIA,EAAO,EAAG,CAAC,EAC5C,MAAO,CAACE,EAAGslB,EAAG1sB,EAAG0G,CAAC,CAClB,CAED,OAAO,IACR,EAEAm2B,GAAG,GAAG,IAAM,UAAY,CACvB,IAAItmB,EAAO6lB,GAAQ,SAAS,EAE5B,MACC,IACAsB,GAAUnnB,EAAK,CAAC,CAAC,EACjBmnB,GAAUnnB,EAAK,CAAC,CAAC,EACjBmnB,GAAUnnB,EAAK,CAAC,CAAC,GAChBA,EAAK,CAAC,EAAI,EACPmnB,GAAU,KAAK,MAAMnnB,EAAK,CAAC,EAAI,GAAG,CAAC,EACpC,GAEL,EAEAsmB,GAAG,GAAG,IAAM,UAAY,CACvB,IAAItmB,EAAO6lB,GAAQ,SAAS,EAE5B,OAAO7lB,EAAK,OAAS,GAAKA,EAAK,CAAC,IAAM,EACnC,OAAS,KAAK,MAAMA,EAAK,CAAC,CAAC,EAAI,KAAO,KAAK,MAAMA,EAAK,CAAC,CAAC,EAAI,KAAO,KAAK,MAAMA,EAAK,CAAC,CAAC,EAAI,IACzF,QAAU,KAAK,MAAMA,EAAK,CAAC,CAAC,EAAI,KAAO,KAAK,MAAMA,EAAK,CAAC,CAAC,EAAI,KAAO,KAAK,MAAMA,EAAK,CAAC,CAAC,EAAI,KAAOA,EAAK,CAAC,EAAI,GAC/G,EAEAsmB,GAAG,GAAG,IAAI,QAAU,UAAY,CAC/B,IAAItmB,EAAO6lB,GAAQ,SAAS,EAExBz7B,EAAI,KAAK,MAAM4V,EAAK,CAAC,EAAI,IAAM,GAAG,EAClC1V,EAAI,KAAK,MAAM0V,EAAK,CAAC,EAAI,IAAM,GAAG,EAClCvW,EAAI,KAAK,MAAMuW,EAAK,CAAC,EAAI,IAAM,GAAG,EAEtC,OAAOA,EAAK,OAAS,GAAKA,EAAK,CAAC,IAAM,EACnC,OAAS5V,EAAI,MAAQE,EAAI,MAAQb,EAAI,KACrC,QAAUW,EAAI,MAAQE,EAAI,MAAQb,EAAI,MAAQuW,EAAK,CAAC,EAAI,GAC5D,EAEAsmB,GAAG,GAAG,IAAM,UAAY,CACvB,IAAIjnB,EAAOwmB,GAAQ,SAAS,EAC5B,OAAOxmB,EAAK,OAAS,GAAKA,EAAK,CAAC,IAAM,EACnC,OAASA,EAAK,CAAC,EAAI,KAAOA,EAAK,CAAC,EAAI,MAAQA,EAAK,CAAC,EAAI,KACtD,QAAUA,EAAK,CAAC,EAAI,KAAOA,EAAK,CAAC,EAAI,MAAQA,EAAK,CAAC,EAAI,MAAQA,EAAK,CAAC,EAAI,GAC7E,EAIAinB,GAAG,GAAG,IAAM,UAAY,CACvB,IAAIc,EAAOvB,GAAQ,SAAS,EAExB11B,EAAI,GACR,OAAIi3B,EAAK,QAAU,GAAKA,EAAK,CAAC,IAAM,IACnCj3B,EAAI,KAAOi3B,EAAK,CAAC,GAGX,OAASA,EAAK,CAAC,EAAI,KAAOA,EAAK,CAAC,EAAI,MAAQA,EAAK,CAAC,EAAI,IAAMj3B,EAAI,GACxE,EAEAm2B,GAAG,GAAG,QAAU,SAAUhqB,EAAK,CAC9B,OAAO+pB,GAAa/pB,EAAI,MAAM,EAAG,CAAC,CAAC,CACpC,EAGA,SAAS2qB,GAAMv+B,EAAKM,EAAKC,EAAK,CAC7B,OAAO,KAAK,IAAI,KAAK,IAAID,EAAKN,CAAG,EAAGO,CAAG,CACxC,CAEA,SAASk+B,GAAUz+B,EAAK,CACvB,IAAI2b,EAAM,KAAK,MAAM3b,CAAG,EAAE,SAAS,EAAE,EAAE,cACvC,OAAQ2b,EAAI,OAAS,EAAK,IAAMA,EAAMA,CACvC,mBC/OA,MAAMgjB,GAAc3B,GAMd4B,GAAkB,CAAA,EACxB,UAAW3J,KAAO,OAAO,KAAK0J,EAAW,EACxCC,GAAgBD,GAAY1J,CAAG,CAAC,EAAIA,EAGrC,MAAM4J,EAAU,CACf,IAAK,CAAC,SAAU,EAAG,OAAQ,KAAK,EAChC,IAAK,CAAC,SAAU,EAAG,OAAQ,KAAK,EAChC,IAAK,CAAC,SAAU,EAAG,OAAQ,KAAK,EAChC,IAAK,CAAC,SAAU,EAAG,OAAQ,KAAK,EAChC,KAAM,CAAC,SAAU,EAAG,OAAQ,MAAM,EAClC,IAAK,CAAC,SAAU,EAAG,OAAQ,KAAK,EAChC,IAAK,CAAC,SAAU,EAAG,OAAQ,KAAK,EAChC,IAAK,CAAC,SAAU,EAAG,OAAQ,KAAK,EAChC,IAAK,CAAC,SAAU,EAAG,OAAQ,CAAC,KAAK,CAAC,EAClC,QAAS,CAAC,SAAU,EAAG,OAAQ,CAAC,SAAS,CAAC,EAC1C,OAAQ,CAAC,SAAU,EAAG,OAAQ,CAAC,QAAQ,CAAC,EACxC,QAAS,CAAC,SAAU,EAAG,OAAQ,CAAC,SAAS,CAAC,EAC1C,IAAK,CAAC,SAAU,EAAG,OAAQ,CAAC,IAAK,IAAK,GAAG,CAAC,EAC1C,MAAO,CAAC,SAAU,EAAG,OAAQ,CAAC,MAAO,MAAO,KAAK,CAAC,EAClD,KAAM,CAAC,SAAU,EAAG,OAAQ,CAAC,MAAM,CAAC,CACrC,MAEAC,GAAiBD,EAGjB,UAAWb,KAAS,OAAO,KAAKa,CAAO,EAAG,CACzC,GAAI,EAAE,aAAcA,EAAQb,CAAK,GAChC,MAAM,IAAI,MAAM,8BAAgCA,CAAK,EAGtD,GAAI,EAAE,WAAYa,EAAQb,CAAK,GAC9B,MAAM,IAAI,MAAM,oCAAsCA,CAAK,EAG5D,GAAIa,EAAQb,CAAK,EAAE,OAAO,SAAWa,EAAQb,CAAK,EAAE,SACnD,MAAM,IAAI,MAAM,sCAAwCA,CAAK,EAG9D,KAAM,CAAC,SAAAe,EAAU,OAAAC,CAAM,EAAIH,EAAQb,CAAK,EACxC,OAAOa,EAAQb,CAAK,EAAE,SACtB,OAAOa,EAAQb,CAAK,EAAE,OACtB,OAAO,eAAea,EAAQb,CAAK,EAAG,WAAY,CAAC,MAAOe,CAAQ,CAAC,EACnE,OAAO,eAAeF,EAAQb,CAAK,EAAG,SAAU,CAAC,MAAOgB,CAAM,CAAC,CAChE,CAEAH,EAAQ,IAAI,IAAM,SAAUjrB,EAAK,CAChC,MAAMlS,EAAIkS,EAAI,CAAC,EAAI,IACbhS,EAAIgS,EAAI,CAAC,EAAI,IACb7S,EAAI6S,EAAI,CAAC,EAAI,IACbtT,EAAM,KAAK,IAAIoB,EAAGE,EAAGb,CAAC,EACtBR,EAAM,KAAK,IAAImB,EAAGE,EAAGb,CAAC,EACtB2M,EAAQnN,EAAMD,EACpB,IAAI6H,EACArC,EAEAvF,IAAQD,EACX6H,EAAI,EACMzG,IAAMnB,EAChB4H,GAAKvG,EAAIb,GAAK2M,EACJ9L,IAAMrB,EAChB4H,EAAI,GAAKpH,EAAIW,GAAKgM,EACR3M,IAAMR,IAChB4H,EAAI,GAAKzG,EAAIE,GAAK8L,GAGnBvF,EAAI,KAAK,IAAIA,EAAI,GAAI,GAAG,EAEpBA,EAAI,IACPA,GAAK,KAGN,MAAMoM,GAAKjU,EAAMC,GAAO,EAExB,OAAIA,IAAQD,EACXwF,EAAI,EACMyO,GAAK,GACfzO,EAAI4H,GAASnN,EAAMD,GAEnBwF,EAAI4H,GAAS,EAAInN,EAAMD,GAGjB,CAAC6H,EAAGrC,EAAI,IAAKyO,EAAI,GAAG,CAC5B,EAEAsqB,EAAQ,IAAI,IAAM,SAAUjrB,EAAK,CAChC,IAAIqrB,EACAC,EACAC,EACAh3B,EACArC,EAEJ,MAAMpE,EAAIkS,EAAI,CAAC,EAAI,IACb,EAAIA,EAAI,CAAC,EAAI,IACb7S,EAAI6S,EAAI,CAAC,EAAI,IACbmH,EAAI,KAAK,IAAIrZ,EAAG,EAAGX,CAAC,EACpBq+B,EAAOrkB,EAAI,KAAK,IAAIrZ,EAAG,EAAGX,CAAC,EAC3Bs+B,EAAQ,SAAUr+B,EAAG,CAC1B,OAAQ+Z,EAAI/Z,GAAK,EAAIo+B,EAAO,EAAI,CAClC,EAEC,OAAIA,IAAS,GACZj3B,EAAI,EACJrC,EAAI,IAEJA,EAAIs5B,EAAOrkB,EACXkkB,EAAOI,EAAM39B,CAAC,EACdw9B,EAAOG,EAAM,CAAC,EACdF,EAAOE,EAAMt+B,CAAC,EAEVW,IAAMqZ,EACT5S,EAAIg3B,EAAOD,EACD,IAAMnkB,EAChB5S,EAAK,EAAI,EAAK82B,EAAOE,EACXp+B,IAAMga,IAChB5S,EAAK,EAAI,EAAK+2B,EAAOD,GAGlB92B,EAAI,EACPA,GAAK,EACKA,EAAI,IACdA,GAAK,IAIA,CACNA,EAAI,IACJrC,EAAI,IACJiV,EAAI,GACN,CACA,EAEA8jB,EAAQ,IAAI,IAAM,SAAUjrB,EAAK,CAChC,MAAMlS,EAAIkS,EAAI,CAAC,EACThS,EAAIgS,EAAI,CAAC,EACf,IAAI7S,EAAI6S,EAAI,CAAC,EACb,MAAMzL,EAAI02B,EAAQ,IAAI,IAAIjrB,CAAG,EAAE,CAAC,EAC1B6Z,EAAI,EAAI,IAAM,KAAK,IAAI/rB,EAAG,KAAK,IAAIE,EAAGb,CAAC,CAAC,EAE9C,OAAAA,EAAI,EAAI,EAAI,IAAM,KAAK,IAAIW,EAAG,KAAK,IAAIE,EAAGb,CAAC,CAAC,EAErC,CAACoH,EAAGslB,EAAI,IAAK1sB,EAAI,GAAG,CAC5B,EAEA89B,EAAQ,IAAI,KAAO,SAAUjrB,EAAK,CACjC,MAAMlS,EAAIkS,EAAI,CAAC,EAAI,IACbhS,EAAIgS,EAAI,CAAC,EAAI,IACb7S,EAAI6S,EAAI,CAAC,EAAI,IAEb/O,EAAI,KAAK,IAAI,EAAInD,EAAG,EAAIE,EAAG,EAAIb,CAAC,EAChCC,GAAK,EAAIU,EAAImD,IAAM,EAAIA,IAAM,EAC7BgB,GAAK,EAAIjE,EAAIiD,IAAM,EAAIA,IAAM,EAC7B1C,GAAK,EAAIpB,EAAI8D,IAAM,EAAIA,IAAM,EAEnC,MAAO,CAAC7D,EAAI,IAAK6E,EAAI,IAAK1D,EAAI,IAAK0C,EAAI,GAAG,CAC3C,EAEA,SAASy6B,GAAoBp9B,EAAGC,EAAG,CAIlC,OACGD,EAAE,CAAC,EAAIC,EAAE,CAAC,IAAM,GAChBD,EAAE,CAAC,EAAIC,EAAE,CAAC,IAAM,GAChBD,EAAE,CAAC,EAAIC,EAAE,CAAC,IAAM,CAEpB,CAEA08B,EAAQ,IAAI,QAAU,SAAUjrB,EAAK,CACpC,MAAM2rB,EAAWX,GAAgBhrB,CAAG,EACpC,GAAI2rB,EACH,OAAOA,EAGR,IAAIC,EAAyB,IACzBC,EAEJ,UAAWtB,KAAW,OAAO,KAAKQ,EAAW,EAAG,CAC/C,MAAMvrB,EAAQurB,GAAYR,CAAO,EAG3BjE,EAAWoF,GAAoB1rB,EAAKR,CAAK,EAG3C8mB,EAAWsF,IACdA,EAAyBtF,EACzBuF,EAAwBtB,EAEzB,CAED,OAAOsB,CACR,EAEAZ,EAAQ,QAAQ,IAAM,SAAUV,EAAS,CACxC,OAAOQ,GAAYR,CAAO,CAC3B,EAEAU,EAAQ,IAAI,IAAM,SAAUjrB,EAAK,CAChC,IAAIlS,EAAIkS,EAAI,CAAC,EAAI,IACbhS,EAAIgS,EAAI,CAAC,EAAI,IACb7S,EAAI6S,EAAI,CAAC,EAAI,IAGjBlS,EAAIA,EAAI,SAAaA,EAAI,MAAS,QAAU,IAAQA,EAAI,MACxDE,EAAIA,EAAI,SAAaA,EAAI,MAAS,QAAU,IAAQA,EAAI,MACxDb,EAAIA,EAAI,SAAaA,EAAI,MAAS,QAAU,IAAQA,EAAI,MAExD,MAAMmB,EAAKR,EAAI,MAAWE,EAAI,MAAWb,EAAI,MACvCoB,EAAKT,EAAI,MAAWE,EAAI,MAAWb,EAAI,MACvCqB,EAAKV,EAAI,MAAWE,EAAI,MAAWb,EAAI,MAE7C,MAAO,CAACmB,EAAI,IAAKC,EAAI,IAAKC,EAAI,GAAG,CAClC,EAEAy8B,EAAQ,IAAI,IAAM,SAAUjrB,EAAK,CAChC,MAAMxP,EAAMy6B,EAAQ,IAAI,IAAIjrB,CAAG,EAC/B,IAAI1R,EAAIkC,EAAI,CAAC,EACTjC,EAAIiC,EAAI,CAAC,EACThC,EAAIgC,EAAI,CAAC,EAEblC,GAAK,OACLC,GAAK,IACLC,GAAK,QAELF,EAAIA,EAAI,QAAYA,IAAM,EAAI,GAAO,MAAQA,EAAM,GAAK,IACxDC,EAAIA,EAAI,QAAYA,IAAM,EAAI,GAAO,MAAQA,EAAM,GAAK,IACxDC,EAAIA,EAAI,QAAYA,IAAM,EAAI,GAAO,MAAQA,EAAM,GAAK,IAExD,MAAM,EAAK,IAAMD,EAAK,GAChBsF,EAAI,KAAOvF,EAAIC,GACfpB,EAAI,KAAOoB,EAAIC,GAErB,MAAO,CAAC,EAAGqF,EAAG1G,CAAC,CAChB,EAEA89B,EAAQ,IAAI,IAAM,SAAU5lB,EAAK,CAChC,MAAM9Q,EAAI8Q,EAAI,CAAC,EAAI,IACbnT,EAAImT,EAAI,CAAC,EAAI,IACb1E,EAAI0E,EAAI,CAAC,EAAI,IACnB,IAAIpB,EACAD,EACAkY,EAEJ,GAAIhqB,IAAM,EACT,OAAAgqB,EAAMvb,EAAI,IACH,CAACub,EAAKA,EAAKA,CAAG,EAGlBvb,EAAI,GACPsD,EAAKtD,GAAK,EAAIzO,GAEd+R,EAAKtD,EAAIzO,EAAIyO,EAAIzO,EAGlB,MAAMgS,EAAK,EAAIvD,EAAIsD,EAEbjE,EAAM,CAAC,EAAG,EAAG,CAAC,EACpB,QAAS5I,EAAI,EAAGA,EAAI,EAAGA,IACtB4M,EAAKzP,EAAI,EAAI,EAAI,EAAE6C,EAAI,GACnB4M,EAAK,GACRA,IAGGA,EAAK,GACRA,IAGG,EAAIA,EAAK,EACZkY,EAAMhY,GAAMD,EAAKC,GAAM,EAAIF,EACjB,EAAIA,EAAK,EACnBkY,EAAMjY,EACI,EAAID,EAAK,EACnBkY,EAAMhY,GAAMD,EAAKC,IAAO,EAAI,EAAIF,GAAM,EAEtCkY,EAAMhY,EAGPlE,EAAI5I,CAAC,EAAI8kB,EAAM,IAGhB,OAAOlc,CACR,EAEAirB,EAAQ,IAAI,IAAM,SAAU5lB,EAAK,CAChC,MAAM9Q,EAAI8Q,EAAI,CAAC,EACf,IAAInT,EAAImT,EAAI,CAAC,EAAI,IACb1E,EAAI0E,EAAI,CAAC,EAAI,IACbymB,EAAO55B,EACX,MAAM65B,EAAO,KAAK,IAAIprB,EAAG,GAAI,EAE7BA,GAAK,EACLzO,GAAMyO,GAAK,EAAKA,EAAI,EAAIA,EACxBmrB,GAAQC,GAAQ,EAAIA,EAAO,EAAIA,EAC/B,MAAM5kB,GAAKxG,EAAIzO,GAAK,EACd85B,EAAKrrB,IAAM,EAAK,EAAImrB,GAASC,EAAOD,GAAS,EAAI55B,GAAMyO,EAAIzO,GAEjE,MAAO,CAACqC,EAAGy3B,EAAK,IAAK7kB,EAAI,GAAG,CAC7B,EAEA8jB,EAAQ,IAAI,IAAM,SAAUpS,EAAK,CAChC,MAAMtkB,EAAIskB,EAAI,CAAC,EAAI,GACb3mB,EAAI2mB,EAAI,CAAC,EAAI,IACnB,IAAI1R,EAAI0R,EAAI,CAAC,EAAI,IACjB,MAAMoT,EAAK,KAAK,MAAM13B,CAAC,EAAI,EAErB3D,EAAI2D,EAAI,KAAK,MAAMA,CAAC,EACpB2S,EAAI,IAAMC,GAAK,EAAIjV,GACnBF,EAAI,IAAMmV,GAAK,EAAKjV,EAAItB,GACxBjB,EAAI,IAAMwX,GAAK,EAAKjV,GAAK,EAAItB,IAGnC,OAFAuW,GAAK,IAEG8kB,EAAE,CACT,IAAK,GACJ,MAAO,CAAC9kB,EAAGxX,EAAGuX,CAAC,EAChB,IAAK,GACJ,MAAO,CAAClV,EAAGmV,EAAGD,CAAC,EAChB,IAAK,GACJ,MAAO,CAACA,EAAGC,EAAGxX,CAAC,EAChB,IAAK,GACJ,MAAO,CAACuX,EAAGlV,EAAGmV,CAAC,EAChB,IAAK,GACJ,MAAO,CAACxX,EAAGuX,EAAGC,CAAC,EAChB,IAAK,GACJ,MAAO,CAACA,EAAGD,EAAGlV,CAAC,CAChB,CACF,EAEAi5B,EAAQ,IAAI,IAAM,SAAUpS,EAAK,CAChC,MAAMtkB,EAAIskB,EAAI,CAAC,EACT3mB,EAAI2mB,EAAI,CAAC,EAAI,IACb1R,EAAI0R,EAAI,CAAC,EAAI,IACbqT,EAAO,KAAK,IAAI/kB,EAAG,GAAI,EAC7B,IAAI4e,EACAplB,EAEJA,GAAK,EAAIzO,GAAKiV,EACd,MAAM4kB,GAAQ,EAAI75B,GAAKg6B,EACvB,OAAAnG,EAAK7zB,EAAIg6B,EACTnG,GAAOgG,GAAQ,EAAKA,EAAO,EAAIA,EAC/BhG,EAAKA,GAAM,EACXplB,GAAK,EAEE,CAACpM,EAAGwxB,EAAK,IAAKplB,EAAI,GAAG,CAC7B,EAGAsqB,EAAQ,IAAI,IAAM,SAAUL,EAAK,CAChC,MAAMr2B,EAAIq2B,EAAI,CAAC,EAAI,IACnB,IAAIuB,EAAKvB,EAAI,CAAC,EAAI,IACdwB,EAAKxB,EAAI,CAAC,EAAI,IAClB,MAAMlxB,EAAQyyB,EAAKC,EACnB,IAAIx7B,EAGA8I,EAAQ,IACXyyB,GAAMzyB,EACN0yB,GAAM1yB,GAGP,MAAMtC,EAAI,KAAK,MAAM,EAAI7C,CAAC,EACpB4S,EAAI,EAAIilB,EACdx7B,EAAI,EAAI2D,EAAI6C,EAEPA,EAAI,IACRxG,EAAI,EAAIA,GAGT,MAAMS,EAAI86B,EAAKv7B,GAAKuW,EAAIglB,GAExB,IAAIr+B,EACAE,EACAb,EAEJ,OAAQiK,EAAC,CACR,QACA,IAAK,GACL,IAAK,GAAGtJ,EAAIqZ,EAAInZ,EAAIqD,EAAIlE,EAAIg/B,EAAI,MAChC,IAAK,GAAGr+B,EAAIuD,EAAIrD,EAAImZ,EAAIha,EAAIg/B,EAAI,MAChC,IAAK,GAAGr+B,EAAIq+B,EAAIn+B,EAAImZ,EAAIha,EAAIkE,EAAG,MAC/B,IAAK,GAAGvD,EAAIq+B,EAAIn+B,EAAIqD,EAAIlE,EAAIga,EAAG,MAC/B,IAAK,GAAGrZ,EAAIuD,EAAIrD,EAAIm+B,EAAIh/B,EAAIga,EAAG,MAC/B,IAAK,GAAGrZ,EAAIqZ,EAAInZ,EAAIm+B,EAAIh/B,EAAIkE,EAAG,KAC/B,CAGD,MAAO,CAACvD,EAAI,IAAKE,EAAI,IAAKb,EAAI,GAAG,CAClC,EAEA89B,EAAQ,KAAK,IAAM,SAAUoB,EAAM,CAClC,MAAMj/B,EAAIi/B,EAAK,CAAC,EAAI,IACdp6B,EAAIo6B,EAAK,CAAC,EAAI,IACd99B,EAAI89B,EAAK,CAAC,EAAI,IACdp7B,EAAIo7B,EAAK,CAAC,EAAI,IAEdv+B,EAAI,EAAI,KAAK,IAAI,EAAGV,GAAK,EAAI6D,GAAKA,CAAC,EACnCjD,EAAI,EAAI,KAAK,IAAI,EAAGiE,GAAK,EAAIhB,GAAKA,CAAC,EACnC9D,EAAI,EAAI,KAAK,IAAI,EAAGoB,GAAK,EAAI0C,GAAKA,CAAC,EAEzC,MAAO,CAACnD,EAAI,IAAKE,EAAI,IAAKb,EAAI,GAAG,CAClC,EAEA89B,EAAQ,IAAI,IAAM,SAAUz6B,EAAK,CAChC,MAAMlC,EAAIkC,EAAI,CAAC,EAAI,IACbjC,EAAIiC,EAAI,CAAC,EAAI,IACbhC,EAAIgC,EAAI,CAAC,EAAI,IACnB,IAAI1C,EACAE,EACAb,EAEJ,OAAAW,EAAKQ,EAAI,OAAWC,EAAI,QAAYC,EAAI,OACxCR,EAAKM,EAAI,OAAYC,EAAI,OAAWC,EAAI,MACxCrB,EAAKmB,EAAI,MAAWC,EAAI,MAAYC,EAAI,MAGxCV,EAAIA,EAAI,SACH,MAASA,IAAM,EAAM,KAAS,KAChCA,EAAI,MAEPE,EAAIA,EAAI,SACH,MAASA,IAAM,EAAM,KAAS,KAChCA,EAAI,MAEPb,EAAIA,EAAI,SACH,MAASA,IAAM,EAAM,KAAS,KAChCA,EAAI,MAEPW,EAAI,KAAK,IAAI,KAAK,IAAI,EAAGA,CAAC,EAAG,CAAC,EAC9BE,EAAI,KAAK,IAAI,KAAK,IAAI,EAAGA,CAAC,EAAG,CAAC,EAC9Bb,EAAI,KAAK,IAAI,KAAK,IAAI,EAAGA,CAAC,EAAG,CAAC,EAEvB,CAACW,EAAI,IAAKE,EAAI,IAAKb,EAAI,GAAG,CAClC,EAEA89B,EAAQ,IAAI,IAAM,SAAUz6B,EAAK,CAChC,IAAIlC,EAAIkC,EAAI,CAAC,EACTjC,EAAIiC,EAAI,CAAC,EACThC,EAAIgC,EAAI,CAAC,EAEblC,GAAK,OACLC,GAAK,IACLC,GAAK,QAELF,EAAIA,EAAI,QAAYA,IAAM,EAAI,GAAO,MAAQA,EAAM,GAAK,IACxDC,EAAIA,EAAI,QAAYA,IAAM,EAAI,GAAO,MAAQA,EAAM,GAAK,IACxDC,EAAIA,EAAI,QAAYA,IAAM,EAAI,GAAO,MAAQA,EAAM,GAAK,IAExD,MAAMmS,EAAK,IAAMpS,EAAK,GAChBsF,EAAI,KAAOvF,EAAIC,GACfpB,EAAI,KAAOoB,EAAIC,GAErB,MAAO,CAACmS,EAAG9M,EAAG1G,CAAC,CAChB,EAEA89B,EAAQ,IAAI,IAAM,SAAUtW,EAAK,CAChC,MAAMhU,EAAIgU,EAAI,CAAC,EACT,EAAIA,EAAI,CAAC,EACTxnB,EAAIwnB,EAAI,CAAC,EACf,IAAIrmB,EACAC,EACAC,EAEJD,GAAKoS,EAAI,IAAM,IACfrS,EAAI,EAAI,IAAMC,EACdC,EAAID,EAAIpB,EAAI,IAEZ,MAAMoM,EAAKhL,GAAK,EACV8oB,EAAK/oB,GAAK,EACVgpB,EAAK9oB,GAAK,EAChB,OAAAD,EAAIgL,EAAK,QAAWA,GAAMhL,EAAI,GAAK,KAAO,MAC1CD,EAAI+oB,EAAK,QAAWA,GAAM/oB,EAAI,GAAK,KAAO,MAC1CE,EAAI8oB,EAAK,QAAWA,GAAM9oB,EAAI,GAAK,KAAO,MAE1CF,GAAK,OACLC,GAAK,IACLC,GAAK,QAEE,CAACF,EAAGC,EAAGC,CAAC,CAChB,EAEAy8B,EAAQ,IAAI,IAAM,SAAUtW,EAAK,CAChC,MAAMhU,EAAIgU,EAAI,CAAC,EACT,EAAIA,EAAI,CAAC,EACTxnB,EAAIwnB,EAAI,CAAC,EACf,IAAIpgB,EAGJA,EADW,KAAK,MAAMpH,EAAG,CAAC,EACjB,IAAM,EAAI,KAAK,GAEpBoH,EAAI,IACPA,GAAK,KAGN,MAAMnH,EAAI,KAAK,KAAK,EAAI,EAAID,EAAIA,CAAC,EAEjC,MAAO,CAACwT,EAAGvT,EAAGmH,CAAC,CAChB,EAEA02B,EAAQ,IAAI,IAAM,SAAUzU,EAAK,CAChC,MAAM7V,EAAI6V,EAAI,CAAC,EACTppB,EAAIopB,EAAI,CAAC,EAGT8V,EAFI9V,EAAI,CAAC,EAEA,IAAM,EAAI,KAAK,GACxB3iB,EAAIzG,EAAI,KAAK,IAAIk/B,CAAE,EACnBn/B,EAAIC,EAAI,KAAK,IAAIk/B,CAAE,EAEzB,MAAO,CAAC3rB,EAAG9M,EAAG1G,CAAC,CAChB,EAEOo/B,EAAC,IAAI,OAAS,SAAU/xB,EAAMgyB,EAAa,KAAM,CACvD,KAAM,CAAC1+B,EAAGE,EAAGb,CAAC,EAAIqN,EAClB,IAAIgF,EAAQgtB,IAAe,KAAOvB,EAAQ,IAAI,IAAIzwB,CAAI,EAAE,CAAC,EAAIgyB,EAI7D,GAFAhtB,EAAQ,KAAK,MAAMA,EAAQ,EAAE,EAEzBA,IAAU,EACb,MAAO,IAGR,IAAIitB,EAAO,IACN,KAAK,MAAMt/B,EAAI,GAAG,GAAK,EACxB,KAAK,MAAMa,EAAI,GAAG,GAAK,EACxB,KAAK,MAAMF,EAAI,GAAG,GAErB,OAAI0R,IAAU,IACbitB,GAAQ,IAGFA,CACR,EAEAxB,EAAQ,IAAI,OAAS,SAAUzwB,EAAM,CAGpC,OAAOywB,EAAQ,IAAI,OAAOA,EAAQ,IAAI,IAAIzwB,CAAI,EAAGA,EAAK,CAAC,CAAC,CACzD,EAEAywB,EAAQ,IAAI,QAAU,SAAUzwB,EAAM,CACrC,MAAM1M,EAAI0M,EAAK,CAAC,EACVxM,EAAIwM,EAAK,CAAC,EACVrN,EAAIqN,EAAK,CAAC,EAIhB,OAAI1M,IAAME,GAAKA,IAAMb,EAChBW,EAAI,EACA,GAGJA,EAAI,IACA,IAGD,KAAK,OAAQA,EAAI,GAAK,IAAO,EAAE,EAAI,IAG9B,GACT,GAAK,KAAK,MAAMA,EAAI,IAAM,CAAC,EAC3B,EAAI,KAAK,MAAME,EAAI,IAAM,CAAC,EAC3B,KAAK,MAAMb,EAAI,IAAM,CAAC,CAG1B,EAEA89B,EAAQ,OAAO,IAAM,SAAUzwB,EAAM,CACpC,IAAIkyB,EAAQlyB,EAAO,GAGnB,GAAIkyB,IAAU,GAAKA,IAAU,EAC5B,OAAIlyB,EAAO,KACVkyB,GAAS,KAGVA,EAAQA,EAAQ,KAAO,IAEhB,CAACA,EAAOA,EAAOA,CAAK,EAG5B,MAAMC,GAAQ,CAAC,EAAEnyB,EAAO,IAAM,GAAK,GAC7B1M,GAAM4+B,EAAQ,GAAKC,EAAQ,IAC3B3+B,GAAO0+B,GAAS,EAAK,GAAKC,EAAQ,IAClCx/B,GAAOu/B,GAAS,EAAK,GAAKC,EAAQ,IAExC,MAAO,CAAC7+B,EAAGE,EAAGb,CAAC,CAChB,EAEA89B,EAAQ,QAAQ,IAAM,SAAUzwB,EAAM,CAErC,GAAIA,GAAQ,IAAK,CAChB,MAAMpN,GAAKoN,EAAO,KAAO,GAAK,EAC9B,MAAO,CAACpN,EAAGA,EAAGA,CAAC,CACf,CAEDoN,GAAQ,GAER,IAAIoyB,EACJ,MAAM9+B,EAAI,KAAK,MAAM0M,EAAO,EAAE,EAAI,EAAI,IAChCxM,EAAI,KAAK,OAAO4+B,EAAMpyB,EAAO,IAAM,CAAC,EAAI,EAAI,IAC5CrN,EAAKy/B,EAAM,EAAK,EAAI,IAE1B,MAAO,CAAC9+B,EAAGE,EAAGb,CAAC,CAChB,EAEA89B,EAAQ,IAAI,IAAM,SAAUzwB,EAAM,CAKjC,MAAM0vB,KAJY,KAAK,MAAM1vB,EAAK,CAAC,CAAC,EAAI,MAAS,MAC5C,KAAK,MAAMA,EAAK,CAAC,CAAC,EAAI,MAAS,IAChC,KAAK,MAAMA,EAAK,CAAC,CAAC,EAAI,MAEH,SAAS,EAAE,EAAE,YAAW,EAC/C,MAAO,SAAS,UAAU0vB,EAAO,MAAM,EAAIA,CAC5C,EAEAe,EAAQ,IAAI,IAAM,SAAUzwB,EAAM,CACjC,MAAMgwB,EAAQhwB,EAAK,SAAS,EAAE,EAAE,MAAM,0BAA0B,EAChE,GAAI,CAACgwB,EACJ,MAAO,CAAC,EAAG,EAAG,CAAC,EAGhB,IAAIqC,EAAcrC,EAAM,CAAC,EAErBA,EAAM,CAAC,EAAE,SAAW,IACvBqC,EAAcA,EAAY,MAAM,EAAE,EAAE,IAAIC,GAChCA,EAAOA,CACd,EAAE,KAAK,EAAE,GAGX,MAAMC,EAAU,SAASF,EAAa,EAAE,EAClC/+B,EAAKi/B,GAAW,GAAM,IACtB/+B,EAAK++B,GAAW,EAAK,IACrB5/B,EAAI4/B,EAAU,IAEpB,MAAO,CAACj/B,EAAGE,EAAGb,CAAC,CAChB,EAEA89B,EAAQ,IAAI,IAAM,SAAUjrB,EAAK,CAChC,MAAMlS,EAAIkS,EAAI,CAAC,EAAI,IACbhS,EAAIgS,EAAI,CAAC,EAAI,IACb7S,EAAI6S,EAAI,CAAC,EAAI,IACbrT,EAAM,KAAK,IAAI,KAAK,IAAImB,EAAGE,CAAC,EAAGb,CAAC,EAChCT,EAAM,KAAK,IAAI,KAAK,IAAIoB,EAAGE,CAAC,EAAGb,CAAC,EAChC2E,EAAUnF,EAAMD,EACtB,IAAIsgC,EACAn7B,EAEJ,OAAIC,EAAS,EACZk7B,EAAYtgC,GAAO,EAAIoF,GAEvBk7B,EAAY,EAGTl7B,GAAU,EACbD,EAAM,EAEHlF,IAAQmB,EACX+D,GAAQ7D,EAAIb,GAAK2E,EAAU,EAExBnF,IAAQqB,EACX6D,EAAM,GAAK1E,EAAIW,GAAKgE,EAEpBD,EAAM,GAAK/D,EAAIE,GAAK8D,EAGrBD,GAAO,EACPA,GAAO,EAEA,CAACA,EAAM,IAAKC,EAAS,IAAKk7B,EAAY,GAAG,CACjD,EAEA/B,EAAQ,IAAI,IAAM,SAAU5lB,EAAK,CAChC,MAAMnT,EAAImT,EAAI,CAAC,EAAI,IACb1E,EAAI0E,EAAI,CAAC,EAAI,IAEbjY,EAAIuT,EAAI,GAAO,EAAMzO,EAAIyO,EAAM,EAAMzO,GAAK,EAAMyO,GAEtD,IAAI/P,EAAI,EACR,OAAIxD,EAAI,IACPwD,GAAK+P,EAAI,GAAMvT,IAAM,EAAMA,IAGrB,CAACiY,EAAI,CAAC,EAAGjY,EAAI,IAAKwD,EAAI,GAAG,CACjC,EAEAq6B,EAAQ,IAAI,IAAM,SAAUpS,EAAK,CAChC,MAAM3mB,EAAI2mB,EAAI,CAAC,EAAI,IACb1R,EAAI0R,EAAI,CAAC,EAAI,IAEbzrB,EAAI8E,EAAIiV,EACd,IAAIvW,EAAI,EAER,OAAIxD,EAAI,IACPwD,GAAKuW,EAAI/Z,IAAM,EAAIA,IAGb,CAACyrB,EAAI,CAAC,EAAGzrB,EAAI,IAAKwD,EAAI,GAAG,CACjC,EAEAq6B,EAAQ,IAAI,IAAM,SAAUzS,EAAK,CAChC,MAAMjkB,EAAIikB,EAAI,CAAC,EAAI,IACbprB,EAAIorB,EAAI,CAAC,EAAI,IACbxqB,EAAIwqB,EAAI,CAAC,EAAI,IAEnB,GAAIprB,IAAM,EACT,MAAO,CAACY,EAAI,IAAKA,EAAI,IAAKA,EAAI,GAAG,EAGlC,MAAMi/B,EAAO,CAAC,EAAG,EAAG,CAAC,EACfhB,EAAM13B,EAAI,EAAK,EACf4S,EAAI8kB,EAAK,EACTpS,EAAI,EAAI1S,EACd,IAAI+lB,EAAK,EAGT,OAAQ,KAAK,MAAMjB,CAAE,EAAC,CACrB,IAAK,GACJgB,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAI9lB,EAAG8lB,EAAK,CAAC,EAAI,EAAG,MACxC,IAAK,GACJA,EAAK,CAAC,EAAIpT,EAAGoT,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAI,EAAG,MACxC,IAAK,GACJA,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAI9lB,EAAG,MACxC,IAAK,GACJ8lB,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAIpT,EAAGoT,EAAK,CAAC,EAAI,EAAG,MACxC,IAAK,GACJA,EAAK,CAAC,EAAI9lB,EAAG8lB,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAI,EAAG,MACxC,QACCA,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAI,EAAGA,EAAK,CAAC,EAAIpT,CACrC,CAGD,OAAAqT,GAAM,EAAM9/B,GAAKY,EAEV,EACLZ,EAAI6/B,EAAK,CAAC,EAAIC,GAAM,KACpB9/B,EAAI6/B,EAAK,CAAC,EAAIC,GAAM,KACpB9/B,EAAI6/B,EAAK,CAAC,EAAIC,GAAM,GACvB,CACA,EAEAjC,EAAQ,IAAI,IAAM,SAAUzS,EAAK,CAChC,MAAMprB,EAAIorB,EAAI,CAAC,EAAI,IACbxqB,EAAIwqB,EAAI,CAAC,EAAI,IAEbrR,EAAI/Z,EAAIY,GAAK,EAAMZ,GACzB,IAAIwD,EAAI,EAER,OAAIuW,EAAI,IACPvW,EAAIxD,EAAI+Z,GAGF,CAACqR,EAAI,CAAC,EAAG5nB,EAAI,IAAKuW,EAAI,GAAG,CACjC,EAEA8jB,EAAQ,IAAI,IAAM,SAAUzS,EAAK,CAChC,MAAMprB,EAAIorB,EAAI,CAAC,EAAI,IAGb7X,EAFI6X,EAAI,CAAC,EAAI,KAEJ,EAAMprB,GAAK,GAAMA,EAChC,IAAI,EAAI,EAER,OAAIuT,EAAI,GAAOA,EAAI,GAClB,EAAIvT,GAAK,EAAIuT,GAEVA,GAAK,IAAOA,EAAI,IACnB,EAAIvT,GAAK,GAAK,EAAIuT,KAGZ,CAAC6X,EAAI,CAAC,EAAG,EAAI,IAAK7X,EAAI,GAAG,CACjC,EAEAsqB,EAAQ,IAAI,IAAM,SAAUzS,EAAK,CAChC,MAAMprB,EAAIorB,EAAI,CAAC,EAAI,IACbxqB,EAAIwqB,EAAI,CAAC,EAAI,IACbrR,EAAI/Z,EAAIY,GAAK,EAAMZ,GACzB,MAAO,CAACorB,EAAI,CAAC,GAAIrR,EAAI/Z,GAAK,KAAM,EAAI+Z,GAAK,GAAG,CAC7C,EAEA8jB,EAAQ,IAAI,IAAM,SAAUL,EAAK,CAChC,MAAM/Q,EAAI+Q,EAAI,CAAC,EAAI,IAEbzjB,EAAI,EADAyjB,EAAI,CAAC,EAAI,IAEbx9B,EAAI+Z,EAAI0S,EACd,IAAI7rB,EAAI,EAER,OAAIZ,EAAI,IACPY,GAAKmZ,EAAI/Z,IAAM,EAAIA,IAGb,CAACw9B,EAAI,CAAC,EAAGx9B,EAAI,IAAKY,EAAI,GAAG,CACjC,EAEAi9B,EAAQ,MAAM,IAAM,SAAUkC,EAAO,CACpC,MAAO,CAAEA,EAAM,CAAC,EAAI,MAAS,IAAMA,EAAM,CAAC,EAAI,MAAS,IAAMA,EAAM,CAAC,EAAI,MAAS,GAAG,CACrF,EAEAlC,EAAQ,IAAI,MAAQ,SAAUjrB,EAAK,CAClC,MAAO,CAAEA,EAAI,CAAC,EAAI,IAAO,MAAQA,EAAI,CAAC,EAAI,IAAO,MAAQA,EAAI,CAAC,EAAI,IAAO,KAAK,CAC/E,EAEAirB,EAAQ,KAAK,IAAM,SAAUzwB,EAAM,CAClC,MAAO,CAACA,EAAK,CAAC,EAAI,IAAM,IAAKA,EAAK,CAAC,EAAI,IAAM,IAAKA,EAAK,CAAC,EAAI,IAAM,GAAG,CACtE,EAEAywB,EAAQ,KAAK,IAAM,SAAUzwB,EAAM,CAClC,MAAO,CAAC,EAAG,EAAGA,EAAK,CAAC,CAAC,CACtB,EAEO+xB,EAAC,KAAK,IAAMtB,EAAQ,KAAK,IAEhCA,EAAQ,KAAK,IAAM,SAAUmC,EAAM,CAClC,MAAO,CAAC,EAAG,IAAKA,EAAK,CAAC,CAAC,CACxB,EAEAnC,EAAQ,KAAK,KAAO,SAAUmC,EAAM,CACnC,MAAO,CAAC,EAAG,EAAG,EAAGA,EAAK,CAAC,CAAC,CACzB,EAEAnC,EAAQ,KAAK,IAAM,SAAUmC,EAAM,CAClC,MAAO,CAACA,EAAK,CAAC,EAAG,EAAG,CAAC,CACtB,EAEAnC,EAAQ,KAAK,IAAM,SAAUmC,EAAM,CAClC,MAAMlR,EAAM,KAAK,MAAMkR,EAAK,CAAC,EAAI,IAAM,GAAG,EAAI,IAGxClD,IAFWhO,GAAO,KAAOA,GAAO,GAAKA,GAEpB,SAAS,EAAE,EAAE,YAAW,EAC/C,MAAO,SAAS,UAAUgO,EAAO,MAAM,EAAIA,CAC5C,EAEAe,EAAQ,IAAI,KAAO,SAAUjrB,EAAK,CAEjC,MAAO,EADMA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIA,EAAI,CAAC,GAAK,EAC3B,IAAM,GAAG,CACxB,ECt0BA,MAAMkrB,GAAc9B,GAapB,SAASiE,IAAa,CACrB,MAAMC,EAAQ,CAAA,EAERC,EAAS,OAAO,KAAKrC,EAAW,EAEtC,QAAS9pB,EAAMmsB,EAAO,OAAQn2B,EAAI,EAAGA,EAAIgK,EAAKhK,IAC7Ck2B,EAAMC,EAAOn2B,CAAC,CAAC,EAAI,CAGlB,SAAU,GACV,OAAQ,IACX,EAGC,OAAOk2B,CACR,CAGA,SAASE,GAAUC,EAAW,CAC7B,MAAMH,EAAQD,KACRK,EAAQ,CAACD,CAAS,EAIxB,IAFAH,EAAMG,CAAS,EAAE,SAAW,EAErBC,EAAM,QAAQ,CACpB,MAAMC,EAAUD,EAAM,MAChBE,EAAY,OAAO,KAAK1C,GAAYyC,CAAO,CAAC,EAElD,QAASvsB,EAAMwsB,EAAU,OAAQx2B,EAAI,EAAGA,EAAIgK,EAAKhK,IAAK,CACrD,MAAMy2B,EAAWD,EAAUx2B,CAAC,EACtB02B,EAAOR,EAAMO,CAAQ,EAEvBC,EAAK,WAAa,KACrBA,EAAK,SAAWR,EAAMK,CAAO,EAAE,SAAW,EAC1CG,EAAK,OAASH,EACdD,EAAM,QAAQG,CAAQ,EAEvB,CACD,CAED,OAAOP,CACR,CAEA,SAASS,GAAKC,EAAMC,EAAI,CACvB,OAAO,SAAUzzB,EAAM,CACtB,OAAOyzB,EAAGD,EAAKxzB,CAAI,CAAC,CACtB,CACA,CAEA,SAAS0zB,GAAeC,EAASb,EAAO,CACvC,MAAMc,EAAO,CAACd,EAAMa,CAAO,EAAE,OAAQA,CAAO,EAC5C,IAAIxE,EAAKuB,GAAYoC,EAAMa,CAAO,EAAE,MAAM,EAAEA,CAAO,EAE/CE,EAAMf,EAAMa,CAAO,EAAE,OACzB,KAAOb,EAAMe,CAAG,EAAE,QACjBD,EAAK,QAAQd,EAAMe,CAAG,EAAE,MAAM,EAC9B1E,EAAKoE,GAAK7C,GAAYoC,EAAMe,CAAG,EAAE,MAAM,EAAEA,CAAG,EAAG1E,CAAE,EACjD0E,EAAMf,EAAMe,CAAG,EAAE,OAGlB,OAAA1E,EAAG,WAAayE,EACTzE,CACR,KAEA2E,GAAiB,SAAUb,EAAW,CACrC,MAAMH,EAAQE,GAAUC,CAAS,EAC3Bc,EAAa,CAAA,EAEbhB,EAAS,OAAO,KAAKD,CAAK,EAChC,QAASlsB,EAAMmsB,EAAO,OAAQn2B,EAAI,EAAGA,EAAIgK,EAAKhK,IAAK,CAClD,MAAM+2B,EAAUZ,EAAOn2B,CAAC,EACXk2B,EAAMa,CAAO,EAEjB,SAAW,OAKpBI,EAAWJ,CAAO,EAAID,GAAeC,EAASb,CAAK,EACnD,CAED,OAAOiB,CACR,EC/FA,MAAMrD,GAAc9B,GACdkF,GAAQzE,GAERoB,GAAU,CAAA,EAEVsC,GAAS,OAAO,KAAKrC,EAAW,EAEtC,SAASsD,GAAQ7E,EAAI,CACpB,MAAM8E,EAAY,YAAaj0B,EAAM,CACpC,MAAMk0B,EAAOl0B,EAAK,CAAC,EACnB,OAA0Bk0B,GAAS,KAC3BA,GAGJA,EAAK,OAAS,IACjBl0B,EAAOk0B,GAGD/E,EAAGnvB,CAAI,EAChB,EAGC,MAAI,eAAgBmvB,IACnB8E,EAAU,WAAa9E,EAAG,YAGpB8E,CACR,CAEA,SAASE,GAAYhF,EAAI,CACxB,MAAM8E,EAAY,YAAaj0B,EAAM,CACpC,MAAMk0B,EAAOl0B,EAAK,CAAC,EAEnB,GAA0Bk0B,GAAS,KAClC,OAAOA,EAGJA,EAAK,OAAS,IACjBl0B,EAAOk0B,GAGR,MAAMxR,EAASyM,EAAGnvB,CAAI,EAKtB,GAAI,OAAO0iB,GAAW,SACrB,QAAS9b,EAAM8b,EAAO,OAAQ9lB,EAAI,EAAGA,EAAIgK,EAAKhK,IAC7C8lB,EAAO9lB,CAAC,EAAI,KAAK,MAAM8lB,EAAO9lB,CAAC,CAAC,EAIlC,OAAO8lB,CACT,EAGC,MAAI,eAAgByM,IACnB8E,EAAU,WAAa9E,EAAG,YAGpB8E,CACR,CAEAlB,GAAO,QAAQE,GAAa,CAC3BxC,GAAQwC,CAAS,EAAI,GAErB,OAAO,eAAexC,GAAQwC,CAAS,EAAG,WAAY,CAAC,MAAOvC,GAAYuC,CAAS,EAAE,QAAQ,CAAC,EAC9F,OAAO,eAAexC,GAAQwC,CAAS,EAAG,SAAU,CAAC,MAAOvC,GAAYuC,CAAS,EAAE,MAAM,CAAC,EAE1F,MAAMmB,EAASN,GAAMb,CAAS,EACV,OAAO,KAAKmB,CAAM,EAE1B,QAAQT,GAAW,CAC9B,MAAMxE,EAAKiF,EAAOT,CAAO,EAEzBlD,GAAQwC,CAAS,EAAEU,CAAO,EAAIQ,GAAYhF,CAAE,EAC5CsB,GAAQwC,CAAS,EAAEU,CAAO,EAAE,IAAMK,GAAQ7E,CAAE,CAC9C,CAAE,CACF,CAAC,EAED,IAAAkF,GAAiB5D,GChFjB,MAAM4B,GAAczD,GACd6B,GAAUpB,GAEViF,GAAgB,CAErB,UAGA,OAGA,KACD,EAEMC,GAAkB,CAAA,EACxB,UAAW3E,KAAS,OAAO,KAAKa,EAAO,EACtC8D,GAAgB,CAAC,GAAG9D,GAAQb,CAAK,EAAE,MAAM,EAAE,KAAI,EAAG,KAAK,EAAE,CAAC,EAAIA,EAG/D,MAAM4E,GAAW,CAAA,EAEjB,SAASxI,GAAMyI,EAAQ7E,EAAO,CAC7B,GAAI,EAAE,gBAAgB5D,IACrB,OAAO,IAAIA,GAAMyI,EAAQ7E,CAAK,EAO/B,GAJIA,GAASA,KAAS0E,KACrB1E,EAAQ,MAGLA,GAAS,EAAEA,KAASa,IACvB,MAAM,IAAI,MAAM,kBAAoBb,CAAK,EAG1C,IAAIhzB,EACA+zB,EAEJ,GAAI8D,GAAU,KACb,KAAK,MAAQ,MACb,KAAK,MAAQ,CAAC,EAAG,EAAG,CAAC,EACrB,KAAK,OAAS,UACJA,aAAkBzI,GAC5B,KAAK,MAAQyI,EAAO,MACpB,KAAK,MAAQ,CAAC,GAAGA,EAAO,KAAK,EAC7B,KAAK,OAASA,EAAO,eACX,OAAOA,GAAW,SAAU,CACtC,MAAM/R,EAAS2P,GAAY,IAAIoC,CAAM,EACrC,GAAI/R,IAAW,KACd,MAAM,IAAI,MAAM,sCAAwC+R,CAAM,EAG/D,KAAK,MAAQ/R,EAAO,MACpBiO,EAAWF,GAAQ,KAAK,KAAK,EAAE,SAC/B,KAAK,MAAQ/N,EAAO,MAAM,MAAM,EAAGiO,CAAQ,EAC3C,KAAK,OAAS,OAAOjO,EAAO,MAAMiO,CAAQ,GAAM,SAAWjO,EAAO,MAAMiO,CAAQ,EAAI,CACtF,SAAY8D,EAAO,OAAS,EAAG,CAC7B,KAAK,MAAQ7E,GAAS,MACtBe,EAAWF,GAAQ,KAAK,KAAK,EAAE,SAC/B,MAAMiE,EAAW,MAAM,UAAU,MAAM,KAAKD,EAAQ,EAAG9D,CAAQ,EAC/D,KAAK,MAAQgE,GAAUD,EAAU/D,CAAQ,EACzC,KAAK,OAAS,OAAO8D,EAAO9D,CAAQ,GAAM,SAAW8D,EAAO9D,CAAQ,EAAI,CAC1E,SAAY,OAAO8D,GAAW,SAE5B,KAAK,MAAQ,MACb,KAAK,MAAQ,CACXA,GAAU,GAAM,IAChBA,GAAU,EAAK,IAChBA,EAAS,GACZ,EACE,KAAK,OAAS,MACR,CACN,KAAK,OAAS,EAEd,MAAMG,EAAO,OAAO,KAAKH,CAAM,EAC3B,UAAWA,IACdG,EAAK,OAAOA,EAAK,QAAQ,OAAO,EAAG,CAAC,EACpC,KAAK,OAAS,OAAOH,EAAO,OAAU,SAAWA,EAAO,MAAQ,GAGjE,MAAMI,EAAaD,EAAK,KAAM,EAAC,KAAK,EAAE,EACtC,GAAI,EAAEC,KAAcN,IACnB,MAAM,IAAI,MAAM,sCAAwC,KAAK,UAAUE,CAAM,CAAC,EAG/E,KAAK,MAAQF,GAAgBM,CAAU,EAEvC,KAAM,CAAC,OAAAjE,CAAM,EAAIH,GAAQ,KAAK,KAAK,EAC7ByB,EAAQ,CAAA,EACd,IAAKt1B,EAAI,EAAGA,EAAIg0B,EAAO,OAAQh0B,IAC9Bs1B,EAAM,KAAKuC,EAAO7D,EAAOh0B,CAAC,CAAC,CAAC,EAG7B,KAAK,MAAQ+3B,GAAUzC,CAAK,CAC5B,CAGD,GAAIsC,GAAS,KAAK,KAAK,EAEtB,IADA7D,EAAWF,GAAQ,KAAK,KAAK,EAAE,SAC1B7zB,EAAI,EAAGA,EAAI+zB,EAAU/zB,IAAK,CAC9B,MAAMoS,EAAQwlB,GAAS,KAAK,KAAK,EAAE53B,CAAC,EAChCoS,IACH,KAAK,MAAMpS,CAAC,EAAIoS,EAAM,KAAK,MAAMpS,CAAC,CAAC,EAEpC,CAGF,KAAK,OAAS,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,MAAM,CAAC,EAE9C,OAAO,QACV,OAAO,OAAO,IAAI,CAEpB,CAEAovB,GAAM,UAAY,CACjB,UAAW,CACV,OAAO,KAAK,QACZ,EAED,QAAS,CACR,OAAO,KAAK,KAAK,KAAK,GACtB,EAED,OAAO8I,EAAQ,CACd,IAAIC,EAAO,KAAK,SAAS1C,GAAY,GAAK,KAAO,KAAK,MACtD0C,EAAOA,EAAK,MAAM,OAAOD,GAAW,SAAWA,EAAS,CAAC,EACzD,MAAM90B,EAAO+0B,EAAK,SAAW,EAAIA,EAAK,MAAQ,CAAC,GAAGA,EAAK,MAAO,KAAK,MAAM,EACzE,OAAO1C,GAAY,GAAG0C,EAAK,KAAK,EAAE/0B,CAAI,CACtC,EAED,cAAc80B,EAAQ,CACrB,MAAMC,EAAO,KAAK,MAAM,MAAM,OAAOD,GAAW,SAAWA,EAAS,CAAC,EAC/D90B,EAAO+0B,EAAK,SAAW,EAAIA,EAAK,MAAQ,CAAC,GAAGA,EAAK,MAAO,KAAK,MAAM,EACzE,OAAO1C,GAAY,GAAG,IAAI,QAAQryB,CAAI,CACtC,EAED,OAAQ,CACP,OAAO,KAAK,SAAW,EAAI,CAAC,GAAG,KAAK,KAAK,EAAI,CAAC,GAAG,KAAK,MAAO,KAAK,MAAM,CACxE,EAED,QAAS,CACR,MAAM0iB,EAAS,CAAA,EACT,CAAC,SAAAiO,CAAQ,EAAIF,GAAQ,KAAK,KAAK,EAC/B,CAAC,OAAAG,CAAM,EAAIH,GAAQ,KAAK,KAAK,EAEnC,QAAS7zB,EAAI,EAAGA,EAAI+zB,EAAU/zB,IAC7B8lB,EAAOkO,EAAOh0B,CAAC,CAAC,EAAI,KAAK,MAAMA,CAAC,EAGjC,OAAI,KAAK,SAAW,IACnB8lB,EAAO,MAAQ,KAAK,QAGdA,CACP,EAED,WAAY,CACX,MAAMld,EAAM,KAAK,IAAG,EAAG,MACvB,OAAAA,EAAI,CAAC,GAAK,IACVA,EAAI,CAAC,GAAK,IACVA,EAAI,CAAC,GAAK,IAEN,KAAK,SAAW,GACnBA,EAAI,KAAK,KAAK,MAAM,EAGdA,CACP,EAED,YAAa,CACZ,MAAMA,EAAM,KAAK,IAAK,EAAC,OAAM,EAC7B,OAAAA,EAAI,GAAK,IACTA,EAAI,GAAK,IACTA,EAAI,GAAK,IAEL,KAAK,SAAW,IACnBA,EAAI,MAAQ,KAAK,QAGXA,CACP,EAED,MAAMsvB,EAAQ,CACb,OAAAA,EAAS,KAAK,IAAIA,GAAU,EAAG,CAAC,EACzB,IAAI9I,GAAM,CAAC,GAAG,KAAK,MAAM,IAAIgJ,GAAaF,CAAM,CAAC,EAAG,KAAK,MAAM,EAAG,KAAK,KAAK,CACnF,EAED,MAAM9vB,EAAO,CACZ,OAAIA,IAAU,OACN,IAAIgnB,GAAM,CAAC,GAAG,KAAK,MAAO,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGhnB,CAAK,CAAC,CAAC,EAAG,KAAK,KAAK,EAGvE,KAAK,MACZ,EAGD,IAAKiwB,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAChC,MAAOD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAClC,KAAMD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAEjC,IAAKD,GAAO,CAAC,MAAO,MAAO,MAAO,MAAO,KAAK,EAAG,EAAGjwB,IAAWA,EAAQ,IAAO,KAAO,GAAG,EAExF,YAAaiwB,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EACxC,UAAWD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAEtC,YAAaD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EACxC,MAAOD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAElC,OAAQD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EACnC,KAAMD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAEjC,MAAOD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAClC,OAAQD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAEnC,KAAMD,GAAO,OAAQ,EAAGC,GAAM,GAAG,CAAC,EAClC,QAASD,GAAO,OAAQ,EAAGC,GAAM,GAAG,CAAC,EACrC,OAAQD,GAAO,OAAQ,EAAGC,GAAM,GAAG,CAAC,EACpC,MAAOD,GAAO,OAAQ,EAAGC,GAAM,GAAG,CAAC,EAEnC,EAAGD,GAAO,MAAO,EAAGC,GAAM,MAAM,CAAC,EACjC,EAAGD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAC9B,EAAGD,GAAO,MAAO,EAAGC,GAAM,OAAO,CAAC,EAElC,EAAGD,GAAO,MAAO,EAAGC,GAAM,GAAG,CAAC,EAC9B,EAAGD,GAAO,MAAO,CAAC,EAClB,EAAGA,GAAO,MAAO,CAAC,EAElB,QAAQjwB,EAAO,CACd,OAAIA,IAAU,OACN,IAAIgnB,GAAMhnB,CAAK,EAGhByrB,GAAQ,KAAK,KAAK,EAAE,QAAQ,KAAK,KAAK,CAC7C,EAED,IAAIzrB,EAAO,CACV,OAAIA,IAAU,OACN,IAAIgnB,GAAMhnB,CAAK,EAGhBqtB,GAAY,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK,CAClD,EAED,KAAKrtB,EAAO,CACX,GAAIA,IAAU,OACb,OAAO,IAAIgnB,GAAMhnB,CAAK,EAGvB,MAAMmwB,EAAW,KAAK,IAAK,EAAC,MAAK,EAAG,MAEpC,IAAIC,EAAW,KAAK,MAAM,KAAK,OAAS,GAAG,EAAE,SAAS,EAAE,EAAE,YAAW,EACrE,OAAIA,EAAS,SAAW,IACvBA,EAAW,IAAMA,GAGX/C,GAAY,GAAG,IAAI8C,CAAQ,EAAIC,CACtC,EAED,WAAY,CACX,MAAM5vB,EAAM,KAAK,IAAG,EAAG,MACvB,OAASA,EAAI,CAAC,EAAI,MAAS,IAAQA,EAAI,CAAC,EAAI,MAAS,EAAMA,EAAI,CAAC,EAAI,GACpE,EAED,YAAa,CAEZ,MAAMA,EAAM,KAAK,IAAG,EAAG,MAEjBqV,EAAM,CAAA,EACZ,SAAW,CAACje,EAAGy4B,CAAO,IAAK7vB,EAAI,QAAO,EAAI,CACzC,MAAM8vB,EAAOD,EAAU,IACvBxa,EAAIje,CAAC,EAAK04B,GAAQ,OAAWA,EAAO,QAAUA,EAAO,MAAS,QAAU,GACxE,CAED,MAAO,OAASza,EAAI,CAAC,EAAI,MAASA,EAAI,CAAC,EAAI,MAASA,EAAI,CAAC,CACzD,EAED,SAAS0a,EAAQ,CAEhB,MAAMC,EAAO,KAAK,aACZC,EAAOF,EAAO,aAEpB,OAAIC,EAAOC,GACFD,EAAO,MAASC,EAAO,MAGxBA,EAAO,MAASD,EAAO,IAC/B,EAED,MAAMD,EAAQ,CAEb,MAAMG,EAAgB,KAAK,SAASH,CAAM,EAC1C,OAAIG,GAAiB,EACb,MAGAA,GAAiB,IAAO,KAAO,EACvC,EAED,QAAS,CAER,MAAMlwB,EAAM,KAAK,IAAG,EAAG,MAEvB,OADaA,EAAI,CAAC,EAAI,KAAOA,EAAI,CAAC,EAAI,KAAOA,EAAI,CAAC,EAAI,KAAO,IAChD,GACb,EAED,SAAU,CACT,MAAO,CAAC,KAAK,QACb,EAED,QAAS,CACR,MAAMA,EAAM,KAAK,MACjB,QAAS5I,EAAI,EAAGA,EAAI,EAAGA,IACtB4I,EAAI,MAAM5I,CAAC,EAAI,IAAM4I,EAAI,MAAM5I,CAAC,EAGjC,OAAO4I,CACP,EAED,QAAQtG,EAAO,CACd,MAAM2L,EAAM,KAAK,MACjB,OAAAA,EAAI,MAAM,CAAC,GAAKA,EAAI,MAAM,CAAC,EAAI3L,EACxB2L,CACP,EAED,OAAO3L,EAAO,CACb,MAAM2L,EAAM,KAAK,MACjB,OAAAA,EAAI,MAAM,CAAC,GAAKA,EAAI,MAAM,CAAC,EAAI3L,EACxB2L,CACP,EAED,SAAS3L,EAAO,CACf,MAAM2L,EAAM,KAAK,MACjB,OAAAA,EAAI,MAAM,CAAC,GAAKA,EAAI,MAAM,CAAC,EAAI3L,EACxB2L,CACP,EAED,WAAW3L,EAAO,CACjB,MAAM2L,EAAM,KAAK,MACjB,OAAAA,EAAI,MAAM,CAAC,GAAKA,EAAI,MAAM,CAAC,EAAI3L,EACxB2L,CACP,EAED,OAAO3L,EAAO,CACb,MAAMkxB,EAAM,KAAK,MACjB,OAAAA,EAAI,MAAM,CAAC,GAAKA,EAAI,MAAM,CAAC,EAAIlxB,EACxBkxB,CACP,EAED,QAAQlxB,EAAO,CACd,MAAMkxB,EAAM,KAAK,MACjB,OAAAA,EAAI,MAAM,CAAC,GAAKA,EAAI,MAAM,CAAC,EAAIlxB,EACxBkxB,CACP,EAED,WAAY,CAEX,MAAM5qB,EAAM,KAAK,IAAG,EAAG,MACjBR,EAAQQ,EAAI,CAAC,EAAI,GAAMA,EAAI,CAAC,EAAI,IAAOA,EAAI,CAAC,EAAI,IACtD,OAAOwmB,GAAM,IAAIhnB,EAAOA,EAAOA,CAAK,CACpC,EAED,KAAK9F,EAAO,CACX,OAAO,KAAK,MAAM,KAAK,OAAU,KAAK,OAASA,CAAM,CACrD,EAED,QAAQA,EAAO,CACd,OAAO,KAAK,MAAM,KAAK,OAAU,KAAK,OAASA,CAAM,CACrD,EAED,OAAO3M,EAAS,CACf,MAAMsY,EAAM,KAAK,MACjB,IAAIxT,EAAMwT,EAAI,MAAM,CAAC,EACrB,OAAAxT,GAAOA,EAAM9E,GAAW,IACxB8E,EAAMA,EAAM,EAAI,IAAMA,EAAMA,EAC5BwT,EAAI,MAAM,CAAC,EAAIxT,EACRwT,CACP,EAED,IAAI8qB,EAAYC,EAAQ,CAGvB,GAAI,CAACD,GAAc,CAACA,EAAW,IAC9B,MAAM,IAAI,MAAM,yEAA2E,OAAOA,CAAU,EAG7G,MAAME,EAASF,EAAW,MACpBJ,EAAS,KAAK,MACd7oB,EAAIkpB,IAAW,OAAY,GAAMA,EAEjCvW,EAAI,EAAI3S,EAAI,EACZrT,EAAIw8B,EAAO,MAAO,EAAGN,EAAO,MAAK,EAEjCO,IAAQzW,EAAIhmB,IAAM,GAAMgmB,GAAKA,EAAIhmB,IAAM,EAAIgmB,EAAIhmB,IAAM,GAAK,EAC1D08B,EAAK,EAAID,EAEf,OAAO9J,GAAM,IACZ8J,EAAKD,EAAO,IAAG,EAAKE,EAAKR,EAAO,IAAK,EACrCO,EAAKD,EAAO,MAAK,EAAKE,EAAKR,EAAO,MAAO,EACzCO,EAAKD,EAAO,KAAI,EAAKE,EAAKR,EAAO,KAAM,EACvCM,EAAO,MAAO,EAAGnpB,EAAI6oB,EAAO,SAAW,EAAI7oB,EAAE,CAC9C,CACF,EAGA,UAAWkjB,KAAS,OAAO,KAAKa,EAAO,EAAG,CACzC,GAAI6D,GAAc,SAAS1E,CAAK,EAC/B,SAGD,KAAM,CAAC,SAAAe,CAAQ,EAAIF,GAAQb,CAAK,EAGhC5D,GAAM,UAAU4D,CAAK,EAAI,YAAa5vB,EAAM,CAC3C,OAAI,KAAK,QAAU4vB,EACX,IAAI5D,GAAM,IAAI,EAGlBhsB,EAAK,OAAS,EACV,IAAIgsB,GAAMhsB,EAAM4vB,CAAK,EAGtB,IAAI5D,GAAM,CAAC,GAAGgK,GAAYvF,GAAQ,KAAK,KAAK,EAAEb,CAAK,EAAE,IAAI,KAAK,KAAK,CAAC,EAAG,KAAK,MAAM,EAAGA,CAAK,CACnG,EAGC5D,GAAM4D,CAAK,EAAI,YAAa5vB,EAAM,CACjC,IAAIkyB,EAAQlyB,EAAK,CAAC,EAClB,OAAI,OAAOkyB,GAAU,WACpBA,EAAQyC,GAAU30B,EAAM2wB,CAAQ,GAG1B,IAAI3E,GAAMkG,EAAOtC,CAAK,CAC/B,CACA,CAEA,SAASqG,GAAQC,EAAQpB,EAAQ,CAChC,OAAO,OAAOoB,EAAO,QAAQpB,CAAM,CAAC,CACrC,CAEA,SAASE,GAAaF,EAAQ,CAC7B,OAAO,SAAUoB,EAAQ,CACxB,OAAOD,GAAQC,EAAQpB,CAAM,CAC/B,CACA,CAEA,SAASG,GAAOrF,EAAOtV,EAAS6b,EAAU,CACzCvG,EAAQ,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAE7C,UAAWn4B,KAAKm4B,GACd4E,GAAS/8B,CAAC,IAAM+8B,GAAS/8B,CAAC,EAAI,KAAK6iB,CAAO,EAAI6b,EAGhD,OAAAvG,EAAQA,EAAM,CAAC,EAER,SAAU5qB,EAAO,CACvB,IAAI0d,EAEJ,OAAI1d,IAAU,QACTmxB,IACHnxB,EAAQmxB,EAASnxB,CAAK,GAGvB0d,EAAS,KAAKkN,CAAK,IACnBlN,EAAO,MAAMpI,CAAO,EAAItV,EACjB0d,IAGRA,EAAS,KAAKkN,CAAK,EAAG,EAAC,MAAMtV,CAAO,EAChC6b,IACHzT,EAASyT,EAASzT,CAAM,GAGlBA,EACT,CACA,CAEA,SAASwS,GAAM/iC,EAAK,CACnB,OAAO,SAAUwa,EAAG,CACnB,OAAO,KAAK,IAAI,EAAG,KAAK,IAAIxa,EAAKwa,CAAC,CAAC,CACrC,CACA,CAEA,SAASqpB,GAAYhxB,EAAO,CAC3B,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC7C,CAEA,SAAS2vB,GAAUyB,EAAOC,EAAQ,CACjC,QAASz5B,EAAI,EAAGA,EAAIy5B,EAAQz5B,IACvB,OAAOw5B,EAAMx5B,CAAC,GAAM,WACvBw5B,EAAMx5B,CAAC,EAAI,GAIb,OAAOw5B,CACR,CAEA,IAAAlE,GAAiBlG,mBC3eJsK,GAAiB3xB,GAA0B,CACtD,MAAM4xB,EAAgBx4B,GAAI,QAAQ2G,GAAYC,CAAG,CAAC,EAClD,MAAO,CAAC4xB,EAAS,IAAKA,EAAS,OAAQA,EAAS,IAAI,CACtD,EAEO,SAASC,GAAS72B,EAAuB,CACxC,MAAA82B,EAAgB14B,GAAI,KAAK4B,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,EAC9C,OAAAyE,GAAYqyB,EAAS,MAAA,CAAO,CACrC,CAEgB,SAAAC,GAAY/xB,EAAa9K,EAAyB,CAChE,GAAIA,EAAO,CACH,KAAA,CAACvG,EAAGE,EAAGb,EAAG0G,CAAC,EAAI/B,GAAOqN,CAAG,EAAE,OAC3BgyB,EAASr/B,GAAO,IAAIhE,EAAGE,EAAGb,CAAC,EAAE,MAEnC,MAAO,QADU2jC,GAASK,CAAM,EACR,IAAK/jC,GAAc,KAAK,MAAMA,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAIyG,CAAC,GAAA,KAIxE,OAAO,OADUi9B,GAAS3xB,CAAG,EACN,IAAK/R,GAAc,KAAK,MAAMA,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAEtE,CAEgB,SAAAgkC,GAAgB1E,EAAe2E,EAAkD,CAC/F,IAAIC,EAAO5E,EACX,MAAMr4B,EAAQvC,GAAO46B,CAAK,EAAE,UAAY,EAClCt/B,EAAIo5B,GAAMkG,CAAK,EACrB,OAAQ2E,EAAW,CACjB,IAAK,MAAO,CACHC,EAAAj9B,EAAQjH,EAAE,KAAK,EAAE,SAAa,EAAAA,EAAE,MAAM,WAC7C,KACF,CACA,IAAK,MAAO,CACHkkC,EAAAJ,GAAYxE,EAAOr4B,CAAK,EAC/B,KACF,CACA,IAAK,MAAO,CACHi9B,EAAAlkC,EAAE,IAAI,EAAE,OAAO,EACtB,KACF,CACA,IAAK,MAAO,CACHkkC,EAAAlkC,EAAE,IAAI,EAAE,OAAO,EACtB,KACF,CAIF,CACO,OAAAkkC,CACT,CCpCO,SAASC,GAAiB,CAC/B,QAAAC,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EACA,QAAAC,EACA,EAAAx6B,EACA,MAAAy6B,CACF,EAAsB,CAChB,GAAA,CAACz6B,GAAK,CAACy6B,EACT,OAAOb,GAAS,CAACQ,EAASC,EAASC,CAAM,CAAC,EAE5C,MAAMI,EAAU16B,EAAIy6B,EAGdE,EAAMC,GAAa,GAAGJ,CAAO,EAE7BK,EAAOP,GAAUC,EAAUD,GAAUK,EAAID,CAAO,EAEtD,OAAOd,GAAS,CAACQ,EAASC,EAASQ,CAAI,CAAC,CAC1C,CAEO,SAASC,GAAUC,EAAmB,CAC3C,QAAAX,EACA,QAAAY,EACA,QAAAX,EACA,QAAAY,EACA,QAAAV,EACA,QAAAC,CACF,EAOG//B,EAAcuF,EAAWy6B,EAAuB,CAGjD,MAAMd,EAAWx4B,GAAI,QAAQ2G,GAAYizB,CAAS,CAAC,EAC7C,CAAC59B,EAAGnH,EAAGuC,CAAC,EAAI,CAACohC,EAAS,IAAKA,EAAS,OAAQA,EAAS,IAAI,EAEzDe,EAAU16B,EAAIy6B,EAGdS,EAAMN,GAAa,GAAGI,CAAO,EAE7BG,EAAMP,GAAa,GAAGK,CAAO,EAE7BN,GAAMC,GAAa,GAAGJ,CAAO,EAE7BY,GAAOj+B,EAAIk+B,GAAcl+B,EAAGi9B,EAAUc,EAAIR,CAAO,EAAGjgC,CAAG,EACvD6gC,EAAOtlC,GAAKqkC,EAAUrkC,GAAKmlC,EAAIT,CAAO,EACtCG,GAAOtiC,GAAKgiC,EAAUhiC,GAAKoiC,GAAID,CAAO,EAE5C,OAAOd,GAAS,CAACwB,GAAME,EAAMT,EAAI,CAAC,CACpC,CAEgB,SAAAQ,GAAcl+B,EAAWi9B,EAAiB3/B,EAAc,CAChE,KAAA,CAAE,QAAAoF,EAAS,SAAAgoB,CAAa,EAAAptB,EAE9B,OADqB8gC,GAAgB17B,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGu6B,EAASvS,CAAQ,EAC1D1qB,CAAC,CACvB,CAEO,SAASo+B,GAAgBC,EAAYC,EAAYlmC,EAAasyB,EAAkB,CAC/E,MAAA6T,EAAQ,KAAK,GAAK,IAClBj/B,EAAI,KAAOg/B,EAAKD,GAChBzlC,EAAK,GAAK0G,EAAIi/B,GAAS,EAAIF,EAAKC,GAAO,EAEvCnmC,EAAMC,EAAMsyB,EACZ1wB,GAAK5B,EAAMD,GAAO,EAClBi6B,GAASh6B,EAAMD,GAAO,EAE5B,OAAQya,GAAc,CACpB,MAAMid,EAAMjd,EAAI2rB,EAChB,OAAOnM,EAAQ,KAAK,IAAI9yB,EAAIuwB,EAAMj3B,CAAC,EAAIoB,CAAA,CAE3C,CAEA,SAASwkC,GAAcrG,EAAwB,CACtC,OAAAA,GAAS,GAAKA,GAAS,GAChC,CACA,SAASsG,GAAWrD,EAA4B,CAC9C,OAAOA,EAAS,OAAS,EAAI,OAAOA,EAAS,KAAK,GAAG,CAAC,IAAM,QAAQA,EAAS,KAAK,GAAG,CAAC,GACxF,CAEgB,SAAAsD,GAAcC,EAAoBC,EAAiC,CAC3E,KAAA,CAACC,EAAIC,EAAIC,CAAE,EAAIxhC,GAAOohC,CAAU,EAAE,MAClC,CAACK,EAAIC,EAAIC,CAAE,EAAI3hC,GAAOqhC,CAAe,EAAE,MAE7C,QAASO,EAAK,IAAMA,GAAM,EAAGA,GAAM,IAAM,CACvC,MAAM5lC,EAAI,KAAK,OAAOslC,EAAKG,GAAM,EAAIG,IAAOA,CAAE,EACxC1lC,EAAI,KAAK,OAAOqlC,EAAKG,GAAM,EAAIE,IAAOA,CAAE,EACxCvmC,EAAI,KAAK,OAAOmmC,EAAKG,GAAM,EAAIC,IAAOA,CAAE,EAC9C,GAAIX,GAAcjlC,CAAC,GAAKilC,GAAc/kC,CAAC,GAAK+kC,GAAc5lC,CAAC,EACzD,OAAO2E,GAAOkhC,GAAW,CAACllC,EAAGE,EAAGb,EAAG,KAAK,MAAMumC,EAAK,GAAG,EAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CACzE,CACO,OAAA5hC,GAAOkhC,GAAW,CAACI,EAAIC,EAAIC,EAAI,CAAC,CAAC,CAAC,EAAE,KAC7C,CC/GO,SAASK,GAAgBxB,EAAmB,CACjD,GAAAyB,EACA,KAAAC,EACA,QAAAC,EACA,UAAAC,EACA,IAAAliC,CACF,EAMG,CACD,MAAMmiC,EAAmB,CAAA,EAEhB,QAAA58B,EAAI08B,EAAS18B,GAAK,EAAGA,IAC5B48B,EAAO,KAAK9B,GAAUC,EAAWyB,EAAI/hC,EAAKuF,EAAG08B,CAAO,CAAC,EAEvDE,EAAO,KAAK7B,CAAS,EAGZ,QAAA/6B,EAAI,EAAGA,GAAK28B,EAAW38B,IAC9B48B,EAAO,KAAK9B,GAAUC,EAAW0B,EAAMhiC,EAAKuF,EAAG28B,CAAS,CAAC,EAEpD,OAAAC,CACT,CAEO,SAASC,GAAiB,CAC/B,GAAAL,EACA,KAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAKG,CACD,MAAMC,EAAmB,CAAA,EAEhB,QAAA58B,EAAI08B,EAAS18B,GAAK,EAAGA,IACrB48B,EAAA,KAAKzC,GAAiB,CAAE,GAAGqC,EAAI,EAAAx8B,EAAG,MAAO08B,CAAS,CAAA,CAAC,EAErDE,EAAA,KAAKzC,GAAiBqC,CAAE,CAAC,EAGvB,QAAAx8B,EAAI,EAAGA,GAAK28B,EAAW38B,IACvB48B,EAAA,KAAKzC,GAAiB,CAAE,GAAGsC,EAAM,EAAAz8B,EAAG,MAAO28B,CAAW,CAAA,CAAC,EAEzD,OAAAC,CACT,CCtDO,SAASE,GAAqBC,EAAiC,CACpE,UAAW9S,KAAO8S,EAChB,SAAS,gBAAgB,MAAM,YAAY9S,EAAK8S,EAAQ9S,CAAG,CAAC,CAChE,CCHO,MAAM+S,GAAyB,CACpC,KAAM,CACJ,UAAW,CACT,CACE,MAAS,UACT,UAAa,UACb,GAAM,UACN,MAAS,QACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,MACN,MAAS,MACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,OACN,MAAS,SACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,SACN,MAAS,SACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,QACN,MAAS,QACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,MACN,MAAS,OACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,OACN,MAAS,OACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,QACN,MAAS,OACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,SACN,MAAS,SACT,KAAQ,QACV,EACA,CACE,MAAS,UACT,UAAa,UACb,GAAM,QACN,MAAS,UACT,KAAQ,QACV,CACF,EACA,SAAU,CACR,KAAM,CACJ,KAAM,CACJ,QAAS,GACT,QAAS,IACT,QAAS,GACT,QAAS,CACP,EACA,EACA,GACA,EACF,EACA,QAAS,CACP,EACA,EACA,EACA,CACF,EACA,QAAS,CACP,EACA,EACA,EACA,CACF,CACF,EACA,GAAI,CACF,QAAS,GACT,QAAS,GACT,QAAS,GACT,QAAS,CACP,EACA,EACA,EACA,CACF,EACA,QAAS,CACP,EACA,EACA,EACA,CACF,EACA,QAAS,CACP,EACA,EACA,EACA,CACF,CACF,EACA,QAAS,CACP,QAAS,EACT,QAAS,EACT,QAAS,GACT,KAAM,CACJ,QAAS,GACT,QAAS,CACP,EACA,EACA,IACA,GACF,CACF,EACA,GAAI,CACF,QAAS,EACT,QAAS,CACP,IACA,EACA,IACA,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAU,CACR,SAAU,IACV,QAAS,CACP,GACA,GACF,CACF,EACA,QAAS,CACP,SAAU,EACV,QAAS,CACP,EACA,GACF,CAEF,CACF,EACA,MAAO,CACL,KAAM,CACJ,QAAS,GACT,QAAS,GACT,QAAS,GACT,QAAS,CACP,EACA,EACA,EACA,CACF,EACA,QAAS,CACP,EACA,EACA,EACA,CACF,EACA,QAAS,CACP,EACA,EACA,EACA,CACF,CACF,EACA,GAAI,CACF,QAAS,GACT,QAAS,IACT,QAAS,GACT,QAAS,CACP,EACA,EACA,GACA,EACF,EACA,QAAS,CACP,EACA,EACA,EACA,CACF,EACA,QAAS,CACP,EACA,EACA,EACA,CACF,CACF,EACA,QAAS,CACP,QAAS,EACT,QAAS,IACT,QAAS,GACT,KAAM,CACJ,QAAS,GACT,QAAS,CACP,EACA,EACA,GACA,GACF,CACF,EACA,GAAI,CACF,QAAS,GACT,QAAS,CACP,IACA,IACA,GACA,GACF,CACF,CACF,CACF,EACA,KAAM,CACJ,KAAM,EACN,GAAI,CACN,CACF,EACA,WAAY,CAAC,EACb,OAAQ,CACN,KAAM,CACJ,YAAa,EACf,EACA,QAAS,CACP,kBAAmB,GACnB,aAAc,GACd,YAAa,EACf,CACF,CACF,EACA,KAAM,cACR,ECvPgB,SAAAC,GAAWC,EAAgC,KAAM,CACzD,MAAAC,EAAYD,GAAYF,GAAuB,KAAK,SACpDI,EAAaC,GAAUF,EAAW,EAAI,EAGrC,MAAA,CACL,MAHkBE,GAAUF,CAAS,EAIrC,KAAMC,CAAA,CAEV,CAGO,SAASE,GAAgBJ,EAAgC,KAAMK,EAAwC,MAAO,CAC7G,MAAAJ,EAAYD,GAAYF,GAAuB,KAAK,SACpDI,EAAaC,GAAUF,EAAW,EAAI,EAGrC,MAAA,CACL,MAHkBE,GAAUF,CAAS,EAGlB,IAAa7H,GAAA0E,GAAgB6B,GAAcvG,EAAO,MAAM,EAAGiI,CAAM,CAAC,EACrF,KAAMH,EAAW,IAAa9H,GAAA0E,GAAgB6B,GAAcvG,EAAO,MAAM,EAAGiI,CAAM,CAAC,CAAA,CAEvF,CAGO,SAASC,GAAW,CACzB,MAAAC,EACA,KAAAC,EACA,SAAAR,EACA,OAAAK,CACF,EAKG,CACK,MAAAJ,EAAYD,GAAYF,GAAuB,KAAK,SAEpD,CAAE,GAAIN,EAAS,KAAMC,GAAcQ,EAAU,KAC7C,CAAE,GAAAX,EAAI,KAAAC,GAASU,EAAU,MACzB,CAAE,GAAIQ,EAAQ,KAAMC,GAAaT,EAAU,KAC3C1iC,EAAM0iC,EAAU,IAAI,SACpBU,EAAQtB,GAAgBmB,EAAM,CAClC,GAAIC,EACJ,KAAMC,EACN,QAAAlB,EACA,UAAAC,EACA,IAAAliC,CAAA,CACD,EAEM,MAAA,CACL,MAAO8hC,GAAgBkB,EAAO,CAC5B,GAAAjB,EACA,KAAAC,EACA,QAAAC,EACA,UAAAC,EACA,IAAAliC,CAAA,CACD,EACD,KAAMojC,EAAM,IAAavI,GAAA0E,GAAgB6B,GAAcvG,EAAO,MAAM,EAAGiI,CAAM,CAAC,CAAA,CAElF,CAGA,SAASF,GAAUH,EAAwBY,EAAS,GAAO,CACzD,KAAM,CAAE,GAAIpB,EAAS,KAAMC,GAAcO,EAAS,KAE5C,CACJ,QAAA7C,EACA,QAAAD,EACA,GAAAoC,EACA,KAAAC,EACA,QAASnC,CACP,EAAA4C,EAASY,EAAS,OAAS,OAAO,EAAE,QAExC,OAAOjB,GAAiB,CACtB,GAAI,CACF,GAAGL,EACH,QAAAnC,EACA,QAAAD,EACA,OAAAE,CACF,EACA,KAAM,CACJ,GAAGmC,EACH,QAAApC,EACA,QAAAD,EACA,OAAAE,CACF,EACA,QAAAoC,EACA,UAAAC,CAAA,CACD,CACH","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]} \ No newline at end of file diff --git a/packages/theme/lib/types.d.ts b/packages/theme/lib/types.d.ts new file mode 100644 index 0000000..c0a8993 --- /dev/null +++ b/packages/theme/lib/types.d.ts @@ -0,0 +1,44 @@ +export type formatType = 'rgb' | 'hex' | 'hct' | 'hsv'; +export interface hueType { + multiply: number; + segment: number[]; +} +export interface directType { + cTarget: number; + cEasing: number[]; + hRotate: number; + hEasing: number[]; + tTarget: number; + tEasing: number[]; +} +export interface neutralDirectType { + tTarget: number; + tEasing: number[]; +} +export interface neutralType { + cTarget: number; + hRotate: number; + tTarget: number; + down: neutralDirectType; + up: neutralDirectType; +} +export interface generateType { + dark: { + down: directType; + up: directType; + neutral: neutralType; + }; + hue: { + palettes: hueType; + neutral: hueType; + }; + light: { + down: directType; + up: directType; + neutral: neutralType; + }; + step: { + up: number; + down: number; + }; +} diff --git a/packages/theme/lib/utils/adjust.d.ts b/packages/theme/lib/utils/adjust.d.ts new file mode 100644 index 0000000..1aabb8f --- /dev/null +++ b/packages/theme/lib/utils/adjust.d.ts @@ -0,0 +1,27 @@ +import type { hueType } from '../types'; +export interface adjustNeutralType { + hRotate: number; + cTarget: number; + tStart: number; + tTarget: number; + tEasing: number[]; + i?: number; + steps?: number; +} +export declare function adjustNeutralHex({ hRotate, cTarget, tStart, tTarget, tEasing, i, steps, }: adjustNeutralType): string; +export declare function adjustHex(baseColor: string, { hRotate, // 色相偏移(旋转) +hEasing, // 色相偏移的缓动函数 +cTarget, // 色度 +cEasing, // 色度的缓动函数 +tTarget, // 目标明度 +tEasing, }: { + hRotate: number; + hEasing: number[]; + cTarget: number; + cEasing: number[]; + tTarget: number; + tEasing: number[]; +}, hue: hueType, i: number, steps: number): string; +export declare function calcHueRotate(h: number, hRotate: number, hue: hueType): number; +export declare function genCalcHueVaule(Xa: number, Xb: number, max: number, multiply: number): (v: number) => number; +export declare function getAlphaColor(frontColor: string, backgroundColor: string): string; diff --git a/packages/theme/lib/utils/colorTools.d.ts b/packages/theme/lib/utils/colorTools.d.ts new file mode 100644 index 0000000..70e3797 --- /dev/null +++ b/packages/theme/lib/utils/colorTools.d.ts @@ -0,0 +1,15 @@ +import type { directType, hueType } from '../types'; +import type { adjustNeutralType } from './adjust'; +export declare function getLadderColors(baseColor: string, { up, down, upSteps, downSteps, hue, }: { + up: directType; + down: directType; + upSteps: number; + downSteps: number; + hue: hueType; +}): string[]; +export declare function getNeutualColors({ up, down, upSteps, downSteps, }: { + up: adjustNeutralType; + down: adjustNeutralType; + upSteps: number; + downSteps: number; +}): string[]; diff --git a/packages/theme/lib/utils/format.d.ts b/packages/theme/lib/utils/format.d.ts new file mode 100644 index 0000000..13d3491 --- /dev/null +++ b/packages/theme/lib/utils/format.d.ts @@ -0,0 +1,4 @@ +export declare const hexToHct: any; +export declare function hctToHex(hct: number[]): string; +export declare function toHctString(hex: string, alpha?: boolean): string; +export declare function colorTypeFormat(color: string, colorType: 'hex' | 'hct' | 'rgb' | 'hsv'): string; diff --git a/packages/theme/lib/utils/index.d.ts b/packages/theme/lib/utils/index.d.ts new file mode 100644 index 0000000..8dbc008 --- /dev/null +++ b/packages/theme/lib/utils/index.d.ts @@ -0,0 +1,3 @@ +export * from './adjust'; +export * from './colorTools'; +export * from './format'; diff --git a/packages/theme/package.json b/packages/theme/package.json new file mode 100644 index 0000000..eab1904 --- /dev/null +++ b/packages/theme/package.json @@ -0,0 +1,27 @@ +{ + "name": "@element-plus/theme", + "version": "1.0.0-alpha.1", + "description": "", + "author": "xxholly32@163.com", + "license": "MIT", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "import": "./lib/theme.mjs" + } + }, + "main": "./lib/theme.mjs", + "module": "./lib/theme.mjs", + "unpkg": "./lib/theme.umd.js", + "typings": "lib/index.d.ts", + "scripts": { + "dev": "vite build --watch", + "build": "vite build && npm run build:types", + "build:types": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.json" + }, + "dependencies": { + "@material/material-color-utilities": "^0.2.6", + "bezier-easing": "^2", + "chroma-js": "^2" + } +} diff --git a/packages/theme/src/constants/element-plus.ts b/packages/theme/src/constants/element-plus.ts new file mode 100644 index 0000000..ab44603 --- /dev/null +++ b/packages/theme/src/constants/element-plus.ts @@ -0,0 +1,253 @@ +export const ELEMENT_PLUS_CONSTANTS = { + data: { + colorList: [ + { + "color": "#409eff", + "darkColor": "#589ffe", + "id": "Primary", + "title": "Brand", + "type": "normal" + }, + { + "color": "#e6202a", + "darkColor": "#ff5d55", + "id": "Red", + "title": "Red", + "type": "normal" + }, + { + "color": "#ff832b", + "darkColor": "#ffa366", + "id": "65c1", + "title": "Orange", + "type": "normal" + }, + { + "color": "#ffcc00", + "darkColor": "#ffd668", + "id": "Yellow", + "title": "Yellow", + "type": "normal" + }, + { + "color": "#1db84c", + "darkColor": "#65ca67", + "id": "Green", + "title": "Green", + "type": "normal" + }, + { + "color": "#00b3af", + "darkColor": "#56c6c4", + "id": "Sky", + "title": "Teal", + "type": "normal" + }, + { + "color": "#1fa5ff", + "darkColor": "#67baff", + "id": "f38c", + "title": "Cyan", + "type": "normal" + }, + { + "color": "#176cff", + "darkColor": "#5792ff", + "id": "116bd", + "title": "Blue", + "type": "normal" + }, + { + "color": "#8a3ffc", + "darkColor": "#a275ff", + "id": "Purple", + "title": "Purple", + "type": "normal" + }, + { + "color": "#ea3c8e", + "darkColor": "#ff6ba3", + "id": "17d81", + "title": "Magenta", + "type": "normal" + } + ], + generate: { + dark: { + down: { + cTarget: 20, + hRotate: -20, + tTarget: 96, + tEasing: [ + 0, + 0, + 0.5, + 0.7, + ], + cEasing: [ + 0, + 0, + 1, + 1, + ], + hEasing: [ + 0, + 0, + 1, + 1, + ], + }, + up: { + cTarget: 50, + hRotate: 20, + tTarget: 10, + tEasing: [ + 0, + 0, + 1, + 1, + ], + cEasing: [ + 0, + 0, + 1, + 1, + ], + hEasing: [ + 0, + 0, + 1, + 1, + ], + }, + neutral: { + cTarget: 1, + hRotate: 1, + tTarget: 43, + down: { + tTarget: 98, + tEasing: [ + 0, + 0, + 0.53, + 0.72, + ], + }, + up: { + tTarget: 6, + tEasing: [ + 0.29, + 0, + 0.65, + 1, + ], + }, + }, + }, + hue: { + palettes: { + multiply: -0.5, + segment: [ + 50, + 200, + ], + }, + neutral: { + multiply: 1, + segment: [ + 0, + 360, + ], + + }, + }, + light: { + down: { + cTarget: 50, + hRotate: 20, + tTarget: 10, + tEasing: [ + 0, + 0, + 1, + 1, + ], + cEasing: [ + 0, + 0, + 1, + 1, + ], + hEasing: [ + 0, + 0, + 1, + 1, + ], + }, + up: { + cTarget: 20, + hRotate: -20, + tTarget: 96, + tEasing: [ + 0, + 0, + 0.5, + 0.7, + ], + cEasing: [ + 0, + 0, + 1, + 1, + ], + hEasing: [ + 0, + 0, + 1, + 1, + ], + }, + neutral: { + cTarget: 2, + hRotate: 209, + tTarget: 73, + down: { + tTarget: 10, + tEasing: [ + 0, + 0, + 0.6, + 0.29, + ], + }, + up: { + tTarget: 97, + tEasing: [ + 0.15, + 0.05, + 0.1, + 0.82, + ], + }, + }, + }, + step: { + down: 4, + up: 5, + }, + }, + stepFliter: [], + system: { + edit: { + isolateEdit: false, + }, + pattern: { + displayFliterStep: false, + isFliterStep: false, + isolateDark: false, + }, + }, + }, + name: 'element-plus', +} diff --git a/packages/theme/src/constants/index.ts b/packages/theme/src/constants/index.ts new file mode 100644 index 0000000..49303d8 --- /dev/null +++ b/packages/theme/src/constants/index.ts @@ -0,0 +1 @@ +export * from './element-plus' diff --git a/packages/theme/src/dom.ts b/packages/theme/src/dom.ts new file mode 100644 index 0000000..eb81d60 --- /dev/null +++ b/packages/theme/src/dom.ts @@ -0,0 +1,4 @@ +export function changeThemeByCssvars(cssVars: Record) { + for (const key in cssVars) + document.documentElement.style.setProperty(key, cssVars[key]) +} diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts new file mode 100644 index 0000000..d533fb2 --- /dev/null +++ b/packages/theme/src/index.ts @@ -0,0 +1,5 @@ +export * from './utils' +export * from './dom' +export * from './constants' +export * from './palettes' +export * from './types' diff --git a/packages/theme/src/palettes.ts b/packages/theme/src/palettes.ts new file mode 100644 index 0000000..5ca462b --- /dev/null +++ b/packages/theme/src/palettes.ts @@ -0,0 +1,95 @@ +import { ELEMENT_PLUS_CONSTANTS } from './constants' +import { colorTypeFormat, getAlphaColor, getLadderColors, getNeutualColors } from './utils' +import type { generateType } from './types' + +// 获取灰度梯度 +export function getNeutral(generate: generateType | null = null) { + const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate + const darkShades = getShades(_generate, true) + const lightShades = getShades(_generate) + + return { + light: lightShades, + dark: darkShades, + } +} + +// 获取灰度透明梯度 +export function getNeutralAlpha(generate: generateType | null = null, format: 'rgb' | 'hex' | 'hct' | 'hsv' = 'rgb') { + const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate + const darkShades = getShades(_generate, true) + const lightShades = getShades(_generate) + + return { + light: lightShades.map(color => colorTypeFormat(getAlphaColor(color, '#fff'), format)), + dark: darkShades.map(color => colorTypeFormat(getAlphaColor(color, '#000'), format)), + } +} + +// 获取颜色梯度 +export function getPalette({ + light, + dark, + generate, + format, +}: { + light: string + dark: string + generate?: generateType + format?: 'rgb' | 'hex' | 'hct' | 'hsv' +}) { + const _generate = generate || ELEMENT_PLUS_CONSTANTS.data.generate + + const { up: upSteps, down: downSteps } = _generate.step + const { up, down } = _generate.light + const { up: upDark, down: downDark } = _generate.dark + const hue = _generate.hue.palettes + const darks = getLadderColors(dark, { + up: upDark, + down: downDark, + upSteps, + downSteps, + hue, + }) + + return { + light: getLadderColors(light, { + up, + down, + upSteps, + downSteps, + hue, + }), + dark: darks.map(color => colorTypeFormat(getAlphaColor(color, '#000'), format)), + } +} + +// 根据配置获取灰度数据 +function getShades(generate: generateType, isDark = false) { + const { up: upSteps, down: downSteps } = generate.step + + const { + cTarget, + hRotate, + up, + down, + tTarget: tStart, + } = generate[isDark ? 'dark' : 'light'].neutral + + return getNeutualColors({ + up: { + ...up, + cTarget, + hRotate, + tStart, + }, + down: { + ...down, + cTarget, + hRotate, + tStart, + }, + upSteps, + downSteps, + }) +} diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts new file mode 100644 index 0000000..b2d143d --- /dev/null +++ b/packages/theme/src/types.ts @@ -0,0 +1,49 @@ +export type formatType = 'rgb' | 'hex' | 'hct' | 'hsv' + +export interface hueType { + multiply: number + segment: number[] +} + +export interface directType { + cTarget: number + cEasing: number[] + hRotate: number + hEasing: number[] + tTarget: number + tEasing: number[] +} + +export interface neutralDirectType { + tTarget: number + tEasing: number[] +} + +export interface neutralType { + cTarget: number + hRotate: number + tTarget: number + down: neutralDirectType + up: neutralDirectType +} + +export interface generateType { + dark: { + down: directType + up: directType + neutral: neutralType + } + hue: { + palettes: hueType + neutral: hueType + } + light: { + down: directType + up: directType + neutral: neutralType + } + step: { + up: number + down: number + } +} diff --git a/packages/theme/src/utils/adjust.ts b/packages/theme/src/utils/adjust.ts new file mode 100644 index 0000000..eb3c760 --- /dev/null +++ b/packages/theme/src/utils/adjust.ts @@ -0,0 +1,116 @@ +import { Hct, argbFromHex } from '@material/material-color-utilities' +import chroma from 'chroma-js' +import BezierEasing from 'bezier-easing' +import type { hueType } from '../types' +import { hctToHex } from './format' + +export interface adjustNeutralType { + hRotate: number // 色相偏移(旋转) + cTarget: number // 色度 + tStart: number // 目标明度初始值 + tTarget: number // 目标明度 + tEasing: number[] // 明度的缓动函数 + i?: number // 当前步数 + steps?: number // 总步数 +} + +// TODO: 后续做开启偏色 +export function adjustNeutralHex({ + hRotate, + cTarget, + tStart, + tTarget, + tEasing, + i, + steps, +}: adjustNeutralType) { + if (!i || !steps) + return hctToHex([hRotate, cTarget, tStart]) + + const percent = i / steps + + // @ts-expect-erroradjustNeutralType + const tBE = BezierEasing(...tEasing) + + const newT = tStart + (tTarget - tStart) * tBE(percent) + // 灰色 hRotate 应该不变 + return hctToHex([hRotate, cTarget, newT]) +} + +export function adjustHex(baseColor: string, { + hRotate, // 色相偏移(旋转) + hEasing, // 色相偏移的缓动函数 + cTarget, // 色度 + cEasing, // 色度的缓动函数 + tTarget, // 目标明度 + tEasing, // 明度的缓动函数 +}: { + hRotate: number + hEasing: number[] + cTarget: number + cEasing: number[] + tTarget: number + tEasing: number[] +}, hue: hueType, i: number, steps: number): string { + // const color = Hct.fromInt(baseColor); + // const colora = Hct.fromInt(argbFromHex(baseColor)); + const hclColor = Hct.fromInt(argbFromHex(baseColor)) + const [h, c, t] = [hclColor.hue, hclColor.chroma, hclColor.tone] + + const percent = i / steps + + // @ts-expect-error + const hBE = BezierEasing(...hEasing) + // @ts-expect-error + const cBE = BezierEasing(...cEasing) + // @ts-expect-error + const tBE = BezierEasing(...tEasing) + + const newH = h + calcHueRotate(h, hRotate * hBE(percent), hue) + const newC = c + (cTarget - c) * cBE(percent) + const newT = t + (tTarget - t) * tBE(percent) + + return hctToHex([newH, newC, newT]) +} + +export function calcHueRotate(h: number, hRotate: number, hue: hueType) { + const { segment, multiply } = hue + const calcHueVaule = genCalcHueVaule(segment[0], segment[1], hRotate, multiply) + return calcHueVaule(h) +} + +export function genCalcHueVaule(Xa: number, Xb: number, max: number, multiply: number) { + const toRad = Math.PI / 180 + const a = 360 / (Xb - Xa) + const b = (-1 * a * toRad * (3 * Xa + Xb)) / 4 + + const min = max * multiply + const y = (max + min) / 2 + const scale = (max - min) / 2 + + return (v: number) => { + const rad = v * toRad + return scale * Math.sin(a * rad + b) + y + } +} + +function isStableColor(color: number): boolean { + return color >= 0 && color <= 255 +} +function arrayToRgb(rgbArray: number[]): string { + return rgbArray.length < 4 ? `rgb(${rgbArray.join(',')})` : `rgba(${rgbArray.join(',')})` +} + +export function getAlphaColor(frontColor: string, backgroundColor: string): string { + const [fR, fG, fB] = chroma(frontColor).rgb() + const [bR, bG, bB] = chroma(backgroundColor).rgb() + + for (let fA = 0.01; fA <= 1; fA += 0.01) { + const r = Math.round((fR - bR * (1 - fA)) / fA) + const g = Math.round((fG - bG * (1 - fA)) / fA) + const b = Math.round((fB - bB * (1 - fA)) / fA) + if (isStableColor(r) && isStableColor(g) && isStableColor(b)) + return chroma(arrayToRgb([r, g, b, Math.round(fA * 100) / 100])).hex() + } + return chroma(arrayToRgb([fR, fG, fB, 1])).hex() +} diff --git a/packages/theme/src/utils/colorTools.ts b/packages/theme/src/utils/colorTools.ts new file mode 100644 index 0000000..842e9fd --- /dev/null +++ b/packages/theme/src/utils/colorTools.ts @@ -0,0 +1,55 @@ +import type { directType, hueType } from '../types' +import { adjustHex, adjustNeutralHex } from './adjust' +import type { adjustNeutralType } from './adjust' + +export function getLadderColors(baseColor: string, { + up, + down, + upSteps, + downSteps, + hue, +}: { + up: directType + down: directType + upSteps: number + downSteps: number + hue: hueType +}) { + const shades: string[] = [] + // 向上梯度 + for (let i = upSteps; i >= 1; i--) + shades.push(adjustHex(baseColor, up, hue, i, upSteps)) + + shades.push(baseColor) + + // 向下梯度 + for (let i = 1; i <= downSteps; i++) + shades.push(adjustHex(baseColor, down, hue, i, downSteps)) + + return shades +} + +export function getNeutualColors({ + up, + down, + upSteps, + downSteps, +}: { + up: adjustNeutralType + down: adjustNeutralType + upSteps: number + downSteps: number +}) { + const shades: string[] = [] + // 向上梯度 + for (let i = upSteps; i >= 1; i--) + shades.push(adjustNeutralHex({ ...up, i, steps: upSteps })) + + shades.push(adjustNeutralHex(up)) + + // 向下梯度 + for (let i = 1; i <= downSteps; i++) + shades.push(adjustNeutralHex({ ...down, i, steps: downSteps })) + + return shades +} diff --git a/packages/theme/src/utils/format.ts b/packages/theme/src/utils/format.ts new file mode 100644 index 0000000..4f757ff --- /dev/null +++ b/packages/theme/src/utils/format.ts @@ -0,0 +1,54 @@ +import { Hct, argbFromHex, hexFromArgb } from '@material/material-color-utilities' +import Color from 'color' +import chroma from 'chroma-js' + +export const hexToHct: any = (hex: string): number[] => { + const hclColor: Hct = Hct.fromInt(argbFromHex(hex)) + return [hclColor.hue, hclColor.chroma, hclColor.tone] +} + +export function hctToHex(hct: number[]): string { + const hctColor: Hct = Hct.from(hct[0], hct[1], hct[2]) + return hexFromArgb(hctColor.toInt()) +} + +export function toHctString(hex: string, alpha?: boolean): string { + if (alpha) { + const [r, g, b, a] = chroma(hex).rgba() + const newHex = chroma.rgb(r, g, b).hex() + const hctColor = hexToHct(newHex) + return `hcta(${hctColor.map((c: number) => Math.round(c)).join(',')},${a})` + } + else { + const hctColor = hexToHct(hex) + return `hct(${hctColor.map((c: number) => Math.round(c)).join(',')})` + } +} + +export function colorTypeFormat(color: string, colorType: 'hex' | 'hct' | 'rgb' | 'hsv'): string { + let text = color + const alpha = chroma(color).alpha() !== 1 + const c = Color(color) + switch (colorType) { + case 'hex': { + text = alpha ? c.hexa().toString() : c.hex().toString() + break + } + case 'hct': { + text = toHctString(color, alpha) + break + } + case 'rgb': { + text = c.rgb().string() + break + } + case 'hsv': { + text = c.hsv().string() + break + } + default: { + break + } + } + return text +} diff --git a/packages/theme/src/utils/index.ts b/packages/theme/src/utils/index.ts new file mode 100644 index 0000000..b056668 --- /dev/null +++ b/packages/theme/src/utils/index.ts @@ -0,0 +1,3 @@ +export * from './adjust' +export * from './colorTools' +export * from './format' diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json new file mode 100644 index 0000000..a359204 --- /dev/null +++ b/packages/theme/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "baseUrl": ".", + "rootDir": "./src", + "moduleResolution": "node", + "declaration": true, + "outDir": "./lib", + "esModuleInterop": true + }, + "include": [ + "src/*" + ] +} diff --git a/packages/theme/vite.config.ts b/packages/theme/vite.config.ts new file mode 100644 index 0000000..09bbf8e --- /dev/null +++ b/packages/theme/vite.config.ts @@ -0,0 +1,19 @@ +import { resolve } from 'node:path' +import { defineConfig } from 'vite' +import packageJson from './package.json' + +const dir = resolve(__dirname) +const name = packageJson.name.replace(/.*\//, '') + +export default defineConfig({ + build: { + outDir: resolve(dir, 'lib'), + sourcemap: true, + lib: { + entry: resolve(dir, './index.ts'), + name, + fileName: name, + formats: ['es', 'umd'], + }, + }, +}) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..a015bec --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - 'packages/*' + - editor diff --git a/src/App.vue b/src/App.vue deleted file mode 100644 index 99a0149..0000000 --- a/src/App.vue +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue deleted file mode 100644 index dedd764..0000000 --- a/src/components/HelloWorld.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 602cb5a..3071bcc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,11 @@ { - "compilerOptions": { - "baseUrl": ".", - "target": "esnext", - "useDefineForClassFields": true, - "module": "esnext", - "moduleResolution": "node", - "strict": true, - "jsx": "preserve", - "sourceMap": true, - "resolveJsonModule": true, - "esModuleInterop": true, - "lib": ["esnext", "dom"], - "paths": { - "~/*": ["src/*"] + "references": [ + { + "path": "./editor/tsconfig.json" }, - "skipLibCheck": true - }, - "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"] + { + "path": "./packages/theme/tsconfig.json" + } + ], + "files": [] }