tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 32.2 kB
Source Map (JSON)
{"version":3,"file":"color.mjs","sources":["../../../../src/_common/js/color-picker/color.ts"],"sourcesContent":["import tinyColor from 'tinycolor2';\nimport { cmykInputToColor, rgb2cmyk } from './cmyk';\nimport { ALPHA_FORMAT_MAP } from './constants';\nimport {\n parseGradientString, GradientColors, GradientColorPoint, isGradientColor\n} from './gradient';\nimport type { AlphaConvertibleFormat, ColorFormat } from './types';\n\nexport interface ColorObject {\n alpha: number;\n css: string;\n hex: string;\n hex8: string;\n hsl: string;\n hsla: string;\n hsv: string;\n hsva: string;\n rgb: string;\n rgba: string;\n saturation: number;\n value: number;\n isGradient: boolean;\n linearGradient?: string;\n}\n\ninterface ColorStates {\n s: number;\n v: number;\n h: number;\n a: number;\n}\n\ninterface GradientStates {\n colors: GradientColorPoint[];\n degree: number;\n selectedId: string;\n css?: string;\n}\n\nconst mathRound = Math.round;\nconst hsv2rgba = (states: ColorStates): tinyColor.ColorFormats.RGBA => tinyColor(states).toRgb();\nconst hsv2hsva = (states: ColorStates): tinyColor.ColorFormats.HSVA => tinyColor(states).toHsv();\nconst hsv2hsla = (states: ColorStates): tinyColor.ColorFormats.HSLA => tinyColor(states).toHsl();\n\n/**\n * 将渐变对象转换成字符串\n * @param object\n * @returns\n */\nexport const gradientColors2string = (object: GradientColors): string => {\n const { points, degree } = object;\n const colorsStop = points\n .sort((pA, pB) => pA.left - pB.left)\n .map((p) => `${p.color} ${Math.round(p.left * 100) / 100}%`);\n\n return `linear-gradient(${degree}deg,${colorsStop.join(',')})`;\n};\n\n/**\n * 去除颜色的透明度\n * @param color\n * @returns\n */\nexport const getColorWithoutAlpha = (color: string) => tinyColor(color).setAlpha(1).toHexString();\n\n// 生成一个随机ID\nexport const genId = () => (1 + Math.random() * 4294967295).toString(16);\n\n/**\n * 生成一个渐变颜色\n * @param left\n * @param color\n * @returns\n */\nexport const genGradientPoint = (left: number, color: string, id?: string): GradientColorPoint => ({\n id: id || genId(),\n left,\n color,\n});\n\nexport class Color {\n states: ColorStates = {\n s: 100,\n v: 100,\n h: 100,\n a: 1,\n };\n\n originColor: string;\n\n isGradient: boolean;\n\n gradientStates: GradientStates = {\n colors: [],\n degree: 0,\n selectedId: null,\n css: '',\n };\n\n constructor(input: string) {\n this.update(input);\n }\n\n update(input: string) {\n if (input === this.originColor) return;\n const gradientColors = parseGradientString(input);\n\n if (this.isGradient && !gradientColors) {\n /* 这里是针对渐变模式下,修改某个位置点的色值情况\n\n 「Tip」\n - 为了避免有时外界从渐变切换到单色模式,存在缓存问题\n 需要手动设置 `color.isGradient = false` 进行同步\n - 特定场景下,也可以直接创建新实例 `new Color` 进行覆盖 */\n const colorHsv = tinyColor(input).toHsv();\n this.states = colorHsv;\n this.updateCurrentGradientColor();\n return;\n }\n this.originColor = input;\n this.isGradient = false;\n let colorInput = input;\n if (gradientColors) {\n this.isGradient = true;\n const object = gradientColors as GradientColors;\n const points = object.points.map((c, index) => genGradientPoint(c.left, c.color, this.gradientStates.colors[index]?.id));\n this.gradientStates = {\n colors: points,\n degree: object.degree,\n selectedId: this.gradientStates.selectedId || points[0]?.id || null,\n };\n this.gradientStates.css = this.linearGradient;\n colorInput = this.gradientSelectedPoint?.color;\n }\n\n this.updateStates(colorInput);\n }\n\n get saturation() {\n return this.states.s;\n }\n\n set saturation(value) {\n this.states.s = Math.max(0, Math.min(100, value));\n this.updateCurrentGradientColor();\n }\n\n get value() {\n return this.states.v;\n }\n\n set value(value) {\n this.states.v = Math.max(0, Math.min(100, value));\n this.updateCurrentGradientColor();\n }\n\n get hue() {\n return this.states.h;\n }\n\n set hue(value) {\n this.states.h = Math.max(0, Math.min(360, value));\n this.updateCurrentGradientColor();\n }\n\n get alpha() {\n return this.states.a;\n }\n\n set alpha(value) {\n this.states.a = Math.max(0, Math.min(1, Math.round(value * 100) / 100));\n this.updateCurrentGradientColor();\n }\n\n get rgb() {\n const { r, g, b } = hsv2rgba(this.states);\n return `rgb(${mathRound(r)}, ${mathRound(g)}, ${mathRound(b)})`;\n }\n\n get rgba() {\n const {\n r, g, b, a\n } = hsv2rgba(this.states);\n return `rgba(${mathRound(r)}, ${mathRound(g)}, ${mathRound(b)}, ${a})`;\n }\n\n get hsv() {\n const { h, s, v } = this.getHsva();\n return `hsv(${h}, ${s}%, ${v}%)`;\n }\n\n get hsva() {\n const {\n h, s, v, a\n } = this.getHsva();\n return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n }\n\n get hsl() {\n const { h, s, l } = this.getHsla();\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n\n get hsla() {\n const {\n h, s, l, a\n } = this.getHsla();\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n }\n\n get hex() {\n return tinyColor(this.states).toHexString();\n }\n\n get hex8() {\n return tinyColor(this.states).toHex8String();\n }\n\n get cmyk() {\n const {\n c, m, y, k\n } = this.getCmyk();\n return `cmyk(${c}, ${m}, ${y}, ${k})`;\n }\n\n get css() {\n if (this.isGradient) {\n return this.linearGradient;\n }\n return this.rgba;\n }\n\n get linearGradient() {\n const { gradientColors, gradientDegree } = this;\n return gradientColors2string({\n points: gradientColors,\n degree: gradientDegree,\n });\n }\n\n get gradientColors() {\n return this.gradientStates.colors;\n }\n\n set gradientColors(colors: GradientColorPoint[]) {\n this.gradientStates.colors = colors;\n this.gradientStates.css = this.linearGradient;\n }\n\n get gradientSelectedId() {\n return this.gradientStates.selectedId;\n }\n\n set gradientSelectedId(id: string) {\n if (id === this.gradientSelectedId) {\n return;\n }\n this.gradientStates.selectedId = id;\n this.updateStates(this.gradientSelectedPoint?.color);\n }\n\n get gradientDegree() {\n return this.gradientStates.degree;\n }\n\n set gradientDegree(degree: number) {\n this.gradientStates.degree = Math.max(0, Math.min(360, degree));\n this.gradientStates.css = this.linearGradient;\n }\n\n get gradientSelectedPoint() {\n const { gradientColors, gradientSelectedId } = this;\n return gradientColors.find((color) => color.id === gradientSelectedId);\n }\n\n getFormatsColorMap() {\n return {\n HEX: this.hex,\n CMYK: this.cmyk,\n RGB: this.rgb,\n RGBA: this.rgba,\n HSL: this.hsl,\n HSLA: this.hsla,\n HSV: this.hsv,\n HSVA: this.hsva,\n CSS: this.css,\n HEX8: this.hex8,\n };\n }\n\n getFormattedColor(format: ColorFormat, enableAlpha: boolean) {\n if (this.isGradient) return this.linearGradient;\n const finalFormat = (\n enableAlpha && format in ALPHA_FORMAT_MAP\n ? ALPHA_FORMAT_MAP[format as AlphaConvertibleFormat]\n : format\n ) as keyof ReturnType<Color['getFormatsColorMap']>;\n return this.getFormatsColorMap()[finalFormat];\n }\n\n updateCurrentGradientColor() {\n const { isGradient, gradientColors, gradientSelectedId } = this;\n const { length } = gradientColors;\n const current = this.gradientSelectedPoint;\n if (!isGradient || length === 0 || !current) {\n return false;\n }\n const index = gradientColors.findIndex((color) => color.id === gradientSelectedId);\n const newColor = {\n ...current,\n color: this.rgba,\n };\n gradientColors.splice(index, 1, newColor);\n this.gradientColors = gradientColors.slice();\n return this;\n }\n\n updateStates(input: string) {\n const color = tinyColor(cmykInputToColor(input));\n const hsva = color.toHsv();\n this.states = hsva;\n }\n\n getRgba() {\n const {\n r, g, b, a\n } = hsv2rgba(this.states);\n return {\n r: mathRound(r),\n g: mathRound(g),\n b: mathRound(b),\n a,\n };\n }\n\n getCmyk() {\n const { r, g, b } = this.getRgba();\n const [c, m, y, k] = rgb2cmyk(r, g, b);\n return {\n c: mathRound(c * 100),\n m: mathRound(m * 100),\n y: mathRound(y * 100),\n k: mathRound(k * 100),\n };\n }\n\n getHsva(): tinyColor.ColorFormats.HSVA {\n let {\n h, s, v, a\n } = hsv2hsva(this.states);\n h = mathRound(h);\n s = mathRound(s * 100);\n v = mathRound(v * 100);\n a *= 1;\n return {\n h,\n s,\n v,\n a,\n };\n }\n\n getHsla(): tinyColor.ColorFormats.HSLA {\n let {\n h, s, l, a\n } = hsv2hsla(this.states);\n h = mathRound(h);\n s = mathRound(s * 100);\n l = mathRound(l * 100);\n a *= 1;\n return {\n h,\n s,\n l,\n a,\n };\n }\n\n /**\n * 判断输入色是否与当前色相同\n * @param color\n * @returns\n */\n equals(color: string): boolean {\n return tinyColor.equals(this.rgba, color);\n }\n\n /**\n * 校验输入色是否是一个有效颜色\n * @param color\n * @returns\n */\n static isValid(color: string): boolean {\n if (parseGradientString(color)) {\n return true;\n }\n return tinyColor(color).isValid();\n }\n\n static hsva2color(h: number, s: number, v: number, a: number) {\n return tinyColor({\n h, s, v, a\n }).toHsvString();\n }\n\n static hsla2color(h: number, s: number, l: number, a: number) {\n return tinyColor({\n h, s, l, a\n }).toHslString();\n }\n\n static rgba2color(r: number, g: number, b: number, a: number) {\n return tinyColor({\n r, g, b, a\n }).toHsvString();\n }\n\n static hex2color(hex: string, a: number) {\n const color = tinyColor(hex);\n color.setAlpha(a);\n return color.toHexString();\n }\n\n /**\n * 对象转颜色字符串\n * @param object\n * @param format\n * @returns\n */\n static object2color(object: any, format: string) {\n if (format === 'CMYK') {\n const {\n c, m, y, k\n } = object;\n return `cmyk(${c}, ${m}, ${y}, ${k})`;\n }\n const color = tinyColor(object, {\n format,\n });\n return color.toRgbString();\n }\n\n /**\n * 是否是渐变色\n * @param input\n * @returns\n */\n static isGradientColor = (input: string) => !!isGradientColor(input);\n\n /**\n * 比较两个颜色是否相同\n * @param color1\n * @param color2\n * @returns\n */\n static compare = (color1: string, color2: string): boolean => {\n const isGradientColor1 = Color.isGradientColor(color1);\n const isGradientColor2 = Color.isGradientColor(color2);\n if (isGradientColor1 && isGradientColor2) {\n const gradientStr1 = parseGradientString(color1);\n const gradientStr2 = parseGradientString(color2);\n if (!gradientStr1 || !gradientStr2) return false;\n\n const gradientColor1 = gradientColors2string(gradientStr1);\n const gradientColor2 = gradientColors2string(gradientStr2);\n return gradientColor1 === gradientColor2;\n }\n if (!isGradientColor1 && !isGradientColor2) {\n return tinyColor.equals(color1, color2);\n }\n return false;\n };\n}\n\nconst COLOR_OBJECT_OUTPUT_KEYS = [\n 'alpha',\n 'css',\n 'hex',\n 'hex8',\n 'hsl',\n 'hsla',\n 'hsv',\n 'hsva',\n 'rgb',\n 'rgba',\n 'saturation',\n 'value',\n 'isGradient',\n];\n\n/**\n * 获取对外输出的color对象\n * @param color\n * @returns\n */\nexport const getColorObject = (color: Color): ColorObject | null => {\n if (!color) {\n return null;\n }\n const colorObject = Object.create(null);\n COLOR_OBJECT_OUTPUT_KEYS.forEach((key) => {\n colorObject[key] = (color as { [key: string]: any })[key];\n });\n if (color.isGradient) {\n colorObject.linearGradient = color.linearGradient;\n }\n return colorObject;\n};\n\nexport default Color;\n"],"names":["mathRound","Math","round","hsv2rgba","states","tinyColor","toRgb","hsv2hsva","toHsv","hsv2hsla","toHsl","gradientColors2string","object","points","degree","colorsStop","sort","pA","pB","left","map","p","concat","color","join","getColorWithoutAlpha","setAlpha","toHexString","genId","random","toString","genGradientPoint","id","Color","input","_classCallCheck","_defineProperty","s","v","h","a","colors","selectedId","css","update","_createClass","key","value","_this","originColor","gradientColors","parseGradientString","isGradient","colorHsv","updateCurrentGradientColor","colorInput","_points$","_this$gradientSelecte","c","index","_this$gradientStates$","gradientStates","linearGradient","gradientSelectedPoint","updateStates","get","set","max","min","_hsv2rgba","r","g","b","_hsv2rgba2","_this$getHsva","getHsva","_this$getHsva2","_this$getHsla","getHsla","l","_this$getHsla2","toHex8String","_this$getCmyk","getCmyk","m","y","k","rgba","gradientDegree","_this$gradientSelecte2","gradientSelectedId","find","getFormatsColorMap","HEX","hex","CMYK","cmyk","RGB","rgb","RGBA","HSL","hsl","HSLA","hsla","HSV","hsv","HSVA","hsva","CSS","HEX8","hex8","getFormattedColor","format","enableAlpha","finalFormat","ALPHA_FORMAT_MAP","length","current","findIndex","newColor","_objectSpread","splice","slice","cmykInputToColor","getRgba","_hsv2rgba3","_this$getRgba","_rgb2cmyk","rgb2cmyk","_rgb2cmyk2","_slicedToArray","_hsv2hsva","_hsv2hsla","equals","isValid","hsva2color","toHsvString","hsla2color","toHslString","rgba2color","hex2color","object2color","toRgbString","_Color","isGradientColor","color1","color2","isGradientColor1","isGradientColor2","gradientStr1","gradientStr2","gradientColor1","gradientColor2","COLOR_OBJECT_OUTPUT_KEYS","getColorObject","colorObject","Object","create","forEach"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuCA,IAAMA,YAAYC,IAAK,CAAAC,KAAA,CAAA;AACvB,IAAMC,WAAW,SAAXA,SAAYC,MAAA,EAAA;AAAA,EAAA,OAAqDC,SAAU,CAAAD,MAAM,EAAEE,KAAM,EAAA,CAAA;AAAA,CAAA,CAAA;AAC/F,IAAMC,WAAW,SAAXA,SAAYH,MAAA,EAAA;AAAA,EAAA,OAAqDC,SAAU,CAAAD,MAAM,EAAEI,KAAM,EAAA,CAAA;AAAA,CAAA,CAAA;AAC/F,IAAMC,WAAW,SAAXA,SAAYL,MAAA,EAAA;AAAA,EAAA,OAAqDC,SAAU,CAAAD,MAAM,EAAEM,KAAM,EAAA,CAAA;AAAA,CAAA,CAAA;IAOlFC,qBAAA,GAAwB,SAAxBA,qBAAAA,CAAyBC,MAAmC,EAAA;AACjE,EAAA,IAAEC,MAAQ,GAAWD,MAAA,CAAnBC,MAAQ;IAAAC,MAAA,GAAWF,MAAA,CAAXE,MAAA,CAAA;EACV,IAAAC,UAAA,GAAaF,OAChBG,IAAK,CAAA,UAACC,IAAIC,EAAO,EAAA;AAAA,IAAA,OAAAD,EAAA,CAAGE,IAAO,GAAAD,EAAA,CAAGC,IAAI,CAAA;AAAA,GAAA,CAAA,CAClCC,IAAI,UAACC,CAAA,EAAA;AAAA,IAAA,OAAA,EAAA,CAAAC,MAAA,CAASD,CAAA,CAAEE,KAAS,EAAA,GAAA,CAAA,CAAAD,MAAA,CAAArB,IAAA,CAAKC,MAAMmB,CAAE,CAAAF,IAAA,GAAO,GAAG,CAAA,GAAI,GAAM,EAAA,GAAA,CAAA,CAAA;AAAA,GAAA,CAAA,CAAA;EAE7D,OAAAG,kBAAAA,CAAAA,MAAA,CAA0BR,MAAA,EAAAQ,MAAAA,CAAAA,CAAAA,MAAA,CAAaP,UAAW,CAAAS,IAAA,CAAK,GAAG,CAAA,EAAA,GAAA,CAAA,CAAA;AAC5D,EAAA;IAOaC,oBAAA,GAAuB,SAAvBA,oBAAAA,CAAwBF,KAAkB,EAAA;AAAA,EAAA,OAAAlB,SAAA,CAAUkB,KAAK,CAAE,CAAAG,QAAA,CAAS,CAAC,CAAA,CAAEC,WAAY,EAAA,CAAA;AAAA,EAAA;AAGnFC,IAAAA,KAAA,GAAQ,SAARA,KAAAA,GAAA;AAAA,EAAA,QAAe,CAAI,GAAA3B,IAAA,CAAK4B,QAAW,GAAA,UAAA,EAAYC,SAAS,EAAE,CAAA,CAAA;AAAA,EAAA;AAQhE,IAAMC,gBAAmB,GAAA,SAAnBA,gBAAmBA,CAACZ,IAAc,EAAAI,KAAA,EAAeS,EAAqC,EAAA;EAAA,OAAA;AACjGA,IAAAA,EAAA,EAAIA,MAAMJ,KAAM,EAAA;AAChBT,IAAAA,IAAA,EAAAA,IAAA;AACAI,IAAAA,KAAA,EAAAA,KAAAA;GACF,CAAA;AAAA,EAAA;AAEO,IAAMU,KAAM,gBAAA,YAAA;EAmBjB,SAAAA,KAAAA,CAAYC,KAAe,EAAA;AAAAC,IAAAA,eAAA,OAAAF,KAAA,CAAA,CAAA;AAAAG,IAAAA,eAAA,CAlBL,IAAA,EAAA,QAAA,EAAA;AACpBC,MAAAA,CAAG,EAAA,GAAA;AACHC,MAAAA,CAAG,EAAA,GAAA;AACHC,MAAAA,CAAG,EAAA,GAAA;AACHC,MAAAA,CAAG,EAAA,CAAA;KACL,CAAA,CAAA;IAAAJ,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAAA,IAAAA,eAAA,CAMiC,IAAA,EAAA,gBAAA,EAAA;AAC/BK,MAAAA,QAAQ,EAAC;AACT3B,MAAAA,MAAQ,EAAA,CAAA;AACR4B,MAAAA,UAAY,EAAA,IAAA;AACZC,MAAAA,GAAK,EAAA,EAAA;KACP,CAAA,CAAA;AAGE,IAAA,IAAA,CAAKC,OAAOV,KAAK,CAAA,CAAA;AACnB,GAAA;EAAA,OAAAW,YAAA,CAAAZ,KAAA,EAAA,CAAA;IAAAa,GAAA,EAAA,QAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAH,OAAOV,KAAe,EAAA;AAAA,MAAA,IAAAc,KAAA,GAAA,IAAA,CAAA;AACpB,MAAA,IAAId,UAAU,IAAK,CAAAe,WAAA,EAAa,OAAA;AAC1B,MAAA,IAAAC,cAAA,GAAiBC,oBAAoBjB,KAAK,CAAA,CAAA;AAE5C,MAAA,IAAA,IAAA,CAAKkB,UAAc,IAAA,CAACF,cAAgB,EAAA;QAOtC,IAAMG,QAAW,GAAAhD,SAAA,CAAU6B,KAAK,CAAA,CAAE1B,KAAM,EAAA,CAAA;QACxC,IAAA,CAAKJ,MAAS,GAAAiD,QAAA,CAAA;QACd,IAAA,CAAKC,0BAA2B,EAAA,CAAA;AAChC,QAAA,OAAA;AACF,OAAA;MACA,IAAA,CAAKL,WAAc,GAAAf,KAAA,CAAA;MACnB,IAAA,CAAKkB,UAAa,GAAA,KAAA,CAAA;MAClB,IAAIG,UAAa,GAAArB,KAAA,CAAA;AACjB,MAAA,IAAIgB,cAAgB,EAAA;QAAA,IAAAM,QAAA,EAAAC,qBAAA,CAAA;QAClB,IAAA,CAAKL,UAAa,GAAA,IAAA,CAAA;QAClB,IAAMxC,MAAS,GAAAsC,cAAA,CAAA;QACf,IAAMrC,SAASD,MAAO,CAAAC,MAAA,CAAOO,GAAI,CAAA,UAACsC,GAAGC,KAAU,EAAA;AAAA,UAAA,IAAAC,qBAAA,CAAA;UAAA,OAAA7B,gBAAA,CAAiB2B,CAAE,CAAAvC,IAAA,EAAMuC,EAAEnC,KAAO,EAAAqC,CAAAA,qBAAA,GAAAZ,KAAA,CAAKa,eAAepB,MAAO,CAAAkB,KAAA,CAAA,MAAAC,IAAAA,IAAAA,qBAAA,KAA3BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAmC5B,EAAE,CAAC,CAAA;SAAA,CAAA,CAAA;QACvH,IAAA,CAAK6B,cAAiB,GAAA;AACpBpB,UAAAA,MAAQ,EAAA5B,MAAA;UACRC,QAAQF,MAAO,CAAAE,MAAA;AACf4B,UAAAA,YAAY,IAAK,CAAAmB,cAAA,CAAenB,UAAc,MAAAc,QAAA,GAAA3C,MAAA,CAAO,+CAAP2C,QAAA,CAAWxB,EAAM,CAAA,IAAA,IAAA;SACjE,CAAA;AACK,QAAA,IAAA,CAAA6B,cAAA,CAAelB,MAAM,IAAK,CAAAmB,cAAA,CAAA;QAC/BP,UAAA,GAAA,CAAAE,qBAAA,GAAa,KAAKM,qBAAuB,MAAA,IAAA,IAAAN,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA5BA,qBAAA,CAA4BlC,KAAA,CAAA;AAC3C,OAAA;AAEA,MAAA,IAAA,CAAKyC,aAAaT,UAAU,CAAA,CAAA;AAC9B,KAAA;AAAA,GAAA,EAAA;IAAAT,GAAA,EAAA,YAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAiB;AACf,MAAA,OAAO,KAAK7D,MAAO,CAAAiC,CAAA,CAAA;KACrB;AAAA6B,IAAAA,GAAA,EAEA,SAAAA,GAAenB,CAAAA,KAAO,EAAA;AACf,MAAA,IAAA,CAAA3C,MAAA,CAAOiC,IAAIpC,IAAK,CAAAkE,GAAA,CAAI,GAAGlE,IAAK,CAAAmE,GAAA,CAAI,GAAK,EAAArB,KAAK,CAAC,CAAA,CAAA;MAChD,IAAA,CAAKO,0BAA2B,EAAA,CAAA;AAClC,KAAA;AAAA,GAAA,EAAA;IAAAR,GAAA,EAAA,OAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAY;AACV,MAAA,OAAO,KAAK7D,MAAO,CAAAkC,CAAA,CAAA;KACrB;AAAA4B,IAAAA,GAAA,EAEA,SAAAA,GAAUnB,CAAAA,KAAO,EAAA;AACV,MAAA,IAAA,CAAA3C,MAAA,CAAOkC,IAAIrC,IAAK,CAAAkE,GAAA,CAAI,GAAGlE,IAAK,CAAAmE,GAAA,CAAI,GAAK,EAAArB,KAAK,CAAC,CAAA,CAAA;MAChD,IAAA,CAAKO,0BAA2B,EAAA,CAAA;AAClC,KAAA;AAAA,GAAA,EAAA;IAAAR,GAAA,EAAA,KAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAU;AACR,MAAA,OAAO,KAAK7D,MAAO,CAAAmC,CAAA,CAAA;KACrB;AAAA2B,IAAAA,GAAA,EAEA,SAAAA,GAAQnB,CAAAA,KAAO,EAAA;AACR,MAAA,IAAA,CAAA3C,MAAA,CAAOmC,IAAItC,IAAK,CAAAkE,GAAA,CAAI,GAAGlE,IAAK,CAAAmE,GAAA,CAAI,GAAK,EAAArB,KAAK,CAAC,CAAA,CAAA;MAChD,IAAA,CAAKO,0BAA2B,EAAA,CAAA;AAClC,KAAA;AAAA,GAAA,EAAA;IAAAR,GAAA,EAAA,OAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAY;AACV,MAAA,OAAO,KAAK7D,MAAO,CAAAoC,CAAA,CAAA;KACrB;AAAA0B,IAAAA,GAAA,EAEA,SAAAA,GAAUnB,CAAAA,KAAO,EAAA;AACf,MAAA,IAAA,CAAK3C,MAAO,CAAAoC,CAAA,GAAIvC,IAAK,CAAAkE,GAAA,CAAI,GAAGlE,IAAK,CAAAmE,GAAA,CAAI,CAAG,EAAAnE,IAAA,CAAKC,KAAM,CAAA6C,KAAA,GAAQ,GAAG,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA;MACtE,IAAA,CAAKO,0BAA2B,EAAA,CAAA;AAClC,KAAA;AAAA,GAAA,EAAA;IAAAR,GAAA,EAAA,KAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAU;AACR,MAAA,IAAAI,SAAA,GAAoBlE,QAAA,CAAS,KAAKC,MAAM,CAAA;QAAhCkE,CAAG,GAAAD,SAAA,CAAHC,CAAG;QAAAC,CAAA,GAAAF,SAAA,CAAAE,CAAA;QAAGC,cAAAA;AACP,MAAA,OAAA,MAAA,CAAAlD,MAAA,CAAOtB,UAAUsE,CAAC,CAAA,QAAAhD,MAAA,CAAMtB,UAAUuE,CAAC,CAAA,EAAAjD,IAAAA,CAAAA,CAAAA,MAAA,CAAMtB,UAAUwE,CAAC,CAAA,EAAA,GAAA,CAAA,CAAA;AAC7D,KAAA;AAAA,GAAA,EAAA;IAAA1B,GAAA,EAAA,MAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAW;AACH,MAAA,IAAAQ,UAAA,GAEFtE,QAAS,CAAA,IAAA,CAAKC,MAAM,CAAA;QADtBkE,CAAA,GAAAG,UAAA,CAAAH,CAAA;QAAGC,CAAA,GAAAE,UAAA,CAAAF,CAAA;QAAGC,CAAA,GAAAC,UAAA,CAAAD,CAAA;QAAGhC,CAAA,GAAAiC,UAAA,CAAAjC,CAAA,CAAA;MAEJ,OAAAlB,OAAAA,CAAAA,MAAA,CAAQtB,UAAUsE,CAAC,CAAA,EAAA,IAAA,CAAA,CAAAhD,MAAA,CAAMtB,UAAUuE,CAAC,CAAA,EAAA,IAAA,CAAA,CAAAjD,MAAA,CAAMtB,SAAU,CAAAwE,CAAC,CAAM,EAAA,IAAA,CAAA,CAAAlD,MAAA,CAAAkB,CAAA,EAAA,GAAA,CAAA,CAAA;AACpE,KAAA;AAAA,GAAA,EAAA;IAAAM,GAAA,EAAA,KAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAU;AACR,MAAA,IAAAS,aAAA,GAAoB,KAAKC,OAAQ,EAAA;QAAzBpC,CAAG,GAAAmC,aAAA,CAAHnC,CAAG;QAAAF,CAAA,GAAAqC,aAAA,CAAArC,CAAA;QAAGC,CAAE,GAAAoC,aAAA,CAAFpC,CAAE,CAAA;MACT,OAAAhB,MAAAA,CAAAA,MAAA,CAAOiB,gBAAMF,CAAO,EAAA,KAAA,CAAA,CAAAf,MAAA,CAAAgB,CAAA,EAAA,IAAA,CAAA,CAAA;AAC7B,KAAA;AAAA,GAAA,EAAA;IAAAQ,GAAA,EAAA,MAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAW;AACH,MAAA,IAAAW,cAAA,GAEF,KAAKD,OAAQ,EAAA;QADfpC,CAAA,GAAAqC,cAAA,CAAArC,CAAA;QAAGF,CAAA,GAAAuC,cAAA,CAAAvC,CAAA;QAAGC,CAAA,GAAAsC,cAAA,CAAAtC,CAAA;QAAGE,CAAA,GAAAoC,cAAA,CAAApC,CAAA,CAAA;AAEJ,MAAA,OAAA,OAAA,CAAAlB,MAAA,CAAQiB,CAAM,EAAA,IAAA,CAAA,CAAAjB,MAAA,CAAAe,CAAA,EAAAf,KAAAA,CAAAA,CAAAA,MAAA,CAAOgB,CAAO,EAAAhB,KAAAA,CAAAA,CAAAA,MAAA,CAAAkB,CAAA,EAAA,GAAA,CAAA,CAAA;AACrC,KAAA;AAAA,GAAA,EAAA;IAAAM,GAAA,EAAA,KAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAU;AACR,MAAA,IAAAY,aAAA,GAAoB,KAAKC,OAAQ,EAAA;QAAzBvC,CAAG,GAAAsC,aAAA,CAAHtC,CAAG;QAAAF,CAAA,GAAAwC,aAAA,CAAAxC,CAAA;QAAG0C,CAAE,GAAAF,aAAA,CAAFE,CAAE,CAAA;MACT,OAAAzD,MAAAA,CAAAA,MAAA,CAAOiB,gBAAMF,CAAO,EAAA,KAAA,CAAA,CAAAf,MAAA,CAAAyD,CAAA,EAAA,IAAA,CAAA,CAAA;AAC7B,KAAA;AAAA,GAAA,EAAA;IAAAjC,GAAA,EAAA,MAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAW;AACH,MAAA,IAAAe,cAAA,GAEF,KAAKF,OAAQ,EAAA;QADfvC,CAAA,GAAAyC,cAAA,CAAAzC,CAAA;QAAGF,CAAA,GAAA2C,cAAA,CAAA3C,CAAA;QAAG0C,CAAA,GAAAC,cAAA,CAAAD,CAAA;QAAGvC,CAAA,GAAAwC,cAAA,CAAAxC,CAAA,CAAA;AAEJ,MAAA,OAAA,OAAA,CAAAlB,MAAA,CAAQiB,CAAM,EAAA,IAAA,CAAA,CAAAjB,MAAA,CAAAe,CAAA,EAAAf,KAAAA,CAAAA,CAAAA,MAAA,CAAOyD,CAAO,EAAAzD,KAAAA,CAAAA,CAAAA,MAAA,CAAAkB,CAAA,EAAA,GAAA,CAAA,CAAA;AACrC,KAAA;AAAA,GAAA,EAAA;IAAAM,GAAA,EAAA,KAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAU;MACR,OAAO5D,SAAU,CAAA,IAAA,CAAKD,MAAM,CAAA,CAAEuB,WAAY,EAAA,CAAA;AAC5C,KAAA;AAAA,GAAA,EAAA;IAAAmB,GAAA,EAAA,MAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAW;MACT,OAAO5D,SAAU,CAAA,IAAA,CAAKD,MAAM,CAAA,CAAE6E,YAAa,EAAA,CAAA;AAC7C,KAAA;AAAA,GAAA,EAAA;IAAAnC,GAAA,EAAA,MAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAW;AACH,MAAA,IAAAiB,aAAA,GAEF,KAAKC,OAAQ,EAAA;QADfzB,CAAA,GAAAwB,aAAA,CAAAxB,CAAA;QAAG0B,CAAA,GAAAF,aAAA,CAAAE,CAAA;QAAGC,CAAA,GAAAH,aAAA,CAAAG,CAAA;QAAGC,CAAA,GAAAJ,aAAA,CAAAI,CAAA,CAAA;AAEJ,MAAA,OAAA,OAAA,CAAAhE,MAAA,CAAQoC,CAAM,EAAA,IAAA,CAAA,CAAApC,MAAA,CAAA8D,CAAA,EAAA9D,IAAAA,CAAAA,CAAAA,MAAA,CAAM+D,CAAM,EAAA/D,IAAAA,CAAAA,CAAAA,MAAA,CAAAgE,CAAA,EAAA,GAAA,CAAA,CAAA;AACnC,KAAA;AAAA,GAAA,EAAA;IAAAxC,GAAA,EAAA,KAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAU;MACR,IAAI,KAAKb,UAAY,EAAA;QACnB,OAAO,IAAK,CAAAU,cAAA,CAAA;AACd,OAAA;MACA,OAAO,IAAK,CAAAyB,IAAA,CAAA;AACd,KAAA;AAAA,GAAA,EAAA;IAAAzC,GAAA,EAAA,gBAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAqB;AACb,MAAA,IAAEf,cAAgB,GAAmB,IAAA,CAAnCA,cAAgB;QAAAsC,cAAA,GAAmB,IAAA,CAAnBA,cAAA,CAAA;AACxB,MAAA,OAAO7E,qBAAsB,CAAA;AAC3BE,QAAAA,MAAQ,EAAAqC,cAAA;AACRpC,QAAAA,MAAQ,EAAA0E,cAAAA;AACV,OAAC,CAAA,CAAA;AACH,KAAA;AAAA,GAAA,EAAA;IAAA1C,GAAA,EAAA,gBAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAqB;AACnB,MAAA,OAAO,KAAKJ,cAAe,CAAApB,MAAA,CAAA;KAC7B;AAAAyB,IAAAA,GAAA,EAEA,SAAAA,GAAmBzB,CAAAA,MAA8B,EAAA;AAC/C,MAAA,IAAA,CAAKoB,eAAepB,MAAS,GAAAA,MAAA,CAAA;AACxB,MAAA,IAAA,CAAAoB,cAAA,CAAelB,MAAM,IAAK,CAAAmB,cAAA,CAAA;AACjC,KAAA;AAAA,GAAA,EAAA;IAAAhB,GAAA,EAAA,oBAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAyB;AACvB,MAAA,OAAO,KAAKJ,cAAe,CAAAnB,UAAA,CAAA;KAC7B;AAAAwB,IAAAA,GAAA,EAEA,SAAAA,GAAuBlC,CAAAA,EAAY,EAAA;AAAA,MAAA,IAAAyD,sBAAA,CAAA;AAC7B,MAAA,IAAAzD,EAAA,KAAO,KAAK0D,kBAAoB,EAAA;AAClC,QAAA,OAAA;AACF,OAAA;AACA,MAAA,IAAA,CAAK7B,eAAenB,UAAa,GAAAV,EAAA,CAAA;AAC5B,MAAA,IAAA,CAAAgC,YAAA,CAAAyB,CAAAA,sBAAA,GAAa,IAAK,CAAA1B,qBAAA,MAAA,IAAA,IAAA0B,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAALA,sBAAA,CAA4BlE,KAAK,CAAA,CAAA;AACrD,KAAA;AAAA,GAAA,EAAA;IAAAuB,GAAA,EAAA,gBAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAAqB;AACnB,MAAA,OAAO,KAAKJ,cAAe,CAAA/C,MAAA,CAAA;KAC7B;AAAAoD,IAAAA,GAAA,EAEA,SAAAA,GAAmBpD,CAAAA,MAAgB,EAAA;AAC5B,MAAA,IAAA,CAAA+C,cAAA,CAAe/C,SAASb,IAAK,CAAAkE,GAAA,CAAI,GAAGlE,IAAK,CAAAmE,GAAA,CAAI,GAAK,EAAAtD,MAAM,CAAC,CAAA,CAAA;AACzD,MAAA,IAAA,CAAA+C,cAAA,CAAelB,MAAM,IAAK,CAAAmB,cAAA,CAAA;AACjC,KAAA;AAAA,GAAA,EAAA;IAAAhB,GAAA,EAAA,uBAAA;IAAAmB,GAAA,EAEA,SAAAA,GAAAA,GAA4B;AACpB,MAAA,IAAEf,cAAgB,GAAuB,IAAA,CAAvCA,cAAgB;QAAAwC,kBAAA,GAAuB,IAAA,CAAvBA,kBAAA,CAAA;AACxB,MAAA,OAAOxC,eAAeyC,IAAK,CAAA,UAACpE,KAAU,EAAA;AAAA,QAAA,OAAAA,KAAA,CAAMS,OAAO0D,kBAAkB,CAAA;OAAA,CAAA,CAAA;AACvE,KAAA;AAAA,GAAA,EAAA;IAAA5C,GAAA,EAAA,oBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAA6C,kBAAqBA,GAAA;MACZ,OAAA;QACLC,KAAK,IAAK,CAAAC,GAAA;QACVC,MAAM,IAAK,CAAAC,IAAA;QACXC,KAAK,IAAK,CAAAC,GAAA;QACVC,MAAM,IAAK,CAAAZ,IAAA;QACXa,KAAK,IAAK,CAAAC,GAAA;QACVC,MAAM,IAAK,CAAAC,IAAA;QACXC,KAAK,IAAK,CAAAC,GAAA;QACVC,MAAM,IAAK,CAAAC,IAAA;QACXC,KAAK,IAAK,CAAAjE,GAAA;QACVkE,MAAM,IAAK,CAAAC,IAAAA;OACb,CAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAhE,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAgE,iBAAAA,CAAkBC,QAAqBC,WAAsB,EAAA;AAC3D,MAAA,IAAI,IAAK,CAAA7D,UAAA,EAAY,OAAO,IAAK,CAAAU,cAAA,CAAA;AACjC,MAAA,IAAMoD,WACJ,GAAAD,WAAA,IAAeD,MAAU,IAAAG,gBAAA,GACrBA,iBAAiBH,MACjB,CAAA,GAAAA,MAAA,CAAA;AAEC,MAAA,OAAA,IAAA,CAAKpB,oBAAqB,CAAAsB,WAAA,CAAA,CAAA;AACnC,KAAA;AAAA,GAAA,EAAA;IAAApE,GAAA,EAAA,4BAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAO,0BAA6BA,GAAA;AAC3B,MAAA,IAAQF,UAAA,GAAmD,IAAA,CAAnDA,UAAA;QAAYF,cAAgB,GAAuB,IAAA,CAAvCA,cAAgB;QAAAwC,kBAAA,GAAuB,IAAA,CAAvBA,kBAAA,CAAA;AAC9B,MAAA,IAAE0B,SAAWlE,cAAA,CAAXkE;AACR,MAAA,IAAMC,UAAU,IAAK,CAAAtD,qBAAA,CAAA;MACrB,IAAI,CAACX,UAAA,IAAcgE,MAAW,KAAA,CAAA,IAAK,CAACC,OAAS,EAAA;AACpC,QAAA,OAAA,KAAA,CAAA;AACT,OAAA;AACA,MAAA,IAAM1D,QAAQT,cAAe,CAAAoE,SAAA,CAAU,UAAC/F,KAAU,EAAA;AAAA,QAAA,OAAAA,KAAA,CAAMS,OAAO0D,kBAAkB,CAAA;OAAA,CAAA,CAAA;AACjF,MAAA,IAAM6B,QAAW,GAAAC,aAAA,CAAAA,aAAA,KACZH,OAAA,CAAA,EAAA,EAAA,EAAA;QACH9F,OAAO,IAAK,CAAAgE,IAAAA;OACd,CAAA,CAAA;MACerC,cAAA,CAAAuE,MAAA,CAAO9D,KAAO,EAAA,CAAA,EAAG4D,QAAQ,CAAA,CAAA;AACnC,MAAA,IAAA,CAAArE,cAAA,GAAiBA,eAAewE,KAAM,EAAA,CAAA;AACpC,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;AAAA,GAAA,EAAA;IAAA5E,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAiB,aAAa9B,KAAe,EAAA;MAC1B,IAAMX,KAAQ,GAAAlB,SAAA,CAAUsH,gBAAiB,CAAAzF,KAAK,CAAC,CAAA,CAAA;AACzC,MAAA,IAAAyE,IAAA,GAAOpF,MAAMf,KAAM,EAAA,CAAA;MACzB,IAAA,CAAKJ,MAAS,GAAAuG,IAAA,CAAA;AAChB,KAAA;AAAA,GAAA,EAAA;IAAA7D,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAEA,SAAA6E,OAAUA,GAAA;AACF,MAAA,IAAAC,UAAA,GAEF1H,QAAS,CAAA,IAAA,CAAKC,MAAM,CAAA;QADtBkE,CAAA,GAAAuD,UAAA,CAAAvD,CAAA;QAAGC,CAAA,GAAAsD,UAAA,CAAAtD,CAAA;QAAGC,CAAA,GAAAqD,UAAA,CAAArD,CAAA;QAAGhC,CAAA,GAAAqF,UAAA,CAAArF,CAAA,CAAA;MAEJ,OAAA;AACL8B,QAAAA,CAAA,EAAGtE,UAAUsE,CAAC,CAAA;AACdC,QAAAA,CAAA,EAAGvE,UAAUuE,CAAC,CAAA;AACdC,QAAAA,CAAA,EAAGxE,UAAUwE,CAAC,CAAA;AACdhC,QAAAA,CAAA,EAAAA,CAAAA;OACF,CAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAM,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAoC,OAAUA,GAAA;AACR,MAAA,IAAA2C,aAAA,GAAoB,KAAKF,OAAQ,EAAA;QAAzBtD,CAAG,GAAAwD,aAAA,CAAHxD,CAAG;QAAAC,CAAA,GAAAuD,aAAA,CAAAvD,CAAA;QAAGC,CAAE,GAAAsD,aAAA,CAAFtD,CAAE,CAAA;MACV,IAAAuD,SAAA,GAAeC,QAAA,CAAS1D,CAAG,EAAAC,CAAA,EAAGC,CAAC,CAAA;QAAAyD,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA9BrE,QAAAA;AAAG0B,QAAAA,CAAG,GAAA6C,UAAA,CAAA,CAAA,CAAA;AAAA5C,QAAAA,CAAA,GAAA4C,UAAA,CAAA,CAAA,CAAA;AAAG3C,QAAAA,CAAC,GAAA2C,UAAA,CAAA,CAAA,CAAA,CAAA;MACV,OAAA;AACLvE,QAAAA,CAAA,EAAG1D,SAAU,CAAA0D,CAAA,GAAI,GAAG,CAAA;AACpB0B,QAAAA,CAAA,EAAGpF,SAAU,CAAAoF,CAAA,GAAI,GAAG,CAAA;AACpBC,QAAAA,CAAA,EAAGrF,SAAU,CAAAqF,CAAA,GAAI,GAAG,CAAA;AACpBC,QAAAA,CAAA,EAAGtF,SAAU,CAAAsF,CAAA,GAAI,GAAG,CAAA;OACtB,CAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAxC,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAEA,SAAA4B,OAAuCA,GAAA;AACjC,MAAA,IAAAwD,SAAA,GAEA5H,QAAS,CAAA,IAAA,CAAKH,MAAM,CAAA;QADtBmC,CAAA,GAAA4F,SAAA,CAAA5F,CAAA;QAAGF,CAAA,GAAA8F,SAAA,CAAA9F,CAAA;QAAGC,CAAA,GAAA6F,SAAA,CAAA7F,CAAA;QAAGE,CAAA,GAAA2F,SAAA,CAAA3F,CAAA,CAAA;AAEXD,MAAAA,CAAA,GAAIvC,UAAUuC,CAAC,CAAA,CAAA;AACXF,MAAAA,CAAA,GAAArC,SAAA,CAAUqC,IAAI,GAAG,CAAA,CAAA;AACjBC,MAAAA,CAAA,GAAAtC,SAAA,CAAUsC,IAAI,GAAG,CAAA,CAAA;AAChBE,MAAAA,CAAA,IAAA,CAAA,CAAA;MACE,OAAA;AACLD,QAAAA,CAAA,EAAAA,CAAA;AACAF,QAAAA,CAAA,EAAAA,CAAA;AACAC,QAAAA,CAAA,EAAAA,CAAA;AACAE,QAAAA,CAAA,EAAAA,CAAAA;OACF,CAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAM,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAEA,SAAA+B,OAAuCA,GAAA;AACjC,MAAA,IAAAsD,SAAA,GAEA3H,QAAS,CAAA,IAAA,CAAKL,MAAM,CAAA;QADtBmC,CAAA,GAAA6F,SAAA,CAAA7F,CAAA;QAAGF,CAAA,GAAA+F,SAAA,CAAA/F,CAAA;QAAG0C,CAAA,GAAAqD,SAAA,CAAArD,CAAA;QAAGvC,CAAA,GAAA4F,SAAA,CAAA5F,CAAA,CAAA;AAEXD,MAAAA,CAAA,GAAIvC,UAAUuC,CAAC,CAAA,CAAA;AACXF,MAAAA,CAAA,GAAArC,SAAA,CAAUqC,IAAI,GAAG,CAAA,CAAA;AACjB0C,MAAAA,CAAA,GAAA/E,SAAA,CAAU+E,IAAI,GAAG,CAAA,CAAA;AAChBvC,MAAAA,CAAA,IAAA,CAAA,CAAA;MACE,OAAA;AACLD,QAAAA,CAAA,EAAAA,CAAA;AACAF,QAAAA,CAAA,EAAAA,CAAA;AACA0C,QAAAA,CAAA,EAAAA,CAAA;AACAvC,QAAAA,CAAA,EAAAA,CAAAA;OACF,CAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAM,GAAA,EAAA,QAAA;AAAAC,IAAAA,KAAA,EAOA,SAAAsF,OAAO9G,KAAwB,EAAA;MAC7B,OAAOlB,SAAU,CAAAgI,MAAA,CAAO,IAAK,CAAA9C,IAAA,EAAMhE,KAAK,CAAA,CAAA;AAC1C,KAAA;AAAA,GAAA,CAAA,EAAA,CAAA;IAAAuB,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAOA,SAAOuF,QAAQ/G,KAAwB,EAAA;AACjC,MAAA,IAAA4B,mBAAA,CAAoB5B,KAAK,CAAG,EAAA;AACvB,QAAA,OAAA,IAAA,CAAA;AACT,OAAA;AACO,MAAA,OAAAlB,SAAA,CAAUkB,KAAK,CAAA,CAAE+G,OAAQ,EAAA,CAAA;AAClC,KAAA;AAAA,GAAA,EAAA;IAAAxF,GAAA,EAAA,YAAA;IAAAC,KAAA,EAEA,SAAOwF,UAAAA,CAAWhG,CAAW,EAAAF,CAAA,EAAWC,GAAWE,CAAW,EAAA;AAC5D,MAAA,OAAOnC,SAAU,CAAA;AACfkC,QAAAA,CAAA,EAAAA,CAAA;AAAGF,QAAAA,CAAA,EAAAA,CAAA;AAAGC,QAAAA,CAAA,EAAAA,CAAA;AAAGE,QAAAA,CAAA,EAAAA,CAAAA;AACX,OAAC,EAAEgG,WAAY,EAAA,CAAA;AACjB,KAAA;AAAA,GAAA,EAAA;IAAA1F,GAAA,EAAA,YAAA;IAAAC,KAAA,EAEA,SAAO0F,UAAAA,CAAWlG,CAAW,EAAAF,CAAA,EAAW0C,GAAWvC,CAAW,EAAA;AAC5D,MAAA,OAAOnC,SAAU,CAAA;AACfkC,QAAAA,CAAA,EAAAA,CAAA;AAAGF,QAAAA,CAAA,EAAAA,CAAA;AAAG0C,QAAAA,CAAA,EAAAA,CAAA;AAAGvC,QAAAA,CAAA,EAAAA,CAAAA;AACX,OAAC,EAAEkG,WAAY,EAAA,CAAA;AACjB,KAAA;AAAA,GAAA,EAAA;IAAA5F,GAAA,EAAA,YAAA;IAAAC,KAAA,EAEA,SAAO4F,UAAAA,CAAWrE,CAAW,EAAAC,CAAA,EAAWC,GAAWhC,CAAW,EAAA;AAC5D,MAAA,OAAOnC,SAAU,CAAA;AACfiE,QAAAA,CAAA,EAAAA,CAAA;AAAGC,QAAAA,CAAA,EAAAA,CAAA;AAAGC,QAAAA,CAAA,EAAAA,CAAA;AAAGhC,QAAAA,CAAA,EAAAA,CAAAA;AACX,OAAC,EAAEgG,WAAY,EAAA,CAAA;AACjB,KAAA;AAAA,GAAA,EAAA;IAAA1F,GAAA,EAAA,WAAA;AAAAC,IAAAA,KAAA,EAEA,SAAO6F,SAAUA,CAAA9C,GAAA,EAAatD,CAAW,EAAA;AACjC,MAAA,IAAAjB,KAAA,GAAQlB,UAAUyF,GAAG,CAAA,CAAA;AAC3BvE,MAAAA,KAAA,CAAMG,SAASc,CAAC,CAAA,CAAA;AAChB,MAAA,OAAOjB,MAAMI,WAAY,EAAA,CAAA;AAC3B,KAAA;AAAA,GAAA,EAAA;IAAAmB,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,EAQA,SAAO8F,YAAaA,CAAAjI,MAAA,EAAaoG,MAAgB,EAAA;MAC/C,IAAIA,WAAW,MAAQ,EAAA;AACf,QAAA,IACJtD,CAAA,GACE9C,MAAA,CADF8C,CAAA;UAAG0B,CAAA,GACDxE,MAAA,CADCwE,CAAA;UAAGC,CAAA,GACJzE,MAAA,CADIyE,CAAA;UAAGC,CAAA,GACP1E,MAAA,CADO0E,CAAA,CAAA;AAEJ,QAAA,OAAA,OAAA,CAAAhE,MAAA,CAAQoC,CAAM,EAAA,IAAA,CAAA,CAAApC,MAAA,CAAA8D,CAAA,EAAA9D,IAAAA,CAAAA,CAAAA,MAAA,CAAM+D,CAAM,EAAA/D,IAAAA,CAAAA,CAAAA,MAAA,CAAAgE,CAAA,EAAA,GAAA,CAAA,CAAA;AACnC,OAAA;AACM,MAAA,IAAA/D,KAAA,GAAQlB,UAAUO,MAAQ,EAAA;AAC9BoG,QAAAA,MAAA,EAAAA,MAAAA;AACF,OAAC,CAAA,CAAA;AACD,MAAA,OAAOzF,MAAMuH,WAAY,EAAA,CAAA;AAC3B,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,GAAA;AAgCFC,MAAA,GAxYa9G,KAAM,CAAA;AAAAG,eAAA,CAANH,KAAM,EA+WQ,iBAAA,EAAA,UAACC;SAAkB,CAAC,CAAC8G,gBAAgB9G,KAAK,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAAAE,eAAA,CA/WxDH,KAAM,EAAA,SAAA,EAuXA,UAACgH,MAAA,EAAgBC,MAA4B,EAAA;AACtD,EAAA,IAAAC,gBAAA,GAAmBlH,MAAM,CAAA+G,eAAA,CAAgBC,MAAM,CAAA,CAAA;AAC/C,EAAA,IAAAG,gBAAA,GAAmBnH,MAAM,CAAA+G,eAAA,CAAgBE,MAAM,CAAA,CAAA;EACrD,IAAIC,oBAAoBC,gBAAkB,EAAA;AAClC,IAAA,IAAAC,YAAA,GAAelG,oBAAoB8F,MAAM,CAAA,CAAA;AACzC,IAAA,IAAAK,YAAA,GAAenG,oBAAoB+F,MAAM,CAAA,CAAA;AAC3C,IAAA,IAAA,CAACG,gBAAgB,CAACC,YAAA,EAAqB,OAAA,KAAA,CAAA;AAErC,IAAA,IAAAC,cAAA,GAAiB5I,sBAAsB0I,YAAY,CAAA,CAAA;AACnD,IAAA,IAAAG,cAAA,GAAiB7I,sBAAsB2I,YAAY,CAAA,CAAA;IACzD,OAAOC,cAAmB,KAAAC,cAAA,CAAA;AAC5B,GAAA;AACI,EAAA,IAAA,CAACL,gBAAoB,IAAA,CAACC,gBAAkB,EAAA;AACnC,IAAA,OAAA/I,SAAA,CAAUgI,MAAO,CAAAY,MAAA,EAAQC,MAAM,CAAA,CAAA;AACxC,GAAA;AACO,EAAA,OAAA,KAAA,CAAA;AACT,CAAA,CAAA,CAAA;AAGF,IAAMO,wBAA2B,GAAA,CAC/B,OAAA,EACA,KAAA,EACA,KAAA,EACA,MAAA,EACA,KAAA,EACA,MAAA,EACA,KAAA,EACA,MAAA,EACA,KAAA,EACA,MAAA,EACA,YAAA,EACA,OAAA,EACA,YAAA,CACF,CAAA;IAOaC,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBnI,KAAqC,EAAA;EAClE,IAAI,CAACA,KAAO,EAAA;AACH,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;EACM,IAAAoI,WAAA,kBAAqBC,MAAA,CAAAC,MAAA,CAAO,IAAI,CAAA,CAAA;AACbJ,EAAAA,wBAAA,CAAAK,OAAA,CAAQ,UAAChH,GAAQ,EAAA;AACxC6G,IAAAA,WAAA,CAAY7G,OAAQvB,KAAiC,CAAAuB,GAAA,CAAA,CAAA;AACvD,GAAC,CAAA,CAAA;EACD,IAAIvB,MAAM6B,UAAY,EAAA;AACpBuG,IAAAA,WAAA,CAAY7F,iBAAiBvC,KAAM,CAAAuC,cAAA,CAAA;AACrC,GAAA;AACO,EAAA,OAAA6F,WAAA,CAAA;AACT;;;;"}