{"version":3,"file":"application-d81d55ab.js","sources":["../../../node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.glsl.js","../../../node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.js","../../../node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.glsl.js","../../../node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js","../../../node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js","../../../node_modules/@deck.gl/core/dist/esm/utils/tesselator.js","../../../node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-vertex.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-fragment.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer.js","../../../node_modules/@math.gl/polygon/dist/esm/polygon-utils.js","../../../node_modules/@math.gl/polygon/dist/esm/utils.js","../../../node_modules/@math.gl/polygon/dist/esm/lineclip.js","../../../node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js","../../../node_modules/@math.gl/polygon/dist/esm/cut-by-mercator-bounds.js","../../../node_modules/@deck.gl/layers/dist/esm/path-layer/path.js","../../../node_modules/@deck.gl/layers/dist/esm/path-layer/path-tesselator.js","../../../node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-vertex.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-fragment.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js","../../../node_modules/earcut/src/earcut.js","../../../node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon.js","../../../node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon-tesselator.js","../../../node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-fragment.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js","../../../node_modules/@deck.gl/layers/dist/esm/utils.js","../../../node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-binary.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer.js","../../../node_modules/@mapbox/tiny-sdf/index.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/utils.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/lru-cache.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/font-atlas-manager.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-vertex.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-fragment.glsl.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer.js","../../../node_modules/@deck.gl/layers/dist/esm/text-layer/text-layer.js","../../../node_modules/@deck.gl/layers/dist/esm/geojson-layer/sub-layer-map.js","../../../node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson.js","../../../node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer-props.js","../../../node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer.js","../../../node_modules/activestorage/app/assets/javascripts/activestorage.js","../../../node_modules/whatwg-fetch/fetch.js","../../../app/javascript/components/lib/pluralize.ts","../../../app/javascript/components/UserProfile/lib/customer.ts","../../../app/javascript/components/HistoryReport/lib/HistoryReport.ts","../../../app/javascript/components/UserProfile/lib/credit_purchase.ts","../../../app/javascript/components/UserProfile/components/CreditPurchaseForm/CouponForm.tsx","../../../app/javascript/components/UserProfile/components/CreditPurchaseForm/OrderDetails.tsx","../../../app/javascript/components/UserProfile/components/CreditPurchaseForm/Form.tsx","../../../app/javascript/components/UserProfile/components/CreditPurchaseForm/DataManager.tsx","../../../app/javascript/components/UserProfile/components/CreditBalances.tsx","../../../node_modules/@stripe/react-stripe-js/dist/react-stripe.esm.js","../../../app/javascript/components/UserProfile/components/CreditCardForm.tsx","../../../app/javascript/components/UserProfile/components/PasswordField.tsx","../../../app/javascript/components/UserProfile/lib/credit_card.ts","../../../node_modules/@stripe/stripe-js/dist/stripe.esm.js","../../../app/javascript/components/UserProfile/components/WrappedCreditCardForm.tsx","../../../app/javascript/components/UserProfile/components/ProfileBillingInfo.tsx","../../../app/javascript/components/HistoryReport/components/HistoryReportCreditPurchase.tsx","../../../app/javascript/components/HistoryReport/components/HistoryReportPurchase.tsx","../../../app/javascript/components/HistoryReport/components/HistoryReportConfirmation.tsx","../../../app/javascript/components/HistoryReport/components/HistoryReportErrors.tsx","../../../node_modules/actioncable/lib/assets/compiled/action_cable.js","../../../app/javascript/components/lib/cable.ts","../../../app/javascript/components/HistoryReport/components/ReportSpinner.tsx","../../../app/javascript/components/HistoryReport/components/ReportBuildStatus.tsx","../../../app/javascript/components/HistoryReport/components/HistoryReport.tsx","../../../node_modules/papaparse/papaparse.min.js","../../../app/javascript/components/HistoryReport/components/HistoryLocationForm.tsx","../../../app/javascript/components/HistoryReport/components/HistoryReportLocationsTable.tsx","../../../app/javascript/components/HistoryReport/components/HistoryReportForm.tsx","../../../app/javascript/components/Storm/components/PropertyTooltip.tsx","../../../app/javascript/lib/hail_size.ts","../../../app/javascript/components/Storm/components/Map.tsx","../../../app/javascript/components/Storm/components/MapNavigation.tsx","../../../app/javascript/components/Storm/components/MapPage.tsx","../../../app/javascript/components/PortalMap/components/PortalMap.tsx","../../../app/javascript/entrypoints/application.ts"],"sourcesContent":["export default \"#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\\n\\nstruct AmbientLight {\\n vec3 color;\\n};\\n\\nstruct PointLight {\\n vec3 color;\\n vec3 position;\\n vec3 attenuation;\\n};\\n\\nstruct DirectionalLight {\\n vec3 color;\\n vec3 direction;\\n};\\n\\nuniform AmbientLight lighting_uAmbientLight;\\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\\nuniform int lighting_uPointLightCount;\\nuniform int lighting_uDirectionalLightCount;\\n\\nuniform bool lighting_uEnabled;\\n\\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\\n return pointLight.attenuation.x\\n + pointLight.attenuation.y * distance\\n + pointLight.attenuation.z * distance * distance;\\n}\\n\\n#endif\\n\";\n//# sourceMappingURL=lights.glsl.js.map","import lightingShader from './lights.glsl';\nconst INITIAL_MODULE_OPTIONS = {\n lightSources: {}\n};\n\nfunction convertColor() {\n let {\n color = [0, 0, 0],\n intensity = 1.0\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return color.map(component => component * intensity / 255.0);\n}\n\nfunction getLightSourceUniforms(_ref) {\n let {\n ambientLight,\n pointLights = [],\n directionalLights = []\n } = _ref;\n const lightSourceUniforms = {};\n\n if (ambientLight) {\n lightSourceUniforms['lighting_uAmbientLight.color'] = convertColor(ambientLight);\n } else {\n lightSourceUniforms['lighting_uAmbientLight.color'] = [0, 0, 0];\n }\n\n pointLights.forEach((pointLight, index) => {\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].color\")] = convertColor(pointLight);\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].position\")] = pointLight.position;\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].attenuation\")] = pointLight.attenuation || [1, 0, 0];\n });\n lightSourceUniforms.lighting_uPointLightCount = pointLights.length;\n directionalLights.forEach((directionalLight, index) => {\n lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].color\")] = convertColor(directionalLight);\n lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].direction\")] = directionalLight.direction;\n });\n lightSourceUniforms.lighting_uDirectionalLightCount = directionalLights.length;\n return lightSourceUniforms;\n}\n\nfunction getUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;\n\n if ('lightSources' in opts) {\n const {\n ambientLight,\n pointLights,\n directionalLights\n } = opts.lightSources || {};\n const hasLights = ambientLight || pointLights && pointLights.length > 0 || directionalLights && directionalLights.length > 0;\n\n if (!hasLights) {\n return {\n lighting_uEnabled: false\n };\n }\n\n return Object.assign({}, getLightSourceUniforms({\n ambientLight,\n pointLights,\n directionalLights\n }), {\n lighting_uEnabled: true\n });\n }\n\n if ('lights' in opts) {\n const lightSources = {\n pointLights: [],\n directionalLights: []\n };\n\n for (const light of opts.lights || []) {\n switch (light.type) {\n case 'ambient':\n lightSources.ambientLight = light;\n break;\n\n case 'directional':\n lightSources.directionalLights.push(light);\n break;\n\n case 'point':\n lightSources.pointLights.push(light);\n break;\n\n default:\n }\n }\n\n return getUniforms({\n lightSources\n });\n }\n\n return {};\n}\n\nexport const lights = {\n name: 'lights',\n vs: lightingShader,\n fs: lightingShader,\n getUniforms,\n defines: {\n MAX_LIGHTS: 3\n }\n};\n//# sourceMappingURL=lights.js.map","export default \"\\nuniform float lighting_uAmbient;\\nuniform float lighting_uDiffuse;\\nuniform float lighting_uShininess;\\nuniform vec3 lighting_uSpecularColor;\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\\n vec3 halfway_direction = normalize(light_direction + view_direction);\\n float lambertian = dot(light_direction, normal_worldspace);\\n float specular = 0.0;\\n if (lambertian > 0.0) {\\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\\n specular = pow(specular_angle, lighting_uShininess);\\n }\\n lambertian = max(lambertian, 0.0);\\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\\n}\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n vec3 lightColor = surfaceColor;\\n\\n if (lighting_uEnabled) {\\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uPointLightCount) {\\n break;\\n }\\n PointLight pointLight = lighting_uPointLight[i];\\n vec3 light_position_worldspace = pointLight.position;\\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n }\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uDirectionalLightCount) {\\n break;\\n }\\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n }\\n }\\n return lightColor;\\n}\\n\\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n vec3 lightColor = vec3(0, 0, 0);\\n vec3 surfaceColor = vec3(0, 0, 0);\\n\\n if (lighting_uEnabled) {\\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uPointLightCount) {\\n break;\\n }\\n PointLight pointLight = lighting_uPointLight[i];\\n vec3 light_position_worldspace = pointLight.position;\\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n }\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uDirectionalLightCount) {\\n break;\\n }\\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n }\\n }\\n return lightColor;\\n}\\n\";\n//# sourceMappingURL=phong-lighting.glsl.js.map","import { lights } from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {\n ambient = 0.35,\n diffuse = 0.6,\n shininess = 32,\n specularColor = [30, 30, 30]\n } = material;\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;\n\n if (!('material' in opts)) {\n return {};\n }\n\n const {\n material\n } = opts;\n\n if (!material) {\n return {\n lighting_uEnabled: false\n };\n }\n\n return getMaterialUniforms(material);\n}\n\nexport const gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\nexport const phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n//# sourceMappingURL=phong-lighting.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Layer from './layer';\nimport debug from '../debug';\nimport { flatten } from '../utils/flatten';\nimport { PROP_TYPES_SYMBOL } from '../lifecycle/constants';\nconst TRACE_RENDER_LAYERS = 'compositeLayer.renderLayers';\nexport default class CompositeLayer extends Layer {\n get isComposite() {\n return true;\n }\n\n get isLoaded() {\n return super.isLoaded && this.getSubLayers().every(layer => layer.isLoaded);\n }\n\n getSubLayers() {\n return this.internalState && this.internalState.subLayers || [];\n }\n\n initializeState(context) {}\n\n setState(updateObject) {\n super.setState(updateObject);\n this.setNeedsUpdate();\n }\n\n getPickingInfo({\n info\n }) {\n const {\n object\n } = info;\n const isDataWrapped = object && object.__source && object.__source.parent && object.__source.parent.id === this.id;\n\n if (!isDataWrapped) {\n return info;\n }\n\n info.object = object.__source.object;\n info.index = object.__source.index;\n return info;\n }\n\n filterSubLayer(context) {\n return true;\n }\n\n shouldRenderSubLayer(subLayerId, data) {\n return data && data.length;\n }\n\n getSubLayerClass(subLayerId, DefaultLayerClass) {\n const {\n _subLayerProps: overridingProps\n } = this.props;\n return overridingProps && overridingProps[subLayerId] && overridingProps[subLayerId].type || DefaultLayerClass;\n }\n\n getSubLayerRow(row, sourceObject, sourceObjectIndex) {\n row.__source = {\n parent: this,\n object: sourceObject,\n index: sourceObjectIndex\n };\n return row;\n }\n\n getSubLayerAccessor(accessor) {\n if (typeof accessor === 'function') {\n const objectInfo = {\n index: -1,\n data: this.props.data,\n target: []\n };\n return (x, i) => {\n if (x && x.__source) {\n objectInfo.index = x.__source.index;\n return accessor(x.__source.object, objectInfo);\n }\n\n return accessor(x, i);\n };\n }\n\n return accessor;\n }\n\n getSubLayerProps(sublayerProps = {}) {\n var _this$props$updateTri;\n\n const {\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n fetch,\n operation,\n _subLayerProps: overridingProps\n } = this.props;\n const newProps = {\n id: '',\n updateTriggers: {},\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n fetch,\n operation\n };\n const overridingSublayerProps = overridingProps && sublayerProps.id && overridingProps[sublayerProps.id];\n const overridingSublayerTriggers = overridingSublayerProps && overridingSublayerProps.updateTriggers;\n const sublayerId = sublayerProps.id || 'sublayer';\n\n if (overridingSublayerProps) {\n const propTypes = this.props[PROP_TYPES_SYMBOL];\n const subLayerPropTypes = sublayerProps.type ? sublayerProps.type._propTypes : {};\n\n for (const key in overridingSublayerProps) {\n const propType = subLayerPropTypes[key] || propTypes[key];\n\n if (propType && propType.type === 'accessor') {\n overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);\n }\n }\n }\n\n Object.assign(newProps, sublayerProps, overridingSublayerProps);\n newProps.id = \"\".concat(this.props.id, \"-\").concat(sublayerId);\n newProps.updateTriggers = {\n all: (_this$props$updateTri = this.props.updateTriggers) === null || _this$props$updateTri === void 0 ? void 0 : _this$props$updateTri.all,\n ...sublayerProps.updateTriggers,\n ...overridingSublayerTriggers\n };\n\n for (const extension of extensions) {\n const passThroughProps = extension.getSubLayerProps.call(this, extension);\n\n if (passThroughProps) {\n Object.assign(newProps, passThroughProps, {\n updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)\n });\n }\n }\n\n return newProps;\n }\n\n _updateAutoHighlight(info) {\n for (const layer of this.getSubLayers()) {\n layer.updateAutoHighlight(info);\n }\n }\n\n _getAttributeManager() {\n return null;\n }\n\n _postUpdate(updateParams, forceUpdate) {\n let subLayers = this.internalState.subLayers;\n const shouldUpdate = !subLayers || this.needsUpdate();\n\n if (shouldUpdate) {\n const subLayersList = this.renderLayers();\n subLayers = flatten(subLayersList, Boolean);\n this.internalState.subLayers = subLayers;\n }\n\n debug(TRACE_RENDER_LAYERS, this, shouldUpdate, subLayers);\n\n for (const layer of subLayers) {\n layer.parent = this;\n }\n }\n\n}\n\n_defineProperty(CompositeLayer, \"layerName\", 'CompositeLayer');\n//# sourceMappingURL=composite-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { createIterable, getAccessorFromBuffer } from './iterable-utils';\nimport defaultTypedArrayManager from './typed-array-manager';\nimport assert from './assert';\nimport { Buffer } from '@luma.gl/webgl';\nexport default class Tesselator {\n constructor(opts) {\n _defineProperty(this, \"opts\", void 0);\n\n _defineProperty(this, \"typedArrayManager\", void 0);\n\n _defineProperty(this, \"indexStarts\", [0]);\n\n _defineProperty(this, \"vertexStarts\", [0]);\n\n _defineProperty(this, \"vertexCount\", 0);\n\n _defineProperty(this, \"instanceCount\", 0);\n\n _defineProperty(this, \"attributes\", void 0);\n\n _defineProperty(this, \"_attributeDefs\", void 0);\n\n _defineProperty(this, \"data\", void 0);\n\n _defineProperty(this, \"getGeometry\", void 0);\n\n _defineProperty(this, \"geometryBuffer\", void 0);\n\n _defineProperty(this, \"buffers\", void 0);\n\n _defineProperty(this, \"positionSize\", void 0);\n\n _defineProperty(this, \"normalize\", void 0);\n\n const {\n attributes = {}\n } = opts;\n this.typedArrayManager = defaultTypedArrayManager;\n this.attributes = {};\n this._attributeDefs = attributes;\n this.opts = opts;\n this.updateGeometry(opts);\n }\n\n updateGeometry(opts) {\n Object.assign(this.opts, opts);\n const {\n data,\n buffers = {},\n getGeometry,\n geometryBuffer,\n positionFormat,\n dataChanged,\n normalize = true\n } = this.opts;\n this.data = data;\n this.getGeometry = getGeometry;\n this.positionSize = geometryBuffer && geometryBuffer.size || (positionFormat === 'XY' ? 2 : 3);\n this.buffers = buffers;\n this.normalize = normalize;\n\n if (geometryBuffer) {\n assert(data.startIndices);\n this.getGeometry = this.getGeometryFromBuffer(geometryBuffer);\n\n if (!normalize) {\n buffers.positions = geometryBuffer;\n }\n }\n\n this.geometryBuffer = buffers.positions;\n\n if (Array.isArray(dataChanged)) {\n for (const dataRange of dataChanged) {\n this._rebuildGeometry(dataRange);\n }\n } else {\n this._rebuildGeometry();\n }\n }\n\n updatePartialGeometry({\n startRow,\n endRow\n }) {\n this._rebuildGeometry({\n startRow,\n endRow\n });\n }\n\n getGeometryFromBuffer(geometryBuffer) {\n const value = geometryBuffer.value || geometryBuffer;\n\n if (!ArrayBuffer.isView(value)) {\n return null;\n }\n\n return getAccessorFromBuffer(value, {\n size: this.positionSize,\n offset: geometryBuffer.offset,\n stride: geometryBuffer.stride,\n startIndices: this.data.startIndices\n });\n }\n\n _allocate(instanceCount, copy) {\n const {\n attributes,\n buffers,\n _attributeDefs,\n typedArrayManager\n } = this;\n\n for (const name in _attributeDefs) {\n if (name in buffers) {\n typedArrayManager.release(attributes[name]);\n attributes[name] = null;\n } else {\n const def = _attributeDefs[name];\n def.copy = copy;\n attributes[name] = typedArrayManager.allocate(attributes[name], instanceCount, def);\n }\n }\n }\n\n _forEachGeometry(visitor, startRow, endRow) {\n const {\n data,\n getGeometry\n } = this;\n const {\n iterable,\n objectInfo\n } = createIterable(data, startRow, endRow);\n\n for (const object of iterable) {\n objectInfo.index++;\n const geometry = getGeometry ? getGeometry(object, objectInfo) : null;\n visitor(geometry, objectInfo.index);\n }\n }\n\n _rebuildGeometry(dataRange) {\n if (!this.data) {\n return;\n }\n\n let {\n indexStarts,\n vertexStarts,\n instanceCount\n } = this;\n const {\n data,\n geometryBuffer\n } = this;\n const {\n startRow = 0,\n endRow = Infinity\n } = dataRange || {};\n const normalizedData = {};\n\n if (!dataRange) {\n indexStarts = [0];\n vertexStarts = [0];\n }\n\n if (this.normalize || !geometryBuffer) {\n this._forEachGeometry((geometry, dataIndex) => {\n const normalizedGeometry = geometry && this.normalizeGeometry(geometry);\n normalizedData[dataIndex] = normalizedGeometry;\n vertexStarts[dataIndex + 1] = vertexStarts[dataIndex] + (normalizedGeometry ? this.getGeometrySize(normalizedGeometry) : 0);\n }, startRow, endRow);\n\n instanceCount = vertexStarts[vertexStarts.length - 1];\n } else {\n vertexStarts = data.startIndices;\n instanceCount = vertexStarts[data.length] || 0;\n\n if (ArrayBuffer.isView(geometryBuffer)) {\n instanceCount = instanceCount || geometryBuffer.length / this.positionSize;\n } else if (geometryBuffer instanceof Buffer) {\n const byteStride = geometryBuffer.accessor.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.byteLength / byteStride;\n } else if (geometryBuffer.buffer) {\n const byteStride = geometryBuffer.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.buffer.byteLength / byteStride;\n } else if (geometryBuffer.value) {\n const bufferValue = geometryBuffer.value;\n const elementStride = geometryBuffer.stride / bufferValue.BYTES_PER_ELEMENT || this.positionSize;\n instanceCount = instanceCount || bufferValue.length / elementStride;\n }\n }\n\n this._allocate(instanceCount, Boolean(dataRange));\n\n this.indexStarts = indexStarts;\n this.vertexStarts = vertexStarts;\n this.instanceCount = instanceCount;\n const context = {};\n\n this._forEachGeometry((geometry, dataIndex) => {\n const normalizedGeometry = normalizedData[dataIndex] || geometry;\n context.vertexStart = vertexStarts[dataIndex];\n context.indexStart = indexStarts[dataIndex];\n const vertexEnd = dataIndex < vertexStarts.length - 1 ? vertexStarts[dataIndex + 1] : instanceCount;\n context.geometrySize = vertexEnd - vertexStarts[dataIndex];\n context.geometryIndex = dataIndex;\n this.updateGeometryAttributes(normalizedGeometry, context);\n }, startRow, endRow);\n\n this.vertexCount = indexStarts[indexStarts.length - 1];\n }\n\n}\n//# sourceMappingURL=tesselator.js.map","export default \"#define SHADER_NAME scatterplot-layer-vertex-shader\\n\\nattribute vec3 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceRadius;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float opacity;\\nuniform float radiusScale;\\nuniform float radiusMinPixels;\\nuniform float radiusMaxPixels;\\nuniform float lineWidthScale;\\nuniform float lineWidthMinPixels;\\nuniform float lineWidthMaxPixels;\\nuniform float stroked;\\nuniform bool filled;\\nuniform bool antialiasing;\\nuniform bool billboard;\\nuniform int radiusUnits;\\nuniform int lineWidthUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n outerRadiusPixels = clamp(\\n project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\\n radiusMinPixels, radiusMaxPixels\\n );\\n float lineWidthPixels = clamp(\\n project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\\n lineWidthMinPixels, lineWidthMaxPixels\\n );\\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\\n float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\\n unitPosition = edgePadding * positions.xy;\\n geometry.uv = unitPosition;\\n geometry.pickingColor = instancePickingColors;\\n\\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\\n \\n if (billboard) {\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n vec3 offset = edgePadding * positions * outerRadiusPixels;\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n } else {\\n vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n DECKGL_FILTER_COLOR(vFillColor, geometry);\\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\";\n//# sourceMappingURL=scatterplot-layer-vertex.glsl.js.map","export default \"#define SHADER_NAME scatterplot-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool filled;\\nuniform float stroked;\\nuniform bool antialiasing;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\nvoid main(void) {\\n geometry.uv = unitPosition;\\n\\n float distToCenter = length(unitPosition) * outerRadiusPixels;\\n float inCircle = antialiasing ? \\n smoothedge(distToCenter, outerRadiusPixels) : \\n step(distToCenter, outerRadiusPixels);\\n\\n if (inCircle == 0.0) {\\n discard;\\n }\\n\\n if (stroked > 0.5) {\\n float isLine = antialiasing ? \\n smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\\n step(innerUnitRadius * outerRadiusPixels, distToCenter);\\n\\n if (filled) {\\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\\n } else {\\n if (isLine == 0.0) {\\n discard;\\n }\\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\\n }\\n } else if (!filled) {\\n discard;\\n } else {\\n gl_FragColor = vFillColor;\\n }\\n\\n gl_FragColor.a *= inCircle;\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=scatterplot-layer-fragment.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './scatterplot-layer-vertex.glsl';\nimport fs from './scatterplot-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n radiusUnits: 'meters',\n radiusScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n radiusMinPixels: {\n type: 'number',\n min: 0,\n value: 0\n },\n radiusMaxPixels: {\n type: 'number',\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n lineWidthUnits: 'meters',\n lineWidthScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n lineWidthMinPixels: {\n type: 'number',\n min: 0,\n value: 0\n },\n lineWidthMaxPixels: {\n type: 'number',\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n stroked: false,\n filled: true,\n billboard: false,\n antialiasing: true,\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getRadius: {\n type: 'accessor',\n value: 1\n },\n getFillColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getLineColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getLineWidth: {\n type: 'accessor',\n value: 1\n },\n strokeWidth: {\n deprecatedFor: 'getLineWidth'\n },\n outline: {\n deprecatedFor: 'stroked'\n },\n getColor: {\n deprecatedFor: ['getFillColor', 'getLineColor']\n }\n};\nexport default class ScatterplotLayer extends Layer {\n getShaders() {\n return super.getShaders({\n vs,\n fs,\n modules: [project32, picking]\n });\n }\n\n initializeState() {\n this.getAttributeManager().addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceRadius: {\n size: 1,\n transition: true,\n accessor: 'getRadius',\n defaultValue: 1\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n\n if (params.changeFlags.extensionsChanged) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n radiusUnits,\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n stroked,\n filled,\n billboard,\n antialiasing,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n stroked: stroked ? 1 : 0,\n filled,\n billboard,\n antialiasing,\n radiusUnits: UNIT[radiusUnits],\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n lineWidthUnits: UNIT[lineWidthUnits],\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n }).draw();\n }\n\n _getModel(gl) {\n const positions = [-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0];\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: 6,\n vertexCount: 4,\n attributes: {\n positions: {\n size: 3,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n });\n }\n\n}\n\n_defineProperty(ScatterplotLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(ScatterplotLayer, \"layerName\", 'ScatterplotLayer');\n//# sourceMappingURL=scatterplot-layer.js.map","import { equals } from '@math.gl/core';\nexport const WINDING = {\n CLOCKWISE: 1,\n COUNTER_CLOCKWISE: -1\n};\nexport function modifyPolygonWindingDirection(points, direction, options = {}) {\n const windingDirection = getPolygonWindingDirection(points, options);\n\n if (windingDirection !== direction) {\n reversePolygon(points, options);\n return true;\n }\n\n return false;\n}\nexport function getPolygonWindingDirection(points, options = {}) {\n return Math.sign(getPolygonSignedArea(points, options));\n}\nexport function getPolygonSignedArea(points, options = {}) {\n const {\n start = 0,\n end = points.length\n } = options;\n const dim = options.size || 2;\n let area = 0;\n\n for (let i = start, j = end - dim; i < end; i += dim) {\n area += (points[i] - points[j]) * (points[i + 1] + points[j + 1]);\n j = i;\n }\n\n return area / 2;\n}\nexport function forEachSegmentInPolygon(points, visitor, options = {}) {\n const {\n start = 0,\n end = points.length,\n size = 2,\n isClosed\n } = options;\n const numPoints = (end - start) / size;\n\n for (let i = 0; i < numPoints - 1; ++i) {\n visitor(points[start + i * size], points[start + i * size + 1], points[start + (i + 1) * size], points[start + (i + 1) * size + 1], i, i + 1);\n }\n\n const endPointIndex = start + (numPoints - 1) * size;\n const isClosedEx = isClosed || equals(points[start], points[endPointIndex]) && equals(points[start + 1], points[endPointIndex + 1]);\n\n if (!isClosedEx) {\n visitor(points[endPointIndex], points[endPointIndex + 1], points[start], points[start + 1], numPoints - 1, 0);\n }\n}\n\nfunction reversePolygon(points, options) {\n const {\n start = 0,\n end = points.length,\n size = 2\n } = options;\n const numPoints = (end - start) / size;\n const numSwaps = Math.floor(numPoints / 2);\n\n for (let i = 0; i < numSwaps; ++i) {\n const b1 = start + i * size;\n const b2 = start + (numPoints - 1 - i) * size;\n\n for (let j = 0; j < size; ++j) {\n const tmp = points[b1 + j];\n points[b1 + j] = points[b2 + j];\n points[b2 + j] = tmp;\n }\n }\n}\n\nexport function modifyPolygonWindingDirectionPoints(points, direction, options = {}) {\n const currentDirection = getPolygonWindingDirectionPoints(points, options);\n\n if (currentDirection !== direction) {\n points.reverse();\n return true;\n }\n\n return false;\n}\nexport function getPolygonWindingDirectionPoints(points, options = {}) {\n return Math.sign(getPolygonSignedAreaPoints(points, options));\n}\nexport function getPolygonSignedAreaPoints(points, options = {}) {\n const {\n start = 0,\n end = points.length\n } = options;\n let area = 0;\n\n for (let i = start, j = end - 1; i < end; ++i) {\n area += (points[i][0] - points[j][0]) * (points[i][1] + points[j][1]);\n j = i;\n }\n\n return area / 2;\n}\nexport function forEachSegmentInPolygonPoints(points, visitor, options = {}) {\n const {\n start = 0,\n end = points.length,\n isClosed\n } = options;\n\n for (let i = start; i < end - 1; ++i) {\n visitor(points[i], points[i + 1], i, i + 1);\n }\n\n const isClosedEx = isClosed || equals(points[end - 1], points[0]);\n\n if (!isClosedEx) {\n visitor(points[end - 1], points[0], end - 1, 0);\n }\n}\n//# sourceMappingURL=polygon-utils.js.map","export function push(target, source) {\n const size = source.length;\n const startIndex = target.length;\n\n if (startIndex > 0) {\n let isDuplicate = true;\n\n for (let i = 0; i < size; i++) {\n if (target[startIndex - size + i] !== source[i]) {\n isDuplicate = false;\n break;\n }\n }\n\n if (isDuplicate) {\n return false;\n }\n }\n\n for (let i = 0; i < size; i++) {\n target[startIndex + i] = source[i];\n }\n\n return true;\n}\nexport function copy(target, source) {\n const size = source.length;\n\n for (let i = 0; i < size; i++) {\n target[i] = source[i];\n }\n}\nexport function getPointAtIndex(positions, index, size, offset, out = []) {\n const startI = offset + index * size;\n\n for (let i = 0; i < size; i++) {\n out[i] = positions[startI + i];\n }\n\n return out;\n}\n//# sourceMappingURL=utils.js.map","import { push, copy, getPointAtIndex } from './utils';\nexport function clipPolyline(positions, bbox, options) {\n const {\n size = 2,\n startIndex = 0,\n endIndex = positions.length\n } = options || {};\n const numPoints = (endIndex - startIndex) / size;\n const result = [];\n let part = [];\n let a;\n let b;\n let codeA = -1;\n let codeB;\n let lastCode;\n\n for (let i = 1; i < numPoints; i++) {\n a = getPointAtIndex(positions, i - 1, size, startIndex, a);\n b = getPointAtIndex(positions, i, size, startIndex, b);\n\n if (codeA < 0) {\n codeA = bitCode(a, bbox);\n }\n\n codeB = lastCode = bitCode(b, bbox);\n\n while (true) {\n if (!(codeA | codeB)) {\n push(part, a);\n\n if (codeB !== lastCode) {\n push(part, b);\n\n if (i < numPoints - 1) {\n result.push(part);\n part = [];\n }\n } else if (i === numPoints - 1) {\n push(part, b);\n }\n\n break;\n } else if (codeA & codeB) {\n break;\n } else if (codeA) {\n intersect(a, b, codeA, bbox, a);\n codeA = bitCode(a, bbox);\n } else {\n intersect(a, b, codeB, bbox, b);\n codeB = bitCode(b, bbox);\n }\n }\n\n codeA = lastCode;\n }\n\n if (part.length) result.push(part);\n return result;\n}\nexport function clipPolygon(positions, bbox, options) {\n const {\n size = 2,\n endIndex = positions.length\n } = options || {};\n let {\n startIndex = 0\n } = options || {};\n let numPoints = (endIndex - startIndex) / size;\n let result;\n let p;\n let prev;\n let inside;\n let prevInside;\n\n for (let edge = 1; edge <= 8; edge *= 2) {\n result = [];\n prev = getPointAtIndex(positions, numPoints - 1, size, startIndex, prev);\n prevInside = !(bitCode(prev, bbox) & edge);\n\n for (let i = 0; i < numPoints; i++) {\n p = getPointAtIndex(positions, i, size, startIndex, p);\n inside = !(bitCode(p, bbox) & edge);\n if (inside !== prevInside) push(result, intersect(prev, p, edge, bbox));\n if (inside) push(result, p);\n copy(prev, p);\n prevInside = inside;\n }\n\n positions = result;\n startIndex = 0;\n numPoints = result.length / size;\n if (!numPoints) break;\n }\n\n return result;\n}\nexport function intersect(a, b, edge, bbox, out = []) {\n let t;\n let snap;\n\n if (edge & 8) {\n t = (bbox[3] - a[1]) / (b[1] - a[1]);\n snap = 3;\n } else if (edge & 4) {\n t = (bbox[1] - a[1]) / (b[1] - a[1]);\n snap = 1;\n } else if (edge & 2) {\n t = (bbox[2] - a[0]) / (b[0] - a[0]);\n snap = 2;\n } else if (edge & 1) {\n t = (bbox[0] - a[0]) / (b[0] - a[0]);\n snap = 0;\n } else {\n return null;\n }\n\n for (let i = 0; i < a.length; i++) {\n out[i] = (snap & 1) === i ? bbox[snap] : t * (b[i] - a[i]) + a[i];\n }\n\n return out;\n}\nexport function bitCode(p, bbox) {\n let code = 0;\n if (p[0] < bbox[0]) code |= 1;else if (p[0] > bbox[2]) code |= 2;\n if (p[1] < bbox[1]) code |= 4;else if (p[1] > bbox[3]) code |= 8;\n return code;\n}\n//# sourceMappingURL=lineclip.js.map","import { bitCode, intersect } from './lineclip';\nimport { getPointAtIndex, copy, push } from './utils';\nexport function cutPolylineByGrid(positions, options) {\n const {\n size = 2,\n broken = false,\n gridResolution = 10,\n gridOffset = [0, 0],\n startIndex = 0,\n endIndex = positions.length\n } = options || {};\n const numPoints = (endIndex - startIndex) / size;\n let part = [];\n const result = [part];\n const a = getPointAtIndex(positions, 0, size, startIndex);\n let b;\n let codeB;\n const cell = getGridCell(a, gridResolution, gridOffset, []);\n const scratchPoint = [];\n push(part, a);\n\n for (let i = 1; i < numPoints; i++) {\n b = getPointAtIndex(positions, i, size, startIndex, b);\n codeB = bitCode(b, cell);\n\n while (codeB) {\n intersect(a, b, codeB, cell, scratchPoint);\n const codeAlt = bitCode(scratchPoint, cell);\n\n if (codeAlt) {\n intersect(a, scratchPoint, codeAlt, cell, scratchPoint);\n codeB = codeAlt;\n }\n\n push(part, scratchPoint);\n copy(a, scratchPoint);\n moveToNeighborCell(cell, gridResolution, codeB);\n\n if (broken && part.length > size) {\n part = [];\n result.push(part);\n push(part, a);\n }\n\n codeB = bitCode(b, cell);\n }\n\n push(part, b);\n copy(a, b);\n }\n\n return broken ? result : result[0];\n}\nconst TYPE_INSIDE = 0;\nconst TYPE_BORDER = 1;\n\nfunction concatInPlace(arr1, arr2) {\n for (let i = 0; i < arr2.length; i++) {\n arr1.push(arr2[i]);\n }\n\n return arr1;\n}\n\nexport function cutPolygonByGrid(positions, holeIndices = null, options) {\n if (!positions.length) {\n return [];\n }\n\n const {\n size = 2,\n gridResolution = 10,\n gridOffset = [0, 0],\n edgeTypes = false\n } = options || {};\n const result = [];\n const queue = [{\n pos: positions,\n types: edgeTypes ? new Array(positions.length / size).fill(TYPE_BORDER) : null,\n holes: holeIndices || []\n }];\n const bbox = [[], []];\n let cell = [];\n\n while (queue.length) {\n const {\n pos,\n types,\n holes\n } = queue.shift();\n getBoundingBox(pos, size, holes[0] || pos.length, bbox);\n cell = getGridCell(bbox[0], gridResolution, gridOffset, cell);\n const code = bitCode(bbox[1], cell);\n\n if (code) {\n let parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);\n const polygonLow = {\n pos: parts[0].pos,\n types: parts[0].types,\n holes: []\n };\n const polygonHigh = {\n pos: parts[1].pos,\n types: parts[1].types,\n holes: []\n };\n queue.push(polygonLow, polygonHigh);\n\n for (let i = 0; i < holes.length; i++) {\n parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);\n\n if (parts[0]) {\n polygonLow.holes.push(polygonLow.pos.length);\n polygonLow.pos = concatInPlace(polygonLow.pos, parts[0].pos);\n\n if (edgeTypes) {\n polygonLow.types = concatInPlace(polygonLow.types, parts[0].types);\n }\n }\n\n if (parts[1]) {\n polygonHigh.holes.push(polygonHigh.pos.length);\n polygonHigh.pos = concatInPlace(polygonHigh.pos, parts[1].pos);\n\n if (edgeTypes) {\n polygonHigh.types = concatInPlace(polygonHigh.types, parts[1].types);\n }\n }\n }\n } else {\n const polygon = {\n positions: pos\n };\n\n if (edgeTypes) {\n polygon.edgeTypes = types;\n }\n\n if (holes.length) {\n polygon.holeIndices = holes;\n }\n\n result.push(polygon);\n }\n }\n\n return result;\n}\n\nfunction bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {\n const numPoints = (endIndex - startIndex) / size;\n const resultLow = [];\n const resultHigh = [];\n const typesLow = [];\n const typesHigh = [];\n const scratchPoint = [];\n let p;\n let side;\n let type;\n const prev = getPointAtIndex(positions, numPoints - 1, size, startIndex);\n let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);\n let prevType = edgeTypes && edgeTypes[numPoints - 1];\n let lowPointCount = 0;\n let highPointCount = 0;\n\n for (let i = 0; i < numPoints; i++) {\n p = getPointAtIndex(positions, i, size, startIndex, p);\n side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);\n type = edgeTypes && edgeTypes[startIndex / size + i];\n\n if (side && prevSide && prevSide !== side) {\n intersect(prev, p, edge, bbox, scratchPoint);\n push(resultLow, scratchPoint) && typesLow.push(prevType);\n push(resultHigh, scratchPoint) && typesHigh.push(prevType);\n }\n\n if (side <= 0) {\n push(resultLow, p) && typesLow.push(type);\n lowPointCount -= side;\n } else if (typesLow.length) {\n typesLow[typesLow.length - 1] = TYPE_INSIDE;\n }\n\n if (side >= 0) {\n push(resultHigh, p) && typesHigh.push(type);\n highPointCount += side;\n } else if (typesHigh.length) {\n typesHigh[typesHigh.length - 1] = TYPE_INSIDE;\n }\n\n copy(prev, p);\n prevSide = side;\n prevType = type;\n }\n\n return [lowPointCount ? {\n pos: resultLow,\n types: edgeTypes && typesLow\n } : null, highPointCount ? {\n pos: resultHigh,\n types: edgeTypes && typesHigh\n } : null];\n}\n\nfunction getGridCell(p, gridResolution, gridOffset, out) {\n const left = Math.floor((p[0] - gridOffset[0]) / gridResolution) * gridResolution + gridOffset[0];\n const bottom = Math.floor((p[1] - gridOffset[1]) / gridResolution) * gridResolution + gridOffset[1];\n out[0] = left;\n out[1] = bottom;\n out[2] = left + gridResolution;\n out[3] = bottom + gridResolution;\n return out;\n}\n\nfunction moveToNeighborCell(cell, gridResolution, edge) {\n if (edge & 8) {\n cell[1] += gridResolution;\n cell[3] += gridResolution;\n } else if (edge & 4) {\n cell[1] -= gridResolution;\n cell[3] -= gridResolution;\n } else if (edge & 2) {\n cell[0] += gridResolution;\n cell[2] += gridResolution;\n } else if (edge & 1) {\n cell[0] -= gridResolution;\n cell[2] -= gridResolution;\n }\n}\n\nfunction getBoundingBox(positions, size, endIndex, out) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < endIndex; i += size) {\n const x = positions[i];\n const y = positions[i + 1];\n minX = x < minX ? x : minX;\n maxX = x > maxX ? x : maxX;\n minY = y < minY ? y : minY;\n maxY = y > maxY ? y : maxY;\n }\n\n out[0][0] = minX;\n out[0][1] = minY;\n out[1][0] = maxX;\n out[1][1] = maxY;\n return out;\n}\n//# sourceMappingURL=cut-by-grid.js.map","import { cutPolylineByGrid, cutPolygonByGrid } from './cut-by-grid';\nimport { getPointAtIndex, push } from './utils';\nconst DEFAULT_MAX_LATITUDE = 85.051129;\nexport function cutPolylineByMercatorBounds(positions, options) {\n const {\n size = 2,\n startIndex = 0,\n endIndex = positions.length,\n normalize = true\n } = options || {};\n const newPositions = positions.slice(startIndex, endIndex);\n wrapLongitudesForShortestPath(newPositions, size, 0, endIndex - startIndex);\n const parts = cutPolylineByGrid(newPositions, {\n size,\n broken: true,\n gridResolution: 360,\n gridOffset: [-180, -180]\n });\n\n if (normalize) {\n for (const part of parts) {\n shiftLongitudesIntoRange(part, size);\n }\n }\n\n return parts;\n}\nexport function cutPolygonByMercatorBounds(positions, holeIndices = null, options) {\n const {\n size = 2,\n normalize = true,\n edgeTypes = false\n } = options || {};\n holeIndices = holeIndices || [];\n const newPositions = [];\n const newHoleIndices = [];\n let srcStartIndex = 0;\n let targetIndex = 0;\n\n for (let ringIndex = 0; ringIndex <= holeIndices.length; ringIndex++) {\n const srcEndIndex = holeIndices[ringIndex] || positions.length;\n const targetStartIndex = targetIndex;\n const splitIndex = findSplitIndex(positions, size, srcStartIndex, srcEndIndex);\n\n for (let i = splitIndex; i < srcEndIndex; i++) {\n newPositions[targetIndex++] = positions[i];\n }\n\n for (let i = srcStartIndex; i < splitIndex; i++) {\n newPositions[targetIndex++] = positions[i];\n }\n\n wrapLongitudesForShortestPath(newPositions, size, targetStartIndex, targetIndex);\n insertPoleVertices(newPositions, size, targetStartIndex, targetIndex, options === null || options === void 0 ? void 0 : options.maxLatitude);\n srcStartIndex = srcEndIndex;\n newHoleIndices[ringIndex] = targetIndex;\n }\n\n newHoleIndices.pop();\n const parts = cutPolygonByGrid(newPositions, newHoleIndices, {\n size,\n gridResolution: 360,\n gridOffset: [-180, -180],\n edgeTypes\n });\n\n if (normalize) {\n for (const part of parts) {\n shiftLongitudesIntoRange(part.positions, size);\n }\n }\n\n return parts;\n}\n\nfunction findSplitIndex(positions, size, startIndex, endIndex) {\n let maxLat = -1;\n let pointIndex = -1;\n\n for (let i = startIndex + 1; i < endIndex; i += size) {\n const lat = Math.abs(positions[i]);\n\n if (lat > maxLat) {\n maxLat = lat;\n pointIndex = i - 1;\n }\n }\n\n return pointIndex;\n}\n\nfunction insertPoleVertices(positions, size, startIndex, endIndex, maxLatitude = DEFAULT_MAX_LATITUDE) {\n const firstLng = positions[startIndex];\n const lastLng = positions[endIndex - size];\n\n if (Math.abs(firstLng - lastLng) > 180) {\n const p = getPointAtIndex(positions, 0, size, startIndex);\n p[0] += Math.round((lastLng - firstLng) / 360) * 360;\n push(positions, p);\n p[1] = Math.sign(p[1]) * maxLatitude;\n push(positions, p);\n p[0] = firstLng;\n push(positions, p);\n }\n}\n\nfunction wrapLongitudesForShortestPath(positions, size, startIndex, endIndex) {\n let prevLng = positions[0];\n let lng;\n\n for (let i = startIndex; i < endIndex; i += size) {\n lng = positions[i];\n const delta = lng - prevLng;\n\n if (delta > 180 || delta < -180) {\n lng -= Math.round(delta / 360) * 360;\n }\n\n positions[i] = prevLng = lng;\n }\n}\n\nfunction shiftLongitudesIntoRange(positions, size) {\n let refLng;\n const pointCount = positions.length / size;\n\n for (let i = 0; i < pointCount; i++) {\n refLng = positions[i * size];\n\n if ((refLng + 180) % 360 !== 0) {\n break;\n }\n }\n\n const delta = -Math.round(refLng / 360) * 360;\n\n if (delta === 0) {\n return;\n }\n\n for (let i = 0; i < pointCount; i++) {\n positions[i * size] += delta;\n }\n}\n//# sourceMappingURL=cut-by-mercator-bounds.js.map","import { cutPolylineByGrid, cutPolylineByMercatorBounds } from '@math.gl/polygon';\nexport function normalizePath(path, size, gridResolution, wrapLongitude) {\n let flatPath;\n\n if (Array.isArray(path[0])) {\n const length = path.length * size;\n flatPath = new Array(length);\n\n for (let i = 0; i < path.length; i++) {\n for (let j = 0; j < size; j++) {\n flatPath[i * size + j] = path[i][j] || 0;\n }\n }\n } else {\n flatPath = path;\n }\n\n if (gridResolution) {\n return cutPolylineByGrid(flatPath, {\n size,\n gridResolution\n });\n }\n\n if (wrapLongitude) {\n return cutPolylineByMercatorBounds(flatPath, {\n size\n });\n }\n\n return flatPath;\n}\n//# sourceMappingURL=path.js.map","import { Tesselator } from '@deck.gl/core';\nimport { normalizePath } from './path';\nconst START_CAP = 1;\nconst END_CAP = 2;\nconst INVALID = 4;\nexport default class PathTesselator extends Tesselator {\n constructor(opts) {\n super({ ...opts,\n attributes: {\n positions: {\n size: 3,\n padding: 18,\n initialize: true,\n type: opts.fp64 ? Float64Array : Float32Array\n },\n segmentTypes: {\n size: 1,\n type: Uint8ClampedArray\n }\n }\n });\n }\n\n get(attributeName) {\n return this.attributes[attributeName];\n }\n\n getGeometryFromBuffer(buffer) {\n if (this.normalize) {\n return super.getGeometryFromBuffer(buffer);\n }\n\n return null;\n }\n\n normalizeGeometry(path) {\n if (this.normalize) {\n return normalizePath(path, this.positionSize, this.opts.resolution, this.opts.wrapLongitude);\n }\n\n return path;\n }\n\n getGeometrySize(path) {\n if (isCut(path)) {\n let size = 0;\n\n for (const subPath of path) {\n size += this.getGeometrySize(subPath);\n }\n\n return size;\n }\n\n const numPoints = this.getPathLength(path);\n\n if (numPoints < 2) {\n return 0;\n }\n\n if (this.isClosed(path)) {\n return numPoints < 3 ? 0 : numPoints + 2;\n }\n\n return numPoints;\n }\n\n updateGeometryAttributes(path, context) {\n if (context.geometrySize === 0) {\n return;\n }\n\n if (path && isCut(path)) {\n for (const subPath of path) {\n const geometrySize = this.getGeometrySize(subPath);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPath, context);\n context.vertexStart += geometrySize;\n }\n } else {\n this._updateSegmentTypes(path, context);\n\n this._updatePositions(path, context);\n }\n }\n\n _updateSegmentTypes(path, context) {\n const segmentTypes = this.attributes.segmentTypes;\n const isPathClosed = path ? this.isClosed(path) : false;\n const {\n vertexStart,\n geometrySize\n } = context;\n segmentTypes.fill(0, vertexStart, vertexStart + geometrySize);\n\n if (isPathClosed) {\n segmentTypes[vertexStart] = INVALID;\n segmentTypes[vertexStart + geometrySize - 2] = INVALID;\n } else {\n segmentTypes[vertexStart] += START_CAP;\n segmentTypes[vertexStart + geometrySize - 2] += END_CAP;\n }\n\n segmentTypes[vertexStart + geometrySize - 1] = INVALID;\n }\n\n _updatePositions(path, context) {\n const {\n positions\n } = this.attributes;\n\n if (!positions || !path) {\n return;\n }\n\n const {\n vertexStart,\n geometrySize\n } = context;\n const p = new Array(3);\n\n for (let i = vertexStart, ptIndex = 0; ptIndex < geometrySize; i++, ptIndex++) {\n this.getPointOnPath(path, ptIndex, p);\n positions[i * 3] = p[0];\n positions[i * 3 + 1] = p[1];\n positions[i * 3 + 2] = p[2];\n }\n }\n\n getPathLength(path) {\n return path.length / this.positionSize;\n }\n\n getPointOnPath(path, index, target = []) {\n const {\n positionSize\n } = this;\n\n if (index * positionSize >= path.length) {\n index += 1 - path.length / positionSize;\n }\n\n const i = index * positionSize;\n target[0] = path[i];\n target[1] = path[i + 1];\n target[2] = positionSize === 3 && path[i + 2] || 0;\n return target;\n }\n\n isClosed(path) {\n if (!this.normalize) {\n return Boolean(this.opts.loop);\n }\n\n const {\n positionSize\n } = this;\n const lastPointIndex = path.length - positionSize;\n return path[0] === path[lastPointIndex] && path[1] === path[lastPointIndex + 1] && (positionSize === 2 || path[2] === path[lastPointIndex + 2]);\n }\n\n}\n\nfunction isCut(path) {\n return Array.isArray(path[0]);\n}\n//# sourceMappingURL=path-tesselator.js.map","export default \"#define SHADER_NAME path-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute float instanceTypes;\\nattribute vec3 instanceStartPositions;\\nattribute vec3 instanceEndPositions;\\nattribute vec3 instanceLeftPositions;\\nattribute vec3 instanceRightPositions;\\nattribute vec3 instanceLeftPositions64Low;\\nattribute vec3 instanceStartPositions64Low;\\nattribute vec3 instanceEndPositions64Low;\\nattribute vec3 instanceRightPositions64Low;\\nattribute float instanceStrokeWidths;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float jointType;\\nuniform float capType;\\nuniform float miterLimit;\\nuniform bool billboard;\\nuniform int widthUnits;\\n\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nconst float EPSILON = 0.001;\\nconst vec3 ZERO_OFFSET = vec3(0.0);\\n\\nfloat flipIfTrue(bool flag) {\\n return -(float(flag) * 2. - 1.);\\n}\\nvec3 getLineJoinOffset(\\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\\n vec2 width\\n) {\\n bool isEnd = positions.x > 0.0;\\n float sideOfPath = positions.y;\\n float isJoint = float(sideOfPath == 0.0);\\n\\n vec3 deltaA3 = (currPoint - prevPoint);\\n vec3 deltaB3 = (nextPoint - currPoint);\\n\\n mat3 rotationMatrix;\\n bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\\n if (needsRotation) {\\n deltaA3 = deltaA3 * rotationMatrix;\\n deltaB3 = deltaB3 * rotationMatrix;\\n }\\n vec2 deltaA = deltaA3.xy / width;\\n vec2 deltaB = deltaB3.xy / width;\\n\\n float lenA = length(deltaA);\\n float lenB = length(deltaB);\\n\\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\\n\\n vec2 perpA = vec2(-dirA.y, dirA.x);\\n vec2 perpB = vec2(-dirB.y, dirB.x);\\n vec2 tangent = dirA + dirB;\\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\\n vec2 miterVec = vec2(-tangent.y, tangent.x);\\n vec2 dir = isEnd ? dirA : dirB;\\n vec2 perp = isEnd ? perpA : perpB;\\n float L = isEnd ? lenA : lenB;\\n float sinHalfA = abs(dot(miterVec, perp));\\n float cosHalfA = abs(dot(dirA, miterVec));\\n float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\\n float cornerPosition = sideOfPath * turnDirection;\\n\\n float miterSize = 1.0 / max(sinHalfA, EPSILON);\\n miterSize = mix(\\n min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\\n miterSize,\\n step(0.0, cornerPosition)\\n );\\n\\n vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\\n * (sideOfPath + isJoint * turnDirection);\\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\\n bool isCap = isStartCap || isEndCap;\\n if (isCap) {\\n offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\\n vJointType = capType;\\n } else {\\n vJointType = jointType;\\n }\\n vPathLength = L;\\n vCornerOffset = offsetVec;\\n vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\\n vMiterLength = isCap ? isJoint : vMiterLength;\\n\\n vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\\n vPathPosition = vec2(\\n dot(offsetFromStartOfPath, perp),\\n dot(offsetFromStartOfPath, dir)\\n );\\n geometry.uv = vPathPosition;\\n\\n float isValid = step(instanceTypes, 3.5);\\n vec3 offset = vec3(offsetVec * width * isValid, 0.0);\\n\\n if (needsRotation) {\\n offset = rotationMatrix * offset;\\n }\\n return offset;\\n}\\nvoid clipLine(inout vec4 position, vec4 refPosition) {\\n if (position.w < EPSILON) {\\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\\n position = refPosition + (position - refPosition) * r;\\n }\\n}\\n\\nvoid main() {\\n geometry.pickingColor = instancePickingColors;\\n\\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n\\n float isEnd = positions.x;\\n\\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\\n\\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\\n\\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\\n\\n geometry.worldPosition = currPosition;\\n vec2 widthPixels = vec2(clamp(\\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n widthMinPixels, widthMaxPixels) / 2.0);\\n vec3 width;\\n\\n if (billboard) {\\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\\n\\n clipLine(prevPositionScreen, currPositionScreen);\\n clipLine(nextPositionScreen, currPositionScreen);\\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\\n\\n width = vec3(widthPixels, 0.0);\\n DECKGL_FILTER_SIZE(width, geometry);\\n\\n vec3 offset = getLineJoinOffset(\\n prevPositionScreen.xyz / prevPositionScreen.w,\\n currPositionScreen.xyz / currPositionScreen.w,\\n nextPositionScreen.xyz / nextPositionScreen.w,\\n project_pixel_size_to_clipspace(width.xy)\\n );\\n\\n DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\\n gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\\n } else {\\n prevPosition = project_position(prevPosition, prevPosition64Low);\\n currPosition = project_position(currPosition, currPosition64Low);\\n nextPosition = project_position(nextPosition, nextPosition64Low);\\n\\n width = vec3(project_pixel_size(widthPixels), 0.0);\\n DECKGL_FILTER_SIZE(width, geometry);\\n\\n vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\\n geometry.position = vec4(currPosition + offset, 1.0);\\n gl_Position = project_common_position_to_clipspace(geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=path-layer-vertex.glsl.js.map","export default \"#define SHADER_NAME path-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float miterLimit;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nvoid main(void) {\\n geometry.uv = vPathPosition;\\n\\n if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\\n if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\\n discard;\\n }\\n if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\\n discard;\\n }\\n }\\n gl_FragColor = vColor;\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=path-layer-fragment.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport PathTesselator from './path-tesselator';\nimport vs from './path-layer-vertex.glsl';\nimport fs from './path-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n widthUnits: 'meters',\n widthScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n widthMinPixels: {\n type: 'number',\n min: 0,\n value: 0\n },\n widthMaxPixels: {\n type: 'number',\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n jointRounded: false,\n capRounded: false,\n miterLimit: {\n type: 'number',\n min: 0,\n value: 4\n },\n billboard: false,\n _pathType: null,\n getPath: {\n type: 'accessor',\n value: object => object.path\n },\n getColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getWidth: {\n type: 'accessor',\n value: 1\n },\n rounded: {\n deprecatedFor: ['jointRounded', 'capRounded']\n }\n};\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\nexport default class PathLayer extends Layer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders() {\n return super.getShaders({\n vs,\n fs,\n modules: [project32, picking]\n });\n }\n\n get wrapLongitude() {\n return false;\n }\n\n initializeState() {\n const noAlloc = true;\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n positions: {\n size: 3,\n vertexOffset: 1,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPath',\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n instanceLeftPositions: {\n vertexOffset: 0\n },\n instanceStartPositions: {\n vertexOffset: 1\n },\n instanceEndPositions: {\n vertexOffset: 2\n },\n instanceRightPositions: {\n vertexOffset: 3\n }\n }\n },\n instanceTypes: {\n size: 1,\n type: 5121,\n update: this.calculateSegmentTypes,\n noAlloc\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: 'getWidth',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: 1\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n accessor: 'getColor',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: DEFAULT_COLOR\n },\n instancePickingColors: {\n size: 3,\n type: 5121,\n accessor: (object, {\n index,\n target: value\n }) => this.encodePickingColor(object && object.__source ? object.__source.index : index, value)\n }\n });\n this.setState({\n pathTesselator: new PathTesselator({\n fp64: this.use64bitPositions()\n })\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n props,\n changeFlags\n } = params;\n const attributeManager = this.getAttributeManager();\n const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPath);\n\n if (geometryChanged) {\n const {\n pathTesselator\n } = this.state;\n const buffers = props.data.attributes || {};\n pathTesselator.updateGeometry({\n data: props.data,\n geometryBuffer: buffers.getPath,\n buffers,\n normalize: !props._pathType,\n loop: props._pathType === 'loop',\n getGeometry: props.getPath,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n resolution: this.context.viewport.resolution,\n dataChanged: changeFlags.dataChanged\n });\n this.setState({\n numInstances: pathTesselator.instanceCount,\n startIndices: pathTesselator.vertexStarts\n });\n\n if (!changeFlags.dataChanged) {\n attributeManager.invalidateAll();\n }\n }\n\n if (changeFlags.extensionsChanged) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n attributeManager.invalidateAll();\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const {\n index\n } = info;\n const {\n data\n } = this.props;\n\n if (data[0] && data[0].__source) {\n info.object = data.find(d => d.__source.index === index);\n }\n\n return info;\n }\n\n disablePickingIndex(objectIndex) {\n const {\n data\n } = this.props;\n\n if (data[0] && data[0].__source) {\n for (let i = 0; i < data.length; i++) {\n if (data[i].__source.index === objectIndex) {\n this._disablePickingIndex(i);\n }\n }\n } else {\n super.disablePickingIndex(objectIndex);\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n jointRounded,\n capRounded,\n billboard,\n miterLimit,\n widthUnits,\n widthScale,\n widthMinPixels,\n widthMaxPixels\n } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard,\n widthUnits: UNIT[widthUnits],\n widthScale,\n miterLimit,\n widthMinPixels,\n widthMaxPixels\n }).draw();\n }\n\n _getModel(gl) {\n const SEGMENT_INDICES = [0, 1, 2, 1, 4, 2, 1, 3, 4, 3, 5, 4];\n const SEGMENT_POSITIONS = [0, 0, 0, -1, 0, 1, 1, -1, 1, 1, 1, 0];\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: 4,\n attributes: {\n indices: new Uint16Array(SEGMENT_INDICES),\n positions: {\n value: new Float32Array(SEGMENT_POSITIONS),\n size: 2\n }\n }\n }),\n isInstanced: true\n });\n }\n\n calculatePositions(attribute) {\n const {\n pathTesselator\n } = this.state;\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('positions');\n }\n\n calculateSegmentTypes(attribute) {\n const {\n pathTesselator\n } = this.state;\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('segmentTypes');\n }\n\n}\n\n_defineProperty(PathLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(PathLayer, \"layerName\", 'PathLayer');\n//# sourceMappingURL=path-layer.js.map","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","import earcut from 'earcut';\nimport { modifyPolygonWindingDirection, WINDING } from '@math.gl/polygon';\nconst OUTER_POLYGON_WINDING = WINDING.CLOCKWISE;\nconst HOLE_POLYGON_WINDING = WINDING.COUNTER_CLOCKWISE;\nconst windingOptions = {\n isClosed: true\n};\n\nfunction validate(polygon) {\n polygon = polygon && polygon.positions || polygon;\n\n if (!Array.isArray(polygon) && !ArrayBuffer.isView(polygon)) {\n throw new Error('invalid polygon');\n }\n}\n\nexport function getPositions(polygon) {\n return 'positions' in polygon ? polygon.positions : polygon;\n}\nexport function getHoleIndices(polygon) {\n return 'holeIndices' in polygon ? polygon.holeIndices : null;\n}\n\nfunction isNested(polygon) {\n return Array.isArray(polygon[0]);\n}\n\nfunction isSimple(polygon) {\n return polygon.length >= 1 && polygon[0].length >= 2 && Number.isFinite(polygon[0][0]);\n}\n\nfunction isNestedRingClosed(simplePolygon) {\n const p0 = simplePolygon[0];\n const p1 = simplePolygon[simplePolygon.length - 1];\n return p0[0] === p1[0] && p0[1] === p1[1] && p0[2] === p1[2];\n}\n\nfunction isFlatRingClosed(positions, size, startIndex, endIndex) {\n for (let i = 0; i < size; i++) {\n if (positions[startIndex + i] !== positions[endIndex - size + i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction copyNestedRing(target, targetStartIndex, simplePolygon, size, windingDirection) {\n let targetIndex = targetStartIndex;\n const len = simplePolygon.length;\n\n for (let i = 0; i < len; i++) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[i][j] || 0;\n }\n }\n\n if (!isNestedRingClosed(simplePolygon)) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[0][j] || 0;\n }\n }\n\n windingOptions.start = targetStartIndex;\n windingOptions.end = targetIndex;\n windingOptions.size = size;\n modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n return targetIndex;\n}\n\nfunction copyFlatRing(target, targetStartIndex, positions, size, srcStartIndex = 0, srcEndIndex, windingDirection) {\n srcEndIndex = srcEndIndex || positions.length;\n const srcLength = srcEndIndex - srcStartIndex;\n\n if (srcLength <= 0) {\n return targetStartIndex;\n }\n\n let targetIndex = targetStartIndex;\n\n for (let i = 0; i < srcLength; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n\n if (!isFlatRingClosed(positions, size, srcStartIndex, srcEndIndex)) {\n for (let i = 0; i < size; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n }\n\n windingOptions.start = targetStartIndex;\n windingOptions.end = targetIndex;\n windingOptions.size = size;\n modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n return targetIndex;\n}\n\nexport function normalize(polygon, positionSize) {\n validate(polygon);\n const positions = [];\n const holeIndices = [];\n\n if ('positions' in polygon) {\n const {\n positions: srcPositions,\n holeIndices: srcHoleIndices\n } = polygon;\n\n if (srcHoleIndices) {\n let targetIndex = 0;\n\n for (let i = 0; i <= srcHoleIndices.length; i++) {\n targetIndex = copyFlatRing(positions, targetIndex, srcPositions, positionSize, srcHoleIndices[i - 1], srcHoleIndices[i], i === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING);\n holeIndices.push(targetIndex);\n }\n\n holeIndices.pop();\n return {\n positions,\n holeIndices\n };\n }\n\n polygon = srcPositions;\n }\n\n if (!isNested(polygon)) {\n copyFlatRing(positions, 0, polygon, positionSize, 0, positions.length, OUTER_POLYGON_WINDING);\n return positions;\n }\n\n if (!isSimple(polygon)) {\n let targetIndex = 0;\n\n for (const [polygonIndex, simplePolygon] of polygon.entries()) {\n targetIndex = copyNestedRing(positions, targetIndex, simplePolygon, positionSize, polygonIndex === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING);\n holeIndices.push(targetIndex);\n }\n\n holeIndices.pop();\n return {\n positions,\n holeIndices\n };\n }\n\n copyNestedRing(positions, 0, polygon, positionSize, OUTER_POLYGON_WINDING);\n return positions;\n}\n\nfunction getPlaneArea(positions, xIndex, yIndex) {\n const numVerts = positions.length / 3;\n let area = 0;\n\n for (let i = 0; i < numVerts; i++) {\n const j = (i + 1) % numVerts;\n area += positions[i * 3 + xIndex] * positions[j * 3 + yIndex];\n area -= positions[j * 3 + xIndex] * positions[i * 3 + yIndex];\n }\n\n return Math.abs(area / 2);\n}\n\nfunction permutePositions(positions, xIndex, yIndex, zIndex) {\n const numVerts = positions.length / 3;\n\n for (let i = 0; i < numVerts; i++) {\n const o = i * 3;\n const x = positions[o + 0];\n const y = positions[o + 1];\n const z = positions[o + 2];\n positions[o + xIndex] = x;\n positions[o + yIndex] = y;\n positions[o + zIndex] = z;\n }\n}\n\nexport function getSurfaceIndices(polygon, positionSize, preproject, full3d) {\n let holeIndices = getHoleIndices(polygon);\n\n if (holeIndices) {\n holeIndices = holeIndices.map(positionIndex => positionIndex / positionSize);\n }\n\n let positions = getPositions(polygon);\n const is3d = full3d && positionSize === 3;\n\n if (preproject) {\n const n = positions.length;\n positions = positions.slice();\n const p = [];\n\n for (let i = 0; i < n; i += positionSize) {\n p[0] = positions[i];\n p[1] = positions[i + 1];\n\n if (is3d) {\n p[2] = positions[i + 2];\n }\n\n const xy = preproject(p);\n positions[i] = xy[0];\n positions[i + 1] = xy[1];\n\n if (is3d) {\n positions[i + 2] = xy[2];\n }\n }\n }\n\n if (is3d) {\n const xyArea = getPlaneArea(positions, 0, 1);\n const xzArea = getPlaneArea(positions, 0, 2);\n const yzArea = getPlaneArea(positions, 1, 2);\n\n if (!xyArea && !xzArea && !yzArea) {\n return [];\n }\n\n if (xyArea > xzArea && xyArea > yzArea) {} else if (xzArea > yzArea) {\n if (!preproject) {\n positions = positions.slice();\n }\n\n permutePositions(positions, 0, 2, 1);\n } else {\n if (!preproject) {\n positions = positions.slice();\n }\n\n permutePositions(positions, 2, 0, 1);\n }\n }\n\n return earcut(positions, holeIndices, positionSize);\n}\n//# sourceMappingURL=polygon.js.map","import * as Polygon from './polygon';\nimport { Tesselator } from '@deck.gl/core';\nimport { cutPolygonByGrid, cutPolygonByMercatorBounds } from '@math.gl/polygon';\nexport default class PolygonTesselator extends Tesselator {\n constructor(opts) {\n const {\n fp64,\n IndexType = Uint32Array\n } = opts;\n super({ ...opts,\n attributes: {\n positions: {\n size: 3,\n type: fp64 ? Float64Array : Float32Array\n },\n vertexValid: {\n type: Uint8ClampedArray,\n size: 1\n },\n indices: {\n type: IndexType,\n size: 1\n }\n }\n });\n }\n\n get(attributeName) {\n const {\n attributes\n } = this;\n\n if (attributeName === 'indices') {\n return attributes.indices && attributes.indices.subarray(0, this.vertexCount);\n }\n\n return attributes[attributeName];\n }\n\n updateGeometry(opts) {\n super.updateGeometry(opts);\n const externalIndices = this.buffers.indices;\n\n if (externalIndices) {\n this.vertexCount = (externalIndices.value || externalIndices).length;\n } else if (this.data && !this.getGeometry) {\n throw new Error('missing indices buffer');\n }\n }\n\n normalizeGeometry(polygon) {\n if (this.normalize) {\n const normalizedPolygon = Polygon.normalize(polygon, this.positionSize);\n\n if (this.opts.resolution) {\n return cutPolygonByGrid(Polygon.getPositions(normalizedPolygon), Polygon.getHoleIndices(normalizedPolygon), {\n size: this.positionSize,\n gridResolution: this.opts.resolution,\n edgeTypes: true\n });\n }\n\n if (this.opts.wrapLongitude) {\n return cutPolygonByMercatorBounds(Polygon.getPositions(normalizedPolygon), Polygon.getHoleIndices(normalizedPolygon), {\n size: this.positionSize,\n maxLatitude: 86,\n edgeTypes: true\n });\n }\n\n return normalizedPolygon;\n }\n\n return polygon;\n }\n\n getGeometrySize(polygon) {\n if (isCut(polygon)) {\n let size = 0;\n\n for (const subPolygon of polygon) {\n size += this.getGeometrySize(subPolygon);\n }\n\n return size;\n }\n\n return Polygon.getPositions(polygon).length / this.positionSize;\n }\n\n getGeometryFromBuffer(buffer) {\n if (this.normalize || !this.buffers.indices) {\n return super.getGeometryFromBuffer(buffer);\n }\n\n return null;\n }\n\n updateGeometryAttributes(polygon, context) {\n if (polygon && isCut(polygon)) {\n for (const subPolygon of polygon) {\n const geometrySize = this.getGeometrySize(subPolygon);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPolygon, context);\n context.vertexStart += geometrySize;\n context.indexStart = this.indexStarts[context.geometryIndex + 1];\n }\n } else {\n this._updateIndices(polygon, context);\n\n this._updatePositions(polygon, context);\n\n this._updateVertexValid(polygon, context);\n }\n }\n\n _updateIndices(polygon, {\n geometryIndex,\n vertexStart: offset,\n indexStart\n }) {\n const {\n attributes,\n indexStarts,\n typedArrayManager\n } = this;\n let target = attributes.indices;\n\n if (!target || !polygon) {\n return;\n }\n\n let i = indexStart;\n const indices = Polygon.getSurfaceIndices(polygon, this.positionSize, this.opts.preproject, this.opts.full3d);\n target = typedArrayManager.allocate(target, indexStart + indices.length, {\n copy: true\n });\n\n for (let j = 0; j < indices.length; j++) {\n target[i++] = indices[j] + offset;\n }\n\n indexStarts[geometryIndex + 1] = indexStart + indices.length;\n attributes.indices = target;\n }\n\n _updatePositions(polygon, {\n vertexStart,\n geometrySize\n }) {\n const {\n attributes: {\n positions\n },\n positionSize\n } = this;\n\n if (!positions || !polygon) {\n return;\n }\n\n const polygonPositions = Polygon.getPositions(polygon);\n\n for (let i = vertexStart, j = 0; j < geometrySize; i++, j++) {\n const x = polygonPositions[j * positionSize];\n const y = polygonPositions[j * positionSize + 1];\n const z = positionSize > 2 ? polygonPositions[j * positionSize + 2] : 0;\n positions[i * 3] = x;\n positions[i * 3 + 1] = y;\n positions[i * 3 + 2] = z;\n }\n }\n\n _updateVertexValid(polygon, {\n vertexStart,\n geometrySize\n }) {\n const {\n positionSize\n } = this;\n const vertexValid = this.attributes.vertexValid;\n const holeIndices = polygon && Polygon.getHoleIndices(polygon);\n\n if (polygon && polygon.edgeTypes) {\n vertexValid.set(polygon.edgeTypes, vertexStart);\n } else {\n vertexValid.fill(1, vertexStart, vertexStart + geometrySize);\n }\n\n if (holeIndices) {\n for (let j = 0; j < holeIndices.length; j++) {\n vertexValid[vertexStart + holeIndices[j] / positionSize - 1] = 0;\n }\n }\n\n vertexValid[vertexStart + geometrySize - 1] = 0;\n }\n\n}\n\nfunction isCut(polygon) {\n return Array.isArray(polygon) && polygon.length > 0 && !Number.isFinite(polygon[0]);\n}\n//# sourceMappingURL=polygon-tesselator.js.map","export default \"\\nattribute vec2 vertexPositions;\\nattribute float vertexValid;\\n\\nuniform bool extruded;\\nuniform bool isWireframe;\\nuniform float elevationScale;\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\n\\nstruct PolygonProps {\\n vec4 fillColors;\\n vec4 lineColors;\\n vec3 positions;\\n vec3 nextPositions;\\n vec3 pickingColors;\\n vec3 positions64Low;\\n vec3 nextPositions64Low;\\n float elevations;\\n};\\n\\nvec3 project_offset_normal(vec3 vector) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\\n }\\n return project_normal(vector);\\n}\\n\\nvoid calculatePosition(PolygonProps props) {\\n#ifdef IS_SIDE_VERTEX\\n if(vertexValid < 0.5){\\n gl_Position = vec4(0.);\\n return;\\n }\\n#endif\\n\\n vec3 pos;\\n vec3 pos64Low;\\n vec3 normal;\\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\\n\\n geometry.worldPosition = props.positions;\\n geometry.worldPositionAlt = props.nextPositions;\\n geometry.pickingColor = props.pickingColors;\\n\\n#ifdef IS_SIDE_VERTEX\\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\\n#else\\n pos = props.positions;\\n pos64Low = props.positions64Low;\\n#endif\\n\\n if (extruded) {\\n pos.z += props.elevations * vertexPositions.y * elevationScale;\\n }\\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\\n\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n if (extruded) {\\n #ifdef IS_SIDE_VERTEX\\n normal = vec3(\\n props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\\n props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\\n 0.0);\\n normal = project_offset_normal(normal);\\n #else\\n normal = project_normal(vec3(0.0, 0.0, 1.0));\\n #endif\\n geometry.normal = normal;\\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\\n vColor = vec4(lightColor, colors.a * opacity);\\n } else {\\n vColor = vec4(colors.rgb, colors.a * opacity);\\n }\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=solid-polygon-layer-vertex-main.glsl.js.map","import main from './solid-polygon-layer-vertex-main.glsl';\nexport default \"#define SHADER_NAME solid-polygon-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 positions64Low;\\nattribute float elevations;\\nattribute vec4 fillColors;\\nattribute vec4 lineColors;\\nattribute vec3 pickingColors;\\n\\n\".concat(main, \"\\n\\nvoid main(void) {\\n PolygonProps props;\\n\\n props.positions = positions;\\n props.positions64Low = positions64Low;\\n props.elevations = elevations;\\n props.fillColors = fillColors;\\n props.lineColors = lineColors;\\n props.pickingColors = pickingColors;\\n\\n calculatePosition(props);\\n}\\n\");\n//# sourceMappingURL=solid-polygon-layer-vertex-top.glsl.js.map","import main from './solid-polygon-layer-vertex-main.glsl';\nexport default \"#define SHADER_NAME solid-polygon-layer-vertex-shader-side\\n#define IS_SIDE_VERTEX\\n\\n\\nattribute vec3 instancePositions;\\nattribute vec3 nextPositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec3 nextPositions64Low;\\nattribute float instanceElevations;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\n\".concat(main, \"\\n\\nvoid main(void) {\\n PolygonProps props;\\n\\n #if RING_WINDING_ORDER_CW == 1\\n props.positions = instancePositions;\\n props.positions64Low = instancePositions64Low;\\n props.nextPositions = nextPositions;\\n props.nextPositions64Low = nextPositions64Low;\\n #else\\n props.positions = nextPositions;\\n props.positions64Low = nextPositions64Low;\\n props.nextPositions = instancePositions;\\n props.nextPositions64Low = instancePositions64Low;\\n #endif\\n props.elevations = instanceElevations;\\n props.fillColors = instanceFillColors;\\n props.lineColors = instanceLineColors;\\n props.pickingColors = instancePickingColors;\\n\\n calculatePosition(props);\\n}\\n\");\n//# sourceMappingURL=solid-polygon-layer-vertex-side.glsl.js.map","export default \"#define SHADER_NAME solid-polygon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\n\\nvoid main(void) {\\n gl_FragColor = vColor;\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=solid-polygon-layer-fragment.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, gouraudLighting, picking, COORDINATE_SYSTEM } from '@deck.gl/core';\nimport { Model, Geometry, hasFeatures, FEATURES } from '@luma.gl/core';\nimport PolygonTesselator from './polygon-tesselator';\nimport vsTop from './solid-polygon-layer-vertex-top.glsl';\nimport vsSide from './solid-polygon-layer-vertex-side.glsl';\nimport fs from './solid-polygon-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n filled: true,\n extruded: false,\n wireframe: false,\n _normalize: true,\n _windingOrder: 'CW',\n _full3d: false,\n elevationScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n getPolygon: {\n type: 'accessor',\n value: f => f.polygon\n },\n getElevation: {\n type: 'accessor',\n value: 1000\n },\n getFillColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getLineColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n material: true\n};\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\nexport default class SolidPolygonLayer extends Layer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders(type) {\n return super.getShaders({\n vs: type === 'top' ? vsTop : vsSide,\n fs,\n defines: {\n RING_WINDING_ORDER_CW: !this.props._normalize && this.props._windingOrder === 'CCW' ? 0 : 1\n },\n modules: [project32, gouraudLighting, picking]\n });\n }\n\n get wrapLongitude() {\n return false;\n }\n\n initializeState() {\n const {\n gl,\n viewport\n } = this.context;\n let {\n coordinateSystem\n } = this.props;\n const {\n _full3d\n } = this.props;\n\n if (viewport.isGeospatial && coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = COORDINATE_SYSTEM.LNGLAT;\n }\n\n let preproject;\n\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n if (_full3d) {\n preproject = viewport.projectPosition.bind(viewport);\n } else {\n preproject = viewport.projectFlat.bind(viewport);\n }\n }\n\n this.setState({\n numInstances: 0,\n polygonTesselator: new PolygonTesselator({\n preproject,\n fp64: this.use64bitPositions(),\n IndexType: !gl || hasFeatures(gl, FEATURES.ELEMENT_INDEX_UINT32) ? Uint32Array : Uint16Array\n })\n });\n const attributeManager = this.getAttributeManager();\n const noAlloc = true;\n attributeManager.remove(['instancePickingColors']);\n attributeManager.add({\n indices: {\n size: 1,\n isIndexed: true,\n update: this.calculateIndices,\n noAlloc\n },\n positions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPolygon',\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n positions: {\n vertexOffset: 0,\n divisor: 0\n },\n instancePositions: {\n vertexOffset: 0,\n divisor: 1\n },\n nextPositions: {\n vertexOffset: 1,\n divisor: 1\n }\n }\n },\n vertexValid: {\n size: 1,\n divisor: 1,\n type: 5121,\n update: this.calculateVertexValid,\n noAlloc\n },\n elevations: {\n size: 1,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getElevation',\n shaderAttributes: {\n elevations: {\n divisor: 0\n },\n instanceElevations: {\n divisor: 1\n }\n }\n },\n fillColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getFillColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n fillColors: {\n divisor: 0\n },\n instanceFillColors: {\n divisor: 1\n }\n }\n },\n lineColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getLineColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n lineColors: {\n divisor: 0\n },\n instanceLineColors: {\n divisor: 1\n }\n }\n },\n pickingColors: {\n size: 3,\n type: 5121,\n accessor: (object, {\n index,\n target: value\n }) => this.encodePickingColor(object && object.__source ? object.__source.index : index, value),\n shaderAttributes: {\n pickingColors: {\n divisor: 0\n },\n instancePickingColors: {\n divisor: 1\n }\n }\n }\n });\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const {\n index\n } = info;\n const {\n data\n } = this.props;\n\n if (data[0] && data[0].__source) {\n info.object = data.find(d => d.__source.index === index);\n }\n\n return info;\n }\n\n disablePickingIndex(objectIndex) {\n const {\n data\n } = this.props;\n\n if (data[0] && data[0].__source) {\n for (let i = 0; i < data.length; i++) {\n if (data[i].__source.index === objectIndex) {\n this._disablePickingIndex(i);\n }\n }\n } else {\n super.disablePickingIndex(objectIndex);\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n extruded,\n filled,\n wireframe,\n elevationScale\n } = this.props;\n const {\n topModel,\n sideModel,\n polygonTesselator\n } = this.state;\n const renderUniforms = { ...uniforms,\n extruded: Boolean(extruded),\n elevationScale\n };\n\n if (sideModel) {\n sideModel.setInstanceCount(polygonTesselator.instanceCount - 1);\n sideModel.setUniforms(renderUniforms);\n\n if (wireframe) {\n sideModel.setDrawMode(3);\n sideModel.setUniforms({\n isWireframe: true\n }).draw();\n }\n\n if (filled) {\n sideModel.setDrawMode(6);\n sideModel.setUniforms({\n isWireframe: false\n }).draw();\n }\n }\n\n if (topModel) {\n topModel.setVertexCount(polygonTesselator.vertexCount);\n topModel.setUniforms(renderUniforms).draw();\n }\n }\n\n updateState(updateParams) {\n super.updateState(updateParams);\n this.updateGeometry(updateParams);\n const {\n props,\n oldProps,\n changeFlags\n } = updateParams;\n const attributeManager = this.getAttributeManager();\n const regenerateModels = changeFlags.extensionsChanged || props.filled !== oldProps.filled || props.extruded !== oldProps.extruded;\n\n if (regenerateModels) {\n var _this$state$models;\n\n (_this$state$models = this.state.models) === null || _this$state$models === void 0 ? void 0 : _this$state$models.forEach(model => model.delete());\n this.setState(this._getModels(this.context.gl));\n attributeManager.invalidateAll();\n }\n }\n\n updateGeometry({\n props,\n oldProps,\n changeFlags\n }) {\n const geometryConfigChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n\n if (geometryConfigChanged) {\n const {\n polygonTesselator\n } = this.state;\n const buffers = props.data.attributes || {};\n polygonTesselator.updateGeometry({\n data: props.data,\n normalize: props._normalize,\n geometryBuffer: buffers.getPolygon,\n buffers,\n getGeometry: props.getPolygon,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n resolution: this.context.viewport.resolution,\n fp64: this.use64bitPositions(),\n dataChanged: changeFlags.dataChanged,\n full3d: props._full3d\n });\n this.setState({\n numInstances: polygonTesselator.instanceCount,\n startIndices: polygonTesselator.vertexStarts\n });\n\n if (!changeFlags.dataChanged) {\n this.getAttributeManager().invalidateAll();\n }\n }\n }\n\n _getModels(gl) {\n const {\n id,\n filled,\n extruded\n } = this.props;\n let topModel;\n let sideModel;\n\n if (filled) {\n const shaders = this.getShaders('top');\n shaders.defines.NON_INSTANCED_MODEL = 1;\n topModel = new Model(gl, { ...shaders,\n id: \"\".concat(id, \"-top\"),\n drawMode: 4,\n attributes: {\n vertexPositions: new Float32Array([0, 1])\n },\n uniforms: {\n isWireframe: false,\n isSideVertex: false\n },\n vertexCount: 0,\n isIndexed: true\n });\n }\n\n if (extruded) {\n sideModel = new Model(gl, { ...this.getShaders('side'),\n id: \"\".concat(id, \"-side\"),\n geometry: new Geometry({\n drawMode: 1,\n vertexCount: 4,\n attributes: {\n vertexPositions: {\n size: 2,\n value: new Float32Array([1, 0, 0, 0, 0, 1, 1, 1])\n }\n }\n }),\n instanceCount: 0,\n isInstanced: 1\n });\n sideModel.userData.excludeAttributes = {\n indices: true\n };\n }\n\n return {\n models: [sideModel, topModel].filter(Boolean),\n topModel,\n sideModel\n };\n }\n\n calculateIndices(attribute) {\n const {\n polygonTesselator\n } = this.state;\n attribute.startIndices = polygonTesselator.indexStarts;\n attribute.value = polygonTesselator.get('indices');\n }\n\n calculatePositions(attribute) {\n const {\n polygonTesselator\n } = this.state;\n attribute.startIndices = polygonTesselator.vertexStarts;\n attribute.value = polygonTesselator.get('positions');\n }\n\n calculateVertexValid(attribute) {\n attribute.value = this.state.polygonTesselator.get('vertexValid');\n }\n\n}\n\n_defineProperty(SolidPolygonLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(SolidPolygonLayer, \"layerName\", 'SolidPolygonLayer');\n//# sourceMappingURL=solid-polygon-layer.js.map","export function replaceInRange({\n data,\n getIndex,\n dataRange,\n replace\n}) {\n const {\n startRow = 0,\n endRow = Infinity\n } = dataRange;\n const count = data.length;\n let replaceStart = count;\n let replaceEnd = count;\n\n for (let i = 0; i < count; i++) {\n const row = getIndex(data[i]);\n\n if (replaceStart > i && row >= startRow) {\n replaceStart = i;\n }\n\n if (row >= endRow) {\n replaceEnd = i;\n break;\n }\n }\n\n let index = replaceStart;\n const dataLengthChanged = replaceEnd - replaceStart !== replace.length;\n const endChunk = dataLengthChanged ? data.slice(replaceEnd) : undefined;\n\n for (let i = 0; i < replace.length; i++) {\n data[index++] = replace[i];\n }\n\n if (endChunk) {\n for (let i = 0; i < endChunk.length; i++) {\n data[index++] = endChunk[i];\n }\n\n data.length = index;\n }\n\n return {\n startRow: replaceStart,\n endRow: replaceStart + replace.length\n };\n}\n//# sourceMappingURL=utils.js.map","export function binaryToFeatureForAccesor(data, index) {\n if (!data) {\n return null;\n }\n\n const featureIndex = 'startIndices' in data ? data.startIndices[index] : index;\n const geometryIndex = data.featureIds.value[featureIndex];\n\n if (featureIndex !== -1) {\n return getPropertiesForIndex(data, geometryIndex, featureIndex);\n }\n\n return null;\n}\n\nfunction getPropertiesForIndex(data, propertiesIndex, numericPropsIndex) {\n const feature = {\n properties: { ...data.properties[propertiesIndex]\n }\n };\n\n for (const prop in data.numericProps) {\n feature.properties[prop] = data.numericProps[prop].value[numericPropsIndex];\n }\n\n return feature;\n}\n\nexport function calculatePickingColors(geojsonBinary, encodePickingColor) {\n const pickingColors = {\n points: null,\n lines: null,\n polygons: null\n };\n\n for (const key in pickingColors) {\n const featureIds = geojsonBinary[key].globalFeatureIds.value;\n pickingColors[key] = new Uint8ClampedArray(featureIds.length * 3);\n const pickingColor = [];\n\n for (let i = 0; i < featureIds.length; i++) {\n encodePickingColor(featureIds[i], pickingColor);\n pickingColors[key][i * 3 + 0] = pickingColor[0];\n pickingColors[key][i * 3 + 1] = pickingColor[1];\n pickingColors[key][i * 3 + 2] = pickingColor[2];\n }\n }\n\n return pickingColors;\n}\n//# sourceMappingURL=geojson-binary.js.map","export default \"#define SHADER_NAME multi-icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float gamma;\\nuniform bool sdf;\\nuniform float alphaCutoff;\\nuniform float sdfBuffer;\\nuniform float outlineBuffer;\\nuniform vec4 outlineColor;\\n\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n if (!picking_uActive) {\\n float alpha = texture2D(iconsTexture, vTextureCoords).a;\\n vec4 color = vColor;\\n if (sdf) {\\n float distance = alpha;\\n alpha = smoothstep(sdfBuffer - gamma, sdfBuffer + gamma, distance);\\n\\n if (outlineBuffer > 0.0) {\\n float inFill = alpha;\\n float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\\n color = mix(outlineColor, vColor, inFill);\\n alpha = inBorder;\\n }\\n }\\n float a = alpha * color.a;\\n \\n if (a < alphaCutoff) {\\n discard;\\n }\\n\\n gl_FragColor = vec4(color.rgb, a * opacity);\\n }\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=multi-icon-layer-fragment.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { log } from '@deck.gl/core';\nimport IconLayer from '../../icon-layer/icon-layer';\nimport fs from './multi-icon-layer-fragment.glsl';\nconst DEFAULT_BUFFER = 192.0 / 256;\nconst EMPTY_ARRAY = [];\nconst defaultProps = {\n getIconOffsets: {\n type: 'accessor',\n value: x => x.offsets\n },\n alphaCutoff: 0.001,\n smoothing: 0.1,\n outlineWidth: 0,\n outlineColor: {\n type: 'color',\n value: [0, 0, 0, 255]\n }\n};\nexport default class MultiIconLayer extends IconLayer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders() {\n return { ...super.getShaders(),\n fs\n };\n }\n\n initializeState() {\n super.initializeState();\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instanceOffsets: {\n size: 2,\n accessor: 'getIconOffsets'\n },\n instancePickingColors: {\n type: 5121,\n size: 3,\n accessor: (object, {\n index,\n target: value\n }) => this.encodePickingColor(index, value)\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n props,\n oldProps\n } = params;\n let {\n outlineColor\n } = props;\n\n if (outlineColor !== oldProps.outlineColor) {\n outlineColor = outlineColor.map(x => x / 255);\n outlineColor[3] = Number.isFinite(outlineColor[3]) ? outlineColor[3] : 1;\n this.setState({\n outlineColor\n });\n }\n\n if (!props.sdf && props.outlineWidth) {\n log.warn(\"\".concat(this.id, \": fontSettings.sdf is required to render outline\"))();\n }\n }\n\n draw(params) {\n const {\n sdf,\n smoothing,\n outlineWidth\n } = this.props;\n const {\n outlineColor\n } = this.state;\n const outlineBuffer = outlineWidth ? Math.max(smoothing, DEFAULT_BUFFER * (1 - outlineWidth)) : -1;\n params.uniforms = { ...params.uniforms,\n sdfBuffer: DEFAULT_BUFFER,\n outlineBuffer,\n gamma: smoothing,\n sdf: Boolean(sdf),\n outlineColor\n };\n super.draw(params);\n\n if (sdf && outlineWidth) {\n const {\n iconManager\n } = this.state;\n const iconsTexture = iconManager.getTexture();\n\n if (iconsTexture) {\n this.state.model.draw({\n uniforms: {\n outlineBuffer: DEFAULT_BUFFER\n }\n });\n }\n }\n }\n\n getInstanceOffset(icons) {\n return icons ? Array.from(icons).flatMap(icon => super.getInstanceOffset(icon)) : EMPTY_ARRAY;\n }\n\n getInstanceColorMode(icons) {\n return 1;\n }\n\n getInstanceIconFrame(icons) {\n return icons ? Array.from(icons).flatMap(icon => super.getInstanceIconFrame(icon)) : EMPTY_ARRAY;\n }\n\n}\n\n_defineProperty(MultiIconLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(MultiIconLayer, \"layerName\", 'MultiIconLayer');\n//# sourceMappingURL=multi-icon-layer.js.map","const INF = 1e20;\n\nexport default class TinySDF {\n constructor({\n fontSize = 24,\n buffer = 3,\n radius = 8,\n cutoff = 0.25,\n fontFamily = 'sans-serif',\n fontWeight = 'normal',\n fontStyle = 'normal'\n } = {}) {\n this.buffer = buffer;\n this.cutoff = cutoff;\n this.radius = radius;\n\n // make the canvas size big enough to both have the specified buffer around the glyph\n // for \"halo\", and account for some glyphs possibly being larger than their font size\n const size = this.size = fontSize + buffer * 4;\n\n const canvas = this._createCanvas(size);\n const ctx = this.ctx = canvas.getContext('2d', {willReadFrequently: true});\n ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left'; // Necessary so that RTL text doesn't have different alignment\n ctx.fillStyle = 'black';\n\n // temporary arrays for the distance transform\n this.gridOuter = new Float64Array(size * size);\n this.gridInner = new Float64Array(size * size);\n this.f = new Float64Array(size);\n this.z = new Float64Array(size + 1);\n this.v = new Uint16Array(size);\n }\n\n _createCanvas(size) {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = size;\n return canvas;\n }\n\n draw(char) {\n const {\n width: glyphAdvance,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n actualBoundingBoxLeft,\n actualBoundingBoxRight\n } = this.ctx.measureText(char);\n\n // The integer/pixel part of the top alignment is encoded in metrics.glyphTop\n // The remainder is implicitly encoded in the rasterization\n const glyphTop = Math.ceil(actualBoundingBoxAscent);\n const glyphLeft = 0;\n\n // If the glyph overflows the canvas size, it will be clipped at the bottom/right\n const glyphWidth = Math.max(0, Math.min(this.size - this.buffer, Math.ceil(actualBoundingBoxRight - actualBoundingBoxLeft)));\n const glyphHeight = Math.min(this.size - this.buffer, glyphTop + Math.ceil(actualBoundingBoxDescent));\n\n const width = glyphWidth + 2 * this.buffer;\n const height = glyphHeight + 2 * this.buffer;\n\n const len = Math.max(width * height, 0);\n const data = new Uint8ClampedArray(len);\n const glyph = {data, width, height, glyphWidth, glyphHeight, glyphTop, glyphLeft, glyphAdvance};\n if (glyphWidth === 0 || glyphHeight === 0) return glyph;\n\n const {ctx, buffer, gridInner, gridOuter} = this;\n ctx.clearRect(buffer, buffer, glyphWidth, glyphHeight);\n ctx.fillText(char, buffer, buffer + glyphTop);\n const imgData = ctx.getImageData(buffer, buffer, glyphWidth, glyphHeight);\n\n // Initialize grids outside the glyph range to alpha 0\n gridOuter.fill(INF, 0, len);\n gridInner.fill(0, 0, len);\n\n for (let y = 0; y < glyphHeight; y++) {\n for (let x = 0; x < glyphWidth; x++) {\n const a = imgData.data[4 * (y * glyphWidth + x) + 3] / 255; // alpha value\n if (a === 0) continue; // empty pixels\n\n const j = (y + buffer) * width + x + buffer;\n\n if (a === 1) { // fully drawn pixels\n gridOuter[j] = 0;\n gridInner[j] = INF;\n\n } else { // aliased pixels\n const d = 0.5 - a;\n gridOuter[j] = d > 0 ? d * d : 0;\n gridInner[j] = d < 0 ? d * d : 0;\n }\n }\n }\n\n edt(gridOuter, 0, 0, width, height, width, this.f, this.v, this.z);\n edt(gridInner, buffer, buffer, glyphWidth, glyphHeight, width, this.f, this.v, this.z);\n\n for (let i = 0; i < len; i++) {\n const d = Math.sqrt(gridOuter[i]) - Math.sqrt(gridInner[i]);\n data[i] = Math.round(255 - 255 * (d / this.radius + this.cutoff));\n }\n\n return glyph;\n }\n}\n\n// 2D Euclidean squared distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction edt(data, x0, y0, width, height, gridSize, f, v, z) {\n for (let x = x0; x < x0 + width; x++) edt1d(data, y0 * gridSize + x, gridSize, height, f, v, z);\n for (let y = y0; y < y0 + height; y++) edt1d(data, y * gridSize + x0, 1, width, f, v, z);\n}\n\n// 1D squared distance transform\nfunction edt1d(grid, offset, stride, length, f, v, z) {\n v[0] = 0;\n z[0] = -INF;\n z[1] = INF;\n f[0] = grid[offset];\n\n for (let q = 1, k = 0, s = 0; q < length; q++) {\n f[q] = grid[offset + q * stride];\n const q2 = q * q;\n do {\n const r = v[k];\n s = (f[q] - f[r] + q2 - r * r) / (q - r) / 2;\n } while (s <= z[k] && --k > -1);\n\n k++;\n v[k] = q;\n z[k] = s;\n z[k + 1] = INF;\n }\n\n for (let q = 0, k = 0; q < length; q++) {\n while (z[k + 1] < q) k++;\n const r = v[k];\n const qr = q - r;\n grid[offset + q * stride] = f[r] + qr * qr;\n }\n}\n","import { log } from '@deck.gl/core';\nconst MISSING_CHAR_WIDTH = 32;\nconst SINGLE_LINE = [];\nexport function nextPowOfTwo(number) {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\nexport function buildMapping({\n characterSet,\n getFontWidth,\n fontHeight,\n buffer,\n maxCanvasWidth,\n mapping = {},\n xOffset = 0,\n yOffset = 0\n}) {\n let row = 0;\n let x = xOffset;\n const rowHeight = fontHeight + buffer * 2;\n\n for (const char of characterSet) {\n if (!mapping[char]) {\n const width = getFontWidth(char);\n\n if (x + width + buffer * 2 > maxCanvasWidth) {\n x = 0;\n row++;\n }\n\n mapping[char] = {\n x: x + buffer,\n y: yOffset + row * rowHeight + buffer,\n width,\n height: rowHeight,\n layoutWidth: width,\n layoutHeight: fontHeight\n };\n x += width + buffer * 2;\n }\n }\n\n return {\n mapping,\n xOffset: x,\n yOffset: yOffset + row * rowHeight,\n canvasHeight: nextPowOfTwo(yOffset + (row + 1) * rowHeight)\n };\n}\n\nfunction getTextWidth(text, startIndex, endIndex, mapping) {\n let width = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n var _mapping$character;\n\n const character = text[i];\n width += ((_mapping$character = mapping[character]) === null || _mapping$character === void 0 ? void 0 : _mapping$character.layoutWidth) || 0;\n }\n\n return width;\n}\n\nfunction breakAll(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n let rowStartCharIndex = startIndex;\n let rowOffsetLeft = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n const textWidth = getTextWidth(text, i, i + 1, iconMapping);\n\n if (rowOffsetLeft + textWidth > maxWidth) {\n if (rowStartCharIndex < i) {\n target.push(i);\n }\n\n rowStartCharIndex = i;\n rowOffsetLeft = 0;\n }\n\n rowOffsetLeft += textWidth;\n }\n\n return rowOffsetLeft;\n}\n\nfunction breakWord(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n let rowStartCharIndex = startIndex;\n let groupStartCharIndex = startIndex;\n let groupEndCharIndex = startIndex;\n let rowOffsetLeft = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n if (text[i] === ' ') {\n groupEndCharIndex = i + 1;\n } else if (text[i + 1] === ' ' || i + 1 === endIndex) {\n groupEndCharIndex = i + 1;\n }\n\n if (groupEndCharIndex > groupStartCharIndex) {\n let groupWidth = getTextWidth(text, groupStartCharIndex, groupEndCharIndex, iconMapping);\n\n if (rowOffsetLeft + groupWidth > maxWidth) {\n if (rowStartCharIndex < groupStartCharIndex) {\n target.push(groupStartCharIndex);\n rowStartCharIndex = groupStartCharIndex;\n rowOffsetLeft = 0;\n }\n\n if (groupWidth > maxWidth) {\n groupWidth = breakAll(text, groupStartCharIndex, groupEndCharIndex, maxWidth, iconMapping, target);\n rowStartCharIndex = target[target.length - 1];\n }\n }\n\n groupStartCharIndex = groupEndCharIndex;\n rowOffsetLeft += groupWidth;\n }\n }\n\n return rowOffsetLeft;\n}\n\nexport function autoWrapping(text, wordBreak, maxWidth, iconMapping, startIndex = 0, endIndex) {\n if (endIndex === undefined) {\n endIndex = text.length;\n }\n\n const result = [];\n\n if (wordBreak === 'break-all') {\n breakAll(text, startIndex, endIndex, maxWidth, iconMapping, result);\n } else {\n breakWord(text, startIndex, endIndex, maxWidth, iconMapping, result);\n }\n\n return result;\n}\n\nfunction transformRow(line, startIndex, endIndex, iconMapping, leftOffsets, rowSize) {\n let x = 0;\n let rowHeight = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n const character = line[i];\n const frame = iconMapping[character];\n\n if (frame) {\n if (!rowHeight) {\n rowHeight = frame.layoutHeight;\n }\n\n leftOffsets[i] = x + frame.layoutWidth / 2;\n x += frame.layoutWidth;\n } else {\n log.warn(\"Missing character: \".concat(character, \" (\").concat(character.codePointAt(0), \")\"))();\n leftOffsets[i] = x;\n x += MISSING_CHAR_WIDTH;\n }\n }\n\n rowSize[0] = x;\n rowSize[1] = rowHeight;\n}\n\nexport function transformParagraph(paragraph, lineHeight, wordBreak, maxWidth, iconMapping) {\n const characters = Array.from(paragraph);\n const numCharacters = characters.length;\n const x = new Array(numCharacters);\n const y = new Array(numCharacters);\n const rowWidth = new Array(numCharacters);\n const autoWrappingEnabled = (wordBreak === 'break-word' || wordBreak === 'break-all') && isFinite(maxWidth) && maxWidth > 0;\n const size = [0, 0];\n const rowSize = [0, 0];\n let rowOffsetTop = 0;\n let lineStartIndex = 0;\n let lineEndIndex = 0;\n\n for (let i = 0; i <= numCharacters; i++) {\n const char = characters[i];\n\n if (char === '\\n' || i === numCharacters) {\n lineEndIndex = i;\n }\n\n if (lineEndIndex > lineStartIndex) {\n const rows = autoWrappingEnabled ? autoWrapping(characters, wordBreak, maxWidth, iconMapping, lineStartIndex, lineEndIndex) : SINGLE_LINE;\n\n for (let rowIndex = 0; rowIndex <= rows.length; rowIndex++) {\n const rowStart = rowIndex === 0 ? lineStartIndex : rows[rowIndex - 1];\n const rowEnd = rowIndex < rows.length ? rows[rowIndex] : lineEndIndex;\n transformRow(characters, rowStart, rowEnd, iconMapping, x, rowSize);\n\n for (let j = rowStart; j < rowEnd; j++) {\n var _iconMapping$char;\n\n const char = characters[j];\n const layoutOffsetY = ((_iconMapping$char = iconMapping[char]) === null || _iconMapping$char === void 0 ? void 0 : _iconMapping$char.layoutOffsetY) || 0;\n y[j] = rowOffsetTop + rowSize[1] / 2 + layoutOffsetY;\n rowWidth[j] = rowSize[0];\n }\n\n rowOffsetTop = rowOffsetTop + rowSize[1] * lineHeight;\n size[0] = Math.max(size[0], rowSize[0]);\n }\n\n lineStartIndex = lineEndIndex;\n }\n\n if (char === '\\n') {\n x[lineStartIndex] = 0;\n y[lineStartIndex] = 0;\n rowWidth[lineStartIndex] = 0;\n lineStartIndex++;\n }\n }\n\n size[1] = rowOffsetTop;\n return {\n x,\n y,\n rowWidth,\n size\n };\n}\nexport function getTextFromBuffer({\n value,\n length,\n stride,\n offset,\n startIndices,\n characterSet\n}) {\n const bytesPerElement = value.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : 1;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const characterCount = startIndices[length] || Math.ceil((value.length - elementOffset) / elementStride);\n const autoCharacterSet = characterSet && new Set();\n const texts = new Array(length);\n let codes = value;\n\n if (elementStride > 1 || elementOffset > 0) {\n const ArrayType = value.constructor;\n codes = new ArrayType(characterCount);\n\n for (let i = 0; i < characterCount; i++) {\n codes[i] = value[i * elementStride + elementOffset];\n }\n }\n\n for (let index = 0; index < length; index++) {\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || characterCount;\n const codesAtIndex = codes.subarray(startIndex, endIndex);\n texts[index] = String.fromCodePoint.apply(null, codesAtIndex);\n\n if (autoCharacterSet) {\n codesAtIndex.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n }\n\n if (autoCharacterSet) {\n for (const charCode of autoCharacterSet) {\n characterSet.add(String.fromCodePoint(charCode));\n }\n }\n\n return {\n texts,\n characterCount\n };\n}\n//# sourceMappingURL=utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class LRUCache {\n constructor(limit = 5) {\n _defineProperty(this, \"limit\", void 0);\n\n _defineProperty(this, \"_cache\", {});\n\n _defineProperty(this, \"_order\", []);\n\n this.limit = limit;\n }\n\n get(key) {\n const value = this._cache[key];\n\n if (value) {\n this._deleteOrder(key);\n\n this._appendOrder(key);\n }\n\n return value;\n }\n\n set(key, value) {\n if (!this._cache[key]) {\n if (Object.keys(this._cache).length === this.limit) {\n this.delete(this._order[0]);\n }\n\n this._cache[key] = value;\n\n this._appendOrder(key);\n } else {\n this.delete(key);\n this._cache[key] = value;\n\n this._appendOrder(key);\n }\n }\n\n delete(key) {\n const value = this._cache[key];\n\n if (value) {\n delete this._cache[key];\n\n this._deleteOrder(key);\n }\n }\n\n _deleteOrder(key) {\n const index = this._order.indexOf(key);\n\n if (index >= 0) {\n this._order.splice(index, 1);\n }\n }\n\n _appendOrder(key) {\n this._order.push(key);\n }\n\n}\n//# sourceMappingURL=lru-cache.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport TinySDF from '@mapbox/tiny-sdf';\nimport { log } from '@deck.gl/core';\nimport { buildMapping } from './utils';\nimport LRUCache from './lru-cache';\n\nfunction getDefaultCharacterSet() {\n const charSet = [];\n\n for (let i = 32; i < 128; i++) {\n charSet.push(String.fromCharCode(i));\n }\n\n return charSet;\n}\n\nexport const DEFAULT_FONT_SETTINGS = {\n fontFamily: 'Monaco, monospace',\n fontWeight: 'normal',\n characterSet: getDefaultCharacterSet(),\n fontSize: 64,\n buffer: 4,\n sdf: false,\n cutoff: 0.25,\n radius: 12,\n smoothing: 0.1\n};\nconst MAX_CANVAS_WIDTH = 1024;\nconst BASELINE_SCALE = 0.9;\nconst HEIGHT_SCALE = 1.2;\nconst CACHE_LIMIT = 3;\nlet cache = new LRUCache(CACHE_LIMIT);\n\nfunction getNewChars(cacheKey, characterSet) {\n let newCharSet;\n\n if (typeof characterSet === 'string') {\n newCharSet = new Set(Array.from(characterSet));\n } else {\n newCharSet = new Set(characterSet);\n }\n\n const cachedFontAtlas = cache.get(cacheKey);\n\n if (!cachedFontAtlas) {\n return newCharSet;\n }\n\n for (const char in cachedFontAtlas.mapping) {\n if (newCharSet.has(char)) {\n newCharSet.delete(char);\n }\n }\n\n return newCharSet;\n}\n\nfunction populateAlphaChannel(alphaChannel, imageData) {\n for (let i = 0; i < alphaChannel.length; i++) {\n imageData.data[4 * i + 3] = alphaChannel[i];\n }\n}\n\nfunction setTextStyle(ctx, fontFamily, fontSize, fontWeight) {\n ctx.font = \"\".concat(fontWeight, \" \").concat(fontSize, \"px \").concat(fontFamily);\n ctx.fillStyle = '#000';\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left';\n}\n\nexport function setFontAtlasCacheLimit(limit) {\n log.assert(Number.isFinite(limit) && limit >= CACHE_LIMIT, 'Invalid cache limit');\n cache = new LRUCache(limit);\n}\nexport default class FontAtlasManager {\n constructor() {\n _defineProperty(this, \"props\", { ...DEFAULT_FONT_SETTINGS\n });\n\n _defineProperty(this, \"_key\", void 0);\n\n _defineProperty(this, \"_atlas\", void 0);\n }\n\n get texture() {\n return this._atlas;\n }\n\n get mapping() {\n return this._atlas && this._atlas.mapping;\n }\n\n get scale() {\n const {\n fontSize,\n buffer\n } = this.props;\n return (fontSize * HEIGHT_SCALE + buffer * 2) / fontSize;\n }\n\n setProps(props = {}) {\n Object.assign(this.props, props);\n this._key = this._getKey();\n const charSet = getNewChars(this._key, this.props.characterSet);\n const cachedFontAtlas = cache.get(this._key);\n\n if (cachedFontAtlas && charSet.size === 0) {\n if (this._atlas !== cachedFontAtlas) {\n this._atlas = cachedFontAtlas;\n }\n\n return;\n }\n\n const fontAtlas = this._generateFontAtlas(charSet, cachedFontAtlas);\n\n this._atlas = fontAtlas;\n cache.set(this._key, fontAtlas);\n }\n\n _generateFontAtlas(characterSet, cachedFontAtlas) {\n const {\n fontFamily,\n fontWeight,\n fontSize,\n buffer,\n sdf,\n radius,\n cutoff\n } = this.props;\n let canvas = cachedFontAtlas && cachedFontAtlas.data;\n\n if (!canvas) {\n canvas = document.createElement('canvas');\n canvas.width = MAX_CANVAS_WIDTH;\n }\n\n const ctx = canvas.getContext('2d', {\n willReadFrequently: true\n });\n setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n const {\n mapping,\n canvasHeight,\n xOffset,\n yOffset\n } = buildMapping({\n getFontWidth: char => ctx.measureText(char).width,\n fontHeight: fontSize * HEIGHT_SCALE,\n buffer,\n characterSet,\n maxCanvasWidth: MAX_CANVAS_WIDTH,\n ...(cachedFontAtlas && {\n mapping: cachedFontAtlas.mapping,\n xOffset: cachedFontAtlas.xOffset,\n yOffset: cachedFontAtlas.yOffset\n })\n });\n\n if (canvas.height !== canvasHeight) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n canvas.height = canvasHeight;\n ctx.putImageData(imageData, 0, 0);\n }\n\n setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n\n if (sdf) {\n const tinySDF = new TinySDF({\n fontSize,\n buffer,\n radius,\n cutoff,\n fontFamily,\n fontWeight: \"\".concat(fontWeight)\n });\n\n for (const char of characterSet) {\n const {\n data,\n width,\n height,\n glyphTop\n } = tinySDF.draw(char);\n mapping[char].width = width;\n mapping[char].layoutOffsetY = fontSize * BASELINE_SCALE - glyphTop;\n const imageData = ctx.createImageData(width, height);\n populateAlphaChannel(data, imageData);\n ctx.putImageData(imageData, mapping[char].x, mapping[char].y);\n }\n } else {\n for (const char of characterSet) {\n ctx.fillText(char, mapping[char].x, mapping[char].y + buffer + fontSize * BASELINE_SCALE);\n }\n }\n\n return {\n xOffset,\n yOffset,\n mapping,\n data: canvas,\n width: canvas.width,\n height: canvas.height\n };\n }\n\n _getKey() {\n const {\n fontFamily,\n fontWeight,\n fontSize,\n buffer,\n sdf,\n radius,\n cutoff\n } = this.props;\n\n if (sdf) {\n return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer, \" \").concat(radius, \" \").concat(cutoff);\n }\n\n return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer);\n }\n\n}\n//# sourceMappingURL=font-atlas-manager.js.map","export default \"#define SHADER_NAME text-background-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec4 instanceRects;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec2 instancePixelOffsets;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform bool billboard;\\nuniform float opacity;\\nuniform float sizeScale;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform vec4 padding;\\nuniform int sizeUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n float angle_radian = radians(angle);\\n float cos_angle = cos(angle_radian);\\n float sin_angle = sin(angle_radian);\\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n geometry.uv = positions;\\n geometry.pickingColor = instancePickingColors;\\n uv = positions;\\n vLineWidth = instanceLineWidths;\\n float sizePixels = clamp(\\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\\n sizeMinPixels, sizeMaxPixels\\n );\\n\\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\\n\\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\\n pixelOffset += instancePixelOffsets;\\n pixelOffset.y *= -1.0;\\n\\n if (billboard) {\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n vec3 offset = vec3(pixelOffset, 0.0);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n } else {\\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n DECKGL_FILTER_SIZE(offset_common, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n DECKGL_FILTER_COLOR(vFillColor, geometry);\\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\";\n//# sourceMappingURL=text-background-layer-vertex.glsl.js.map","export default \"#define SHADER_NAME text-background-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool stroked;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n vec2 pixelPosition = uv * dimensions;\\n if (stroked) {\\n float distToEdge = min(\\n min(pixelPosition.x, dimensions.x - pixelPosition.x),\\n min(pixelPosition.y, dimensions.y - pixelPosition.y)\\n );\\n float isBorder = smoothedge(distToEdge, vLineWidth);\\n gl_FragColor = mix(vFillColor, vLineColor, isBorder);\\n } else {\\n gl_FragColor = vFillColor;\\n }\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=text-background-layer-fragment.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './text-background-layer-vertex.glsl';\nimport fs from './text-background-layer-fragment.glsl';\nconst defaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n padding: {\n type: 'array',\n value: [0, 0, 0, 0]\n },\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getSize: {\n type: 'accessor',\n value: 1\n },\n getAngle: {\n type: 'accessor',\n value: 0\n },\n getPixelOffset: {\n type: 'accessor',\n value: [0, 0]\n },\n getBoundingRect: {\n type: 'accessor',\n value: [0, 0, 0, 0]\n },\n getFillColor: {\n type: 'accessor',\n value: [0, 0, 0, 255]\n },\n getLineColor: {\n type: 'accessor',\n value: [0, 0, 0, 255]\n },\n getLineWidth: {\n type: 'accessor',\n value: 1\n }\n};\nexport default class TextBackgroundLayer extends Layer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders() {\n return super.getShaders({\n vs,\n fs,\n modules: [project32, picking]\n });\n }\n\n initializeState() {\n this.getAttributeManager().addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 1\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: 'getAngle'\n },\n instanceRects: {\n size: 4,\n accessor: 'getBoundingRect'\n },\n instancePixelOffsets: {\n size: 2,\n transition: true,\n accessor: 'getPixelOffset'\n },\n instanceFillColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n changeFlags\n } = params;\n\n if (changeFlags.extensionsChanged) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n billboard,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n getLineWidth\n } = this.props;\n let {\n padding\n } = this.props;\n\n if (padding.length < 4) {\n padding = [padding[0], padding[1], padding[0], padding[1]];\n }\n\n this.state.model.setUniforms(uniforms).setUniforms({\n billboard,\n stroked: Boolean(getLineWidth),\n padding,\n sizeUnits: UNIT[sizeUnits],\n sizeScale,\n sizeMinPixels,\n sizeMaxPixels\n }).draw();\n }\n\n _getModel(gl) {\n const positions = [0, 0, 1, 0, 1, 1, 0, 1];\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: 6,\n vertexCount: 4,\n attributes: {\n positions: {\n size: 2,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n });\n }\n\n}\n\n_defineProperty(TextBackgroundLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(TextBackgroundLayer, \"layerName\", 'TextBackgroundLayer');\n//# sourceMappingURL=text-background-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer, createIterable, log } from '@deck.gl/core';\nimport MultiIconLayer from './multi-icon-layer/multi-icon-layer';\nimport FontAtlasManager, { DEFAULT_FONT_SETTINGS, setFontAtlasCacheLimit } from './font-atlas-manager';\nimport { transformParagraph, getTextFromBuffer } from './utils';\nimport TextBackgroundLayer from './text-background-layer/text-background-layer';\nconst TEXT_ANCHOR = {\n start: 1,\n middle: 0,\n end: -1\n};\nconst ALIGNMENT_BASELINE = {\n top: 1,\n center: 0,\n bottom: -1\n};\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_LINE_HEIGHT = 1.0;\nconst defaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n background: false,\n getBackgroundColor: {\n type: 'accessor',\n value: [255, 255, 255, 255]\n },\n getBorderColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getBorderWidth: {\n type: 'accessor',\n value: 0\n },\n backgroundPadding: {\n type: 'array',\n value: [0, 0, 0, 0]\n },\n characterSet: {\n type: 'object',\n value: DEFAULT_FONT_SETTINGS.characterSet\n },\n fontFamily: DEFAULT_FONT_SETTINGS.fontFamily,\n fontWeight: DEFAULT_FONT_SETTINGS.fontWeight,\n lineHeight: DEFAULT_LINE_HEIGHT,\n outlineWidth: {\n type: 'number',\n value: 0,\n min: 0\n },\n outlineColor: {\n type: 'color',\n value: DEFAULT_COLOR\n },\n fontSettings: {\n type: 'object',\n value: {},\n compare: 1\n },\n wordBreak: 'break-word',\n maxWidth: {\n type: 'number',\n value: -1\n },\n getText: {\n type: 'accessor',\n value: x => x.text\n },\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getSize: {\n type: 'accessor',\n value: 32\n },\n getAngle: {\n type: 'accessor',\n value: 0\n },\n getTextAnchor: {\n type: 'accessor',\n value: 'middle'\n },\n getAlignmentBaseline: {\n type: 'accessor',\n value: 'center'\n },\n getPixelOffset: {\n type: 'accessor',\n value: [0, 0]\n },\n backgroundColor: {\n deprecatedFor: ['background', 'getBackgroundColor']\n }\n};\nexport default class TextLayer extends CompositeLayer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n\n _defineProperty(this, \"getBoundingRect\", (object, objectInfo) => {\n let {\n size: [width, height]\n } = this.transformParagraph(object, objectInfo);\n const {\n fontSize\n } = this.state.fontAtlasManager.props;\n width /= fontSize;\n height /= fontSize;\n const {\n getTextAnchor,\n getAlignmentBaseline\n } = this.props;\n const anchorX = TEXT_ANCHOR[typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor];\n const anchorY = ALIGNMENT_BASELINE[typeof getAlignmentBaseline === 'function' ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n return [(anchorX - 1) * width / 2, (anchorY - 1) * height / 2, width, height];\n });\n\n _defineProperty(this, \"getIconOffsets\", (object, objectInfo) => {\n const {\n getTextAnchor,\n getAlignmentBaseline\n } = this.props;\n const {\n x,\n y,\n rowWidth,\n size: [width, height]\n } = this.transformParagraph(object, objectInfo);\n const anchorX = TEXT_ANCHOR[typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor];\n const anchorY = ALIGNMENT_BASELINE[typeof getAlignmentBaseline === 'function' ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n const numCharacters = x.length;\n const offsets = new Array(numCharacters * 2);\n let index = 0;\n\n for (let i = 0; i < numCharacters; i++) {\n const rowOffset = (1 - anchorX) * (width - rowWidth[i]) / 2;\n offsets[index++] = (anchorX - 1) * width / 2 + rowOffset + x[i];\n offsets[index++] = (anchorY - 1) * height / 2 + y[i];\n }\n\n return offsets;\n });\n }\n\n initializeState() {\n this.state = {\n styleVersion: 0,\n fontAtlasManager: new FontAtlasManager()\n };\n\n if (this.props.maxWidth > 0) {\n log.warn('v8.9 breaking change: TextLayer maxWidth is now relative to text size')();\n }\n }\n\n updateState(params) {\n const {\n props,\n oldProps,\n changeFlags\n } = params;\n const textChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getText);\n\n if (textChanged) {\n this._updateText();\n }\n\n const fontChanged = this._updateFontAtlas();\n\n const styleChanged = fontChanged || props.lineHeight !== oldProps.lineHeight || props.wordBreak !== oldProps.wordBreak || props.maxWidth !== oldProps.maxWidth;\n\n if (styleChanged) {\n this.setState({\n styleVersion: this.state.styleVersion + 1\n });\n }\n }\n\n getPickingInfo({\n info\n }) {\n info.object = info.index >= 0 ? this.props.data[info.index] : null;\n return info;\n }\n\n _updateFontAtlas() {\n const {\n fontSettings,\n fontFamily,\n fontWeight\n } = this.props;\n const {\n fontAtlasManager,\n characterSet\n } = this.state;\n const fontProps = { ...fontSettings,\n characterSet,\n fontFamily,\n fontWeight\n };\n\n if (!fontAtlasManager.mapping) {\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n\n for (const key in fontProps) {\n if (fontProps[key] !== fontAtlasManager.props[key]) {\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n }\n\n return false;\n }\n\n _updateText() {\n var _attributes;\n\n const {\n data,\n characterSet\n } = this.props;\n const textBuffer = (_attributes = data.attributes) === null || _attributes === void 0 ? void 0 : _attributes.getText;\n let {\n getText\n } = this.props;\n let startIndices = data.startIndices;\n let numInstances;\n const autoCharacterSet = characterSet === 'auto' && new Set();\n\n if (textBuffer && startIndices) {\n const {\n texts,\n characterCount\n } = getTextFromBuffer({ ...(ArrayBuffer.isView(textBuffer) ? {\n value: textBuffer\n } : textBuffer),\n length: data.length,\n startIndices,\n characterSet: autoCharacterSet\n });\n numInstances = characterCount;\n\n getText = (_, {\n index\n }) => texts[index];\n } else {\n const {\n iterable,\n objectInfo\n } = createIterable(data);\n startIndices = [0];\n numInstances = 0;\n\n for (const object of iterable) {\n objectInfo.index++;\n const text = Array.from(getText(object, objectInfo) || '');\n\n if (autoCharacterSet) {\n text.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n\n numInstances += text.length;\n startIndices.push(numInstances);\n }\n }\n\n this.setState({\n getText,\n startIndices,\n numInstances,\n characterSet: autoCharacterSet || characterSet\n });\n }\n\n transformParagraph(object, objectInfo) {\n const {\n fontAtlasManager\n } = this.state;\n const iconMapping = fontAtlasManager.mapping;\n const getText = this.state.getText;\n const {\n wordBreak,\n lineHeight,\n maxWidth\n } = this.props;\n const paragraph = getText(object, objectInfo) || '';\n return transformParagraph(paragraph, lineHeight, wordBreak, maxWidth * fontAtlasManager.props.fontSize, iconMapping);\n }\n\n renderLayers() {\n const {\n startIndices,\n numInstances,\n getText,\n fontAtlasManager: {\n scale,\n texture,\n mapping\n },\n styleVersion\n } = this.state;\n const {\n data,\n _dataDiff,\n getPosition,\n getColor,\n getSize,\n getAngle,\n getPixelOffset,\n getBackgroundColor,\n getBorderColor,\n getBorderWidth,\n backgroundPadding,\n background,\n billboard,\n fontSettings,\n outlineWidth,\n outlineColor,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n transitions,\n updateTriggers\n } = this.props;\n const CharactersLayerClass = this.getSubLayerClass('characters', MultiIconLayer);\n const BackgroundLayerClass = this.getSubLayerClass('background', TextBackgroundLayer);\n return [background && new BackgroundLayerClass({\n getFillColor: getBackgroundColor,\n getLineColor: getBorderColor,\n getLineWidth: getBorderWidth,\n padding: backgroundPadding,\n getPosition,\n getSize,\n getAngle,\n getPixelOffset,\n billboard,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getSize: transitions.getSize,\n getFillColor: transitions.getBackgroundColor,\n getLineColor: transitions.getBorderColor,\n getLineWidth: transitions.getBorderWidth,\n getPixelOffset: transitions.getPixelOffset\n }\n }, this.getSubLayerProps({\n id: 'background',\n updateTriggers: {\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getSize: updateTriggers.getSize,\n getFillColor: updateTriggers.getBackgroundColor,\n getLineColor: updateTriggers.getBorderColor,\n getLineWidth: updateTriggers.getBorderWidth,\n getPixelOffset: updateTriggers.getPixelOffset,\n getBoundingRect: {\n getText: updateTriggers.getText,\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion\n }\n }\n }), {\n data: data.attributes && data.attributes.background ? {\n length: data.length,\n attributes: data.attributes.background\n } : data,\n _dataDiff,\n autoHighlight: false,\n getBoundingRect: this.getBoundingRect\n }), new CharactersLayerClass({\n sdf: fontSettings.sdf,\n smoothing: Number.isFinite(fontSettings.smoothing) ? fontSettings.smoothing : DEFAULT_FONT_SETTINGS.smoothing,\n outlineWidth: outlineWidth / (fontSettings.radius || DEFAULT_FONT_SETTINGS.radius),\n outlineColor,\n iconAtlas: texture,\n iconMapping: mapping,\n getPosition,\n getColor,\n getSize,\n getAngle,\n getPixelOffset,\n billboard,\n sizeScale: sizeScale * scale,\n sizeUnits,\n sizeMinPixels: sizeMinPixels * scale,\n sizeMaxPixels: sizeMaxPixels * scale,\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getColor: transitions.getColor,\n getSize: transitions.getSize,\n getPixelOffset: transitions.getPixelOffset\n }\n }, this.getSubLayerProps({\n id: 'characters',\n updateTriggers: {\n all: updateTriggers.getText,\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getColor: updateTriggers.getColor,\n getSize: updateTriggers.getSize,\n getPixelOffset: updateTriggers.getPixelOffset,\n getIconOffsets: {\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion\n }\n }\n }), {\n data,\n _dataDiff,\n startIndices,\n numInstances,\n getIconOffsets: this.getIconOffsets,\n getIcon: getText\n })];\n }\n\n static set fontAtlasCacheLimit(limit) {\n setFontAtlasCacheLimit(limit);\n }\n\n}\n\n_defineProperty(TextLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(TextLayer, \"layerName\", 'TextLayer');\n//# sourceMappingURL=text-layer.js.map","import IconLayer from '../icon-layer/icon-layer';\nimport ScatterplotLayer from '../scatterplot-layer/scatterplot-layer';\nimport TextLayer from '../text-layer/text-layer';\nimport PathLayer from '../path-layer/path-layer';\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\nexport const POINT_LAYER = {\n circle: {\n type: ScatterplotLayer,\n props: {\n filled: 'filled',\n stroked: 'stroked',\n lineWidthMaxPixels: 'lineWidthMaxPixels',\n lineWidthMinPixels: 'lineWidthMinPixels',\n lineWidthScale: 'lineWidthScale',\n lineWidthUnits: 'lineWidthUnits',\n pointRadiusMaxPixels: 'radiusMaxPixels',\n pointRadiusMinPixels: 'radiusMinPixels',\n pointRadiusScale: 'radiusScale',\n pointRadiusUnits: 'radiusUnits',\n pointAntialiasing: 'antialiasing',\n pointBillboard: 'billboard',\n getFillColor: 'getFillColor',\n getLineColor: 'getLineColor',\n getLineWidth: 'getLineWidth',\n getPointRadius: 'getRadius'\n }\n },\n icon: {\n type: IconLayer,\n props: {\n iconAtlas: 'iconAtlas',\n iconMapping: 'iconMapping',\n iconSizeMaxPixels: 'sizeMaxPixels',\n iconSizeMinPixels: 'sizeMinPixels',\n iconSizeScale: 'sizeScale',\n iconSizeUnits: 'sizeUnits',\n iconAlphaCutoff: 'alphaCutoff',\n iconBillboard: 'billboard',\n getIcon: 'getIcon',\n getIconAngle: 'getAngle',\n getIconColor: 'getColor',\n getIconPixelOffset: 'getPixelOffset',\n getIconSize: 'getSize'\n }\n },\n text: {\n type: TextLayer,\n props: {\n textSizeMaxPixels: 'sizeMaxPixels',\n textSizeMinPixels: 'sizeMinPixels',\n textSizeScale: 'sizeScale',\n textSizeUnits: 'sizeUnits',\n textBackground: 'background',\n textBackgroundPadding: 'backgroundPadding',\n textFontFamily: 'fontFamily',\n textFontWeight: 'fontWeight',\n textLineHeight: 'lineHeight',\n textMaxWidth: 'maxWidth',\n textOutlineColor: 'outlineColor',\n textOutlineWidth: 'outlineWidth',\n textWordBreak: 'wordBreak',\n textCharacterSet: 'characterSet',\n textBillboard: 'billboard',\n textFontSettings: 'fontSettings',\n getText: 'getText',\n getTextAngle: 'getAngle',\n getTextColor: 'getColor',\n getTextPixelOffset: 'getPixelOffset',\n getTextSize: 'getSize',\n getTextAnchor: 'getTextAnchor',\n getTextAlignmentBaseline: 'getAlignmentBaseline',\n getTextBackgroundColor: 'getBackgroundColor',\n getTextBorderColor: 'getBorderColor',\n getTextBorderWidth: 'getBorderWidth'\n }\n }\n};\nexport const LINE_LAYER = {\n type: PathLayer,\n props: {\n lineWidthUnits: 'widthUnits',\n lineWidthScale: 'widthScale',\n lineWidthMinPixels: 'widthMinPixels',\n lineWidthMaxPixels: 'widthMaxPixels',\n lineJointRounded: 'jointRounded',\n lineCapRounded: 'capRounded',\n lineMiterLimit: 'miterLimit',\n lineBillboard: 'billboard',\n getLineColor: 'getColor',\n getLineWidth: 'getWidth'\n }\n};\nexport const POLYGON_LAYER = {\n type: SolidPolygonLayer,\n props: {\n extruded: 'extruded',\n filled: 'filled',\n wireframe: 'wireframe',\n elevationScale: 'elevationScale',\n material: 'material',\n _full3d: '_full3d',\n getElevation: 'getElevation',\n getFillColor: 'getFillColor',\n getLineColor: 'getLineColor'\n }\n};\nexport function getDefaultProps({\n type,\n props\n}) {\n const result = {};\n\n for (const key in props) {\n result[key] = type.defaultProps[props[key]];\n }\n\n return result;\n}\nexport function forwardProps(layer, mapping) {\n const {\n transitions,\n updateTriggers\n } = layer.props;\n const result = {\n updateTriggers: {},\n transitions: transitions && {\n getPosition: transitions.geometry\n }\n };\n\n for (const sourceKey in mapping) {\n const targetKey = mapping[sourceKey];\n let value = layer.props[sourceKey];\n\n if (sourceKey.startsWith('get')) {\n value = layer.getSubLayerAccessor(value);\n result.updateTriggers[targetKey] = updateTriggers[sourceKey];\n\n if (transitions) {\n result.transitions[targetKey] = transitions[sourceKey];\n }\n }\n\n result[targetKey] = value;\n }\n\n return result;\n}\n//# sourceMappingURL=sub-layer-map.js.map","import { log } from '@deck.gl/core';\nexport function getGeojsonFeatures(geojson) {\n if (Array.isArray(geojson)) {\n return geojson;\n }\n\n log.assert(geojson.type, 'GeoJSON does not have type');\n\n switch (geojson.type) {\n case 'Feature':\n return [geojson];\n\n case 'FeatureCollection':\n log.assert(Array.isArray(geojson.features), 'GeoJSON does not have features array');\n return geojson.features;\n\n default:\n return [{\n geometry: geojson\n }];\n }\n}\nexport function separateGeojsonFeatures(features, wrapFeature, dataRange = {}) {\n const separated = {\n pointFeatures: [],\n lineFeatures: [],\n polygonFeatures: [],\n polygonOutlineFeatures: []\n };\n const {\n startRow = 0,\n endRow = features.length\n } = dataRange;\n\n for (let featureIndex = startRow; featureIndex < endRow; featureIndex++) {\n const feature = features[featureIndex];\n const {\n geometry\n } = feature;\n\n if (!geometry) {\n continue;\n }\n\n if (geometry.type === 'GeometryCollection') {\n log.assert(Array.isArray(geometry.geometries), 'GeoJSON does not have geometries array');\n const {\n geometries\n } = geometry;\n\n for (let i = 0; i < geometries.length; i++) {\n const subGeometry = geometries[i];\n separateGeometry(subGeometry, separated, wrapFeature, feature, featureIndex);\n }\n } else {\n separateGeometry(geometry, separated, wrapFeature, feature, featureIndex);\n }\n }\n\n return separated;\n}\n\nfunction separateGeometry(geometry, separated, wrapFeature, sourceFeature, sourceFeatureIndex) {\n const {\n type,\n coordinates\n } = geometry;\n const {\n pointFeatures,\n lineFeatures,\n polygonFeatures,\n polygonOutlineFeatures\n } = separated;\n\n if (!validateGeometry(type, coordinates)) {\n log.warn(\"\".concat(type, \" coordinates are malformed\"))();\n return;\n }\n\n switch (type) {\n case 'Point':\n pointFeatures.push(wrapFeature({\n geometry\n }, sourceFeature, sourceFeatureIndex));\n break;\n\n case 'MultiPoint':\n coordinates.forEach(point => {\n pointFeatures.push(wrapFeature({\n geometry: {\n type: 'Point',\n coordinates: point\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n\n case 'LineString':\n lineFeatures.push(wrapFeature({\n geometry\n }, sourceFeature, sourceFeatureIndex));\n break;\n\n case 'MultiLineString':\n coordinates.forEach(path => {\n lineFeatures.push(wrapFeature({\n geometry: {\n type: 'LineString',\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n\n case 'Polygon':\n polygonFeatures.push(wrapFeature({\n geometry\n }, sourceFeature, sourceFeatureIndex));\n coordinates.forEach(path => {\n polygonOutlineFeatures.push(wrapFeature({\n geometry: {\n type: 'LineString',\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n\n case 'MultiPolygon':\n coordinates.forEach(polygon => {\n polygonFeatures.push(wrapFeature({\n geometry: {\n type: 'Polygon',\n coordinates: polygon\n }\n }, sourceFeature, sourceFeatureIndex));\n polygon.forEach(path => {\n polygonOutlineFeatures.push(wrapFeature({\n geometry: {\n type: 'LineString',\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n });\n break;\n\n default:\n }\n}\n\nconst COORDINATE_NEST_LEVEL = {\n Point: 1,\n MultiPoint: 2,\n LineString: 2,\n MultiLineString: 3,\n Polygon: 3,\n MultiPolygon: 4\n};\nexport function validateGeometry(type, coordinates) {\n let nestLevel = COORDINATE_NEST_LEVEL[type];\n log.assert(nestLevel, \"Unknown GeoJSON type \".concat(type));\n\n while (coordinates && --nestLevel > 0) {\n coordinates = coordinates[0];\n }\n\n return coordinates && Number.isFinite(coordinates[0]);\n}\n//# sourceMappingURL=geojson.js.map","import { calculatePickingColors } from './geojson-binary';\n\nfunction createEmptyLayerProps() {\n return {\n points: {},\n lines: {},\n polygons: {},\n polygonsOutline: {}\n };\n}\n\nfunction getCoordinates(f) {\n return f.geometry.coordinates;\n}\n\nexport function createLayerPropsFromFeatures(features, featuresDiff) {\n const layerProps = createEmptyLayerProps();\n const {\n pointFeatures,\n lineFeatures,\n polygonFeatures,\n polygonOutlineFeatures\n } = features;\n layerProps.points.data = pointFeatures;\n\n layerProps.points._dataDiff = featuresDiff.pointFeatures && (() => featuresDiff.pointFeatures);\n\n layerProps.points.getPosition = getCoordinates;\n layerProps.lines.data = lineFeatures;\n\n layerProps.lines._dataDiff = featuresDiff.lineFeatures && (() => featuresDiff.lineFeatures);\n\n layerProps.lines.getPath = getCoordinates;\n layerProps.polygons.data = polygonFeatures;\n\n layerProps.polygons._dataDiff = featuresDiff.polygonFeatures && (() => featuresDiff.polygonFeatures);\n\n layerProps.polygons.getPolygon = getCoordinates;\n layerProps.polygonsOutline.data = polygonOutlineFeatures;\n\n layerProps.polygonsOutline._dataDiff = featuresDiff.polygonOutlineFeatures && (() => featuresDiff.polygonOutlineFeatures);\n\n layerProps.polygonsOutline.getPath = getCoordinates;\n return layerProps;\n}\nexport function createLayerPropsFromBinary(geojsonBinary, encodePickingColor) {\n const layerProps = createEmptyLayerProps();\n const {\n points,\n lines,\n polygons\n } = geojsonBinary;\n const customPickingColors = calculatePickingColors(geojsonBinary, encodePickingColor);\n layerProps.points.data = {\n length: points.positions.value.length / points.positions.size,\n attributes: { ...points.attributes,\n getPosition: points.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.points\n }\n },\n properties: points.properties,\n numericProps: points.numericProps,\n featureIds: points.featureIds\n };\n layerProps.lines.data = {\n length: lines.pathIndices.value.length - 1,\n startIndices: lines.pathIndices.value,\n attributes: { ...lines.attributes,\n getPath: lines.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.lines\n }\n },\n properties: lines.properties,\n numericProps: lines.numericProps,\n featureIds: lines.featureIds\n };\n layerProps.lines._pathType = 'open';\n layerProps.polygons.data = {\n length: polygons.polygonIndices.value.length - 1,\n startIndices: polygons.polygonIndices.value,\n attributes: { ...polygons.attributes,\n getPolygon: polygons.positions,\n pickingColors: {\n size: 3,\n value: customPickingColors.polygons\n }\n },\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n };\n layerProps.polygons._normalize = false;\n\n if (polygons.triangles) {\n layerProps.polygons.data.attributes.indices = polygons.triangles.value;\n }\n\n layerProps.polygonsOutline.data = {\n length: polygons.primitivePolygonIndices.value.length - 1,\n startIndices: polygons.primitivePolygonIndices.value,\n attributes: { ...polygons.attributes,\n getPath: polygons.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.polygons\n }\n },\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n };\n layerProps.polygonsOutline._pathType = 'open';\n return layerProps;\n}\n//# sourceMappingURL=geojson-layer-props.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer } from '@deck.gl/core';\nimport { replaceInRange } from '../utils';\nimport { binaryToFeatureForAccesor } from './geojson-binary';\nimport { POINT_LAYER, LINE_LAYER, POLYGON_LAYER, getDefaultProps, forwardProps } from './sub-layer-map';\nimport { getGeojsonFeatures, separateGeojsonFeatures } from './geojson';\nimport { createLayerPropsFromFeatures, createLayerPropsFromBinary } from './geojson-layer-props';\nconst FEATURE_TYPES = ['points', 'linestrings', 'polygons'];\nconst defaultProps = { ...getDefaultProps(POINT_LAYER.circle),\n ...getDefaultProps(POINT_LAYER.icon),\n ...getDefaultProps(POINT_LAYER.text),\n ...getDefaultProps(LINE_LAYER),\n ...getDefaultProps(POLYGON_LAYER),\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n _full3d: false,\n iconAtlas: {\n type: 'object',\n value: null\n },\n iconMapping: {\n type: 'object',\n value: {}\n },\n getIcon: {\n type: 'accessor',\n value: f => f.properties.icon\n },\n getText: {\n type: 'accessor',\n value: f => f.properties.text\n },\n pointType: 'circle',\n getRadius: {\n deprecatedFor: 'getPointRadius'\n }\n};\nexport default class GeoJsonLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n layerProps: {},\n features: {}\n };\n }\n\n updateState({\n props,\n changeFlags\n }) {\n if (!changeFlags.dataChanged) {\n return;\n }\n\n const {\n data\n } = this.props;\n const binary = data && 'points' in data && 'polygons' in data && 'lines' in data;\n this.setState({\n binary\n });\n\n if (binary) {\n this._updateStateBinary({\n props,\n changeFlags\n });\n } else {\n this._updateStateJSON({\n props,\n changeFlags\n });\n }\n }\n\n _updateStateBinary({\n props,\n changeFlags\n }) {\n const layerProps = createLayerPropsFromBinary(props.data, this.encodePickingColor);\n this.setState({\n layerProps\n });\n }\n\n _updateStateJSON({\n props,\n changeFlags\n }) {\n const features = getGeojsonFeatures(props.data);\n const wrapFeature = this.getSubLayerRow.bind(this);\n let newFeatures = {};\n const featuresDiff = {};\n\n if (Array.isArray(changeFlags.dataChanged)) {\n const oldFeatures = this.state.features;\n\n for (const key in oldFeatures) {\n newFeatures[key] = oldFeatures[key].slice();\n featuresDiff[key] = [];\n }\n\n for (const dataRange of changeFlags.dataChanged) {\n const partialFeatures = separateGeojsonFeatures(features, wrapFeature, dataRange);\n\n for (const key in oldFeatures) {\n featuresDiff[key].push(replaceInRange({\n data: newFeatures[key],\n getIndex: f => f.__source.index,\n dataRange,\n replace: partialFeatures[key]\n }));\n }\n }\n } else {\n newFeatures = separateGeojsonFeatures(features, wrapFeature);\n }\n\n const layerProps = createLayerPropsFromFeatures(newFeatures, featuresDiff);\n this.setState({\n features: newFeatures,\n featuresDiff,\n layerProps\n });\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const {\n index,\n sourceLayer\n } = info;\n info.featureType = FEATURE_TYPES.find(ft => sourceLayer.id.startsWith(\"\".concat(this.id, \"-\").concat(ft, \"-\")));\n\n if (index >= 0 && sourceLayer.id.startsWith(\"\".concat(this.id, \"-points-text\")) && this.state.binary) {\n info.index = this.props.data.points.globalFeatureIds.value[index];\n }\n\n return info;\n }\n\n _updateAutoHighlight(info) {\n const pointLayerIdPrefix = \"\".concat(this.id, \"-points-\");\n const sourceIsPoints = info.featureType === 'points';\n\n for (const layer of this.getSubLayers()) {\n if (layer.id.startsWith(pointLayerIdPrefix) === sourceIsPoints) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n _renderPolygonLayer() {\n const {\n extruded,\n wireframe\n } = this.props;\n const {\n layerProps\n } = this.state;\n const id = 'polygons-fill';\n const PolygonFillLayer = this.shouldRenderSubLayer(id, layerProps.polygons.data) && this.getSubLayerClass(id, POLYGON_LAYER.type);\n\n if (PolygonFillLayer) {\n const forwardedProps = forwardProps(this, POLYGON_LAYER.props);\n const useLineColor = extruded && wireframe;\n\n if (!useLineColor) {\n delete forwardedProps.getLineColor;\n }\n\n forwardedProps.updateTriggers.lineColors = useLineColor;\n return new PolygonFillLayer(forwardedProps, this.getSubLayerProps({\n id,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.polygons);\n }\n\n return null;\n }\n\n _renderLineLayers() {\n const {\n extruded,\n stroked\n } = this.props;\n const {\n layerProps\n } = this.state;\n const polygonStrokeLayerId = 'polygons-stroke';\n const lineStringsLayerId = 'linestrings';\n const PolygonStrokeLayer = !extruded && stroked && this.shouldRenderSubLayer(polygonStrokeLayerId, layerProps.polygonsOutline.data) && this.getSubLayerClass(polygonStrokeLayerId, LINE_LAYER.type);\n const LineStringsLayer = this.shouldRenderSubLayer(lineStringsLayerId, layerProps.lines.data) && this.getSubLayerClass(lineStringsLayerId, LINE_LAYER.type);\n\n if (PolygonStrokeLayer || LineStringsLayer) {\n const forwardedProps = forwardProps(this, LINE_LAYER.props);\n return [PolygonStrokeLayer && new PolygonStrokeLayer(forwardedProps, this.getSubLayerProps({\n id: polygonStrokeLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.polygonsOutline), LineStringsLayer && new LineStringsLayer(forwardedProps, this.getSubLayerProps({\n id: lineStringsLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.lines)];\n }\n\n return null;\n }\n\n _renderPointLayers() {\n const {\n pointType\n } = this.props;\n const {\n layerProps,\n binary\n } = this.state;\n let {\n highlightedObjectIndex\n } = this.props;\n\n if (!binary && Number.isFinite(highlightedObjectIndex)) {\n highlightedObjectIndex = layerProps.points.data.findIndex(d => d.__source.index === highlightedObjectIndex);\n }\n\n const types = new Set(pointType.split('+'));\n const pointLayers = [];\n\n for (const type of types) {\n const id = \"points-\".concat(type);\n const PointLayerMapping = POINT_LAYER[type];\n const PointsLayer = PointLayerMapping && this.shouldRenderSubLayer(id, layerProps.points.data) && this.getSubLayerClass(id, PointLayerMapping.type);\n\n if (PointsLayer) {\n const forwardedProps = forwardProps(this, PointLayerMapping.props);\n let pointsLayerProps = layerProps.points;\n\n if (type === 'text' && binary) {\n const {\n instancePickingColors,\n ...rest\n } = pointsLayerProps.data.attributes;\n pointsLayerProps = { ...pointsLayerProps,\n data: { ...pointsLayerProps.data,\n attributes: rest\n }\n };\n }\n\n pointLayers.push(new PointsLayer(forwardedProps, this.getSubLayerProps({\n id,\n updateTriggers: forwardedProps.updateTriggers,\n highlightedObjectIndex\n }), pointsLayerProps));\n }\n }\n\n return pointLayers;\n }\n\n renderLayers() {\n const {\n extruded\n } = this.props;\n\n const polygonFillLayer = this._renderPolygonLayer();\n\n const lineLayers = this._renderLineLayers();\n\n const pointLayers = this._renderPointLayers();\n\n return [!extruded && polygonFillLayer, lineLayers, pointLayers, extruded && polygonFillLayer];\n }\n\n getSubLayerAccessor(accessor) {\n const {\n binary\n } = this.state;\n\n if (!binary || typeof accessor !== 'function') {\n return super.getSubLayerAccessor(accessor);\n }\n\n return (object, info) => {\n const {\n data,\n index\n } = info;\n const feature = binaryToFeatureForAccesor(data, index);\n return accessor(feature, info);\n };\n }\n\n}\n\n_defineProperty(GeoJsonLayer, \"layerName\", 'GeoJsonLayer');\n\n_defineProperty(GeoJsonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=geojson-layer.js.map","(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n \"use strict\";\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n var sparkMd5 = createCommonjsModule(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })(function(undefined) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n });\n });\n var classCallCheck = function(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n var FileChecksum = function() {\n createClass(FileChecksum, null, [ {\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n } ]);\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n createClass(FileChecksum, [ {\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function(event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function(event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n } ]);\n return FileChecksum;\n }();\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n var BlobRecord = function() {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type,\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n this.xhr.setRequestHeader(\"X-CSRF-Token\", getMetaValue(\"csrf-token\"));\n this.xhr.addEventListener(\"load\", function(event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function(event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobRecord, [ {\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n } ]);\n return BlobRecord;\n }();\n var BlobUpload = function() {\n function BlobUpload(blob) {\n var _this = this;\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", function(event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function(event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobUpload, [ {\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n } ]);\n return BlobUpload;\n }();\n var id = 0;\n var DirectUpload = function() {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n createClass(DirectUpload, [ {\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n FileChecksum.create(this.file, function(error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function(error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function(error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n } ]);\n return DirectUpload;\n }();\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n return object[methodName].apply(object, messages);\n }\n }\n var DirectUploadController = function() {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n createClass(DirectUploadController, [ {\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function(error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n _this.dispatch(\"end\");\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function(event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n } ]);\n return DirectUploadController;\n }();\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n var DirectUploadsController = function() {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function(input) {\n return input.files.length;\n });\n }\n createClass(DirectUploadsController, [ {\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var controllers = this.createDirectUploadControllers();\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n if (controller) {\n controller.start(function(error) {\n if (error) {\n callback(error);\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n _this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function(input) {\n toArray$1(input.files).forEach(function(file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n } ]);\n return DirectUploadsController;\n }();\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n var target = event.target;\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function(error) {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n var _button = button, disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});\n","/* eslint-disable no-prototype-builtins */\nvar g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {}\n\nvar support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type)\n var encoding = match ? match[1] : 'utf-8'\n reader.readAsText(blob, encoding)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._noBody = true;\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n try {\n headers.append(key, value)\n } catch (error) {\n console.warn('Response ' + error.message)\n }\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 200, statusText: ''})\n response.status = 0\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = g.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.startsWith('file://') && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name))\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value)\n }\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!g.fetch) {\n g.fetch = fetch\n g.Headers = Headers\n g.Request = Request\n g.Response = Response\n}\n","// Primative pluralize function only menat to support our minimal use-case\nconst pluralize = (word: string, count: number): string => {\n if (count === 1) {\n return word\n } else {\n if (word.endsWith('y')) {\n return `${word.slice(0, -1)}ies`\n } else {\n return `${word}s`\n }\n }\n}\n\nexport { pluralize }\n","import * as API from '../../../lib/types/api'\nimport { customerPath } from '../../lib/constants'\nimport { localFetch } from '../../lib/local_fetch'\n\nclass Customer {\n public static async fetch(): Promise {\n const response = await localFetch(customerPath, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n })\n const json = await response.json()\n\n return new Customer(json)\n }\n\n public id: number\n public name: string\n public hasStoredCard: boolean\n public storedCardInfo: {\n brand?: string,\n expireMonth?: number,\n expireYear?: number,\n lastFour?: string,\n }\n public creditBalances: {\n creditCurrencyKey: string,\n creditCurrencyName: string,\n balance: number,\n }[]\n\n constructor(api: API.ICustomer) {\n this.id = api.id\n this.name = api.name\n this.creditBalances = []\n\n this.hasStoredCard = api.has_stored_card\n this.storedCardInfo = {\n brand: api.stored_card_info.brand,\n expireMonth: api.stored_card_info.expire_month,\n expireYear: api.stored_card_info.expire_year,\n lastFour: api.stored_card_info.last_four,\n }\n\n api.credit_balances.forEach((balance) => {\n this.creditBalances.push({\n creditCurrencyKey: balance.credit_currency_key,\n creditCurrencyName: balance.credit_currency_name,\n balance: balance.balance,\n })\n })\n }\n\n public hasSufficientCredits(currency: API.CreditCurrencyTypes, amount: number): boolean {\n return this.balanceFor(currency) >= amount\n }\n\n public balanceFor(currency: API.CreditCurrencyTypes): number {\n const balance = this.creditBalances\n .find((b) => b.creditCurrencyKey == currency) || { balance: 0 }\n\n return balance.balance\n }\n}\n\nexport { Customer }\n","import * as API from '../../../lib/types/api'\nimport { historyReportShowPath } from '../../lib/constants'\nimport { localFetch } from '../../lib/local_fetch'\n\ninterface IProcessRowErrors {\n [index: string]: string[]\n}\ninterface IProcessErrors {\n rows: IProcessRowErrors\n}\ninterface IUser {\n id: number\n email: string\n firstName: string\n lastName: string\n}\n\ninterface ICreditPrice {\n value: number\n creditCurrencyKey: API.CreditCurrencyTypes\n creditCurrencyName: string\n}\n\ninterface IHistoryReportWithRequiredCost extends HistoryReport {\n creditPrice: ICreditPrice\n}\n\nclass HistoryReport {\n public static readonly VALIDATING_STATES = ['pending', 'validating']\n public static readonly WORKING_STATES = ['charged', 'processing']\n public static readonly WAITING_STATES = ['validated']\n public static readonly COMPLETE_STATES = ['complete']\n public static readonly FAILED_STATES = ['failed']\n\n public static async fetch(id: number, { withLocations = false } = {}): Promise {\n const response = await localFetch(historyReportShowPath(id, withLocations), {\n headers: {\n Accept: 'application/json',\n },\n })\n const json = await response.json()\n\n return new HistoryReport(json)\n }\n\n public id: number\n public state: API.HistoryReportStatesType\n public requestedBy: IUser\n public processErrors: IProcessErrors\n public packageFileLink: string\n public creditPrice?: ICreditPrice\n public locationCount: number\n public eventCount: number\n public createdAt: Date\n public updatedAt: Date\n\n constructor(api: API.IHistoryReport) {\n this.id = api.id\n this.state = api.state\n this.requestedBy = {\n id: api.requested_by.id,\n email: api.requested_by.email,\n firstName: api.requested_by.first_name,\n lastName: api.requested_by.last_name,\n }\n this.packageFileLink = api._links.package_file\n this.processErrors = this.buildProcessErrors(api.process_errors)\n if (api.credit_price) {\n this.creditPrice = {\n value: api.credit_price.value,\n creditCurrencyKey: api.credit_price.credit_currency_key,\n creditCurrencyName: api.credit_price.credit_currency_name,\n }\n }\n this.locationCount = api.location_count\n this.eventCount = api.event_count\n this.createdAt = new Date(api.created_at)\n this.updatedAt = new Date(api.updated_at)\n }\n\n public withRequiredCreditPrice(): IHistoryReportWithRequiredCost {\n if (this.creditPrice != null) {\n return this as IHistoryReportWithRequiredCost\n } else {\n throw new Error('HistoryReport has null credit fields!')\n }\n }\n\n public isValidating(): boolean {\n return HistoryReport.VALIDATING_STATES.indexOf(this.state) >= 0\n }\n\n public waitingForConfirmation(): boolean {\n return this.stateMatches(HistoryReport.WAITING_STATES)\n }\n\n public isFailed(): boolean {\n return this.stateMatches(HistoryReport.FAILED_STATES)\n }\n\n public isWorking(): boolean {\n return this.stateMatches(HistoryReport.WORKING_STATES)\n }\n\n public hasErrors(): boolean {\n return Object.keys(this.processErrors.rows).length > 0\n }\n\n private buildProcessErrors(errors: API.IHistoryReportProcessErrors): IProcessErrors {\n return { rows: errors.rows || {} }\n }\n\n private stateMatches(states: string[]) {\n return states.indexOf(this.state) >= 0\n }\n}\n\nexport { HistoryReport, IProcessRowErrors, IHistoryReportWithRequiredCost }\n","import gtag from 'gtag'\nimport * as API from '../../../lib/types/api'\nimport { creditPurchasePath, newCreditPurchasePath } from '../../lib/constants'\nimport { localFetch } from '../../lib/local_fetch'\n\ninterface IMoney {\n cents: number\n localized: string\n}\n\nconst priceStringFormatter = new Intl.NumberFormat('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n})\n\nclass CreditPurchase {\n public static async buildNew(\n creditCurrencyKey: string, creditValue: number, couponCode?: string,\n ): Promise {\n const url = this.buildRequestURL(newCreditPurchasePath, creditCurrencyKey, creditValue, couponCode)\n\n const response = await localFetch(url, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n })\n const json = await response.json()\n\n return new CreditPurchase(json)\n }\n\n private static buildRequestURL(\n url: string, creditCurrencyKey: string, creditValue: number, couponCode?: string,\n ): string {\n const mappedData: { [name: string]: string } = {\n 'credit_purchase[currency_key]': creditCurrencyKey,\n 'credit_purchase[value]': creditValue.toString(),\n 'credit_purchase[coupon_code]': couponCode || '',\n }\n const queryString = Object.keys(mappedData).map((key) => (\n `${encodeURIComponent(key)}=${encodeURIComponent(mappedData[key])}`\n )).join('&')\n\n return `${url}?${queryString}`\n }\n\n public creditValue: number\n public creditCurrencyKey: string\n public creditCurrencyName: string\n public unitUSDPrice: IMoney\n public subtotalUSDPrice: IMoney\n public discountUSDPrice: IMoney\n public totalUSDPrice: IMoney\n public order: {\n id?: number,\n price?: IMoney,\n paid?: boolean,\n error?: string,\n }\n public coupon: {\n code: string,\n isValid: boolean,\n error: string | null,\n }\n\n constructor(api: API.ICreditPurchase) {\n this.creditValue = api.credit_value\n this.creditCurrencyKey = api.credit_currency_key\n this.creditCurrencyName = api.credit_currency_name\n this.unitUSDPrice = api.unit_usd_price\n this.subtotalUSDPrice = api.subtotal_usd_price\n this.discountUSDPrice = api.discount_usd_price\n this.totalUSDPrice = api.total_usd_price\n this.order = {\n id: api.order.id,\n price: api.order.price,\n paid: api.order.paid,\n error: api.order.error,\n }\n this.coupon = {\n code: api.coupon.code,\n isValid: api.coupon.is_valid,\n error: api.coupon.error,\n }\n }\n\n public async purchase() {\n const url = CreditPurchase.buildRequestURL(\n creditPurchasePath,\n this.creditCurrencyKey,\n this.creditValue,\n this.coupon.isValid ? this.coupon.code : undefined,\n )\n\n const response = await localFetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n })\n const json = await response.json()\n const purchase = new CreditPurchase(json)\n const price = purchase.order.price\n\n try {\n if (price) {\n gtag('event', 'purchase', {\n transaction_id: (purchase.order.id || '').toString(),\n affiliation: 'vivian',\n value: this.formatGooglePrice(price.cents / 100),\n currency: 'USD',\n })\n }\n } catch (e) {\n console.log('Unable to log purchase to GA')\n console.error(e)\n }\n\n return purchase\n }\n\n private formatGooglePrice(dollars: number): string {\n return priceStringFormatter.format(dollars)\n }\n}\n\nexport { CreditPurchase }\n","import * as React from 'react'\nimport { CreditPurchase } from '../../lib/credit_purchase'\n\ninterface IProps {\n creditPurchase: CreditPurchase\n handleCouponCodeEntered: (couponCode: string) => void\n handleCancel: () => void\n}\n\ninterface IState {\n couponCode: string\n}\n\nexport class CouponForm extends React.Component {\n public constructor(props: IProps) {\n super(props)\n\n this.state = {\n couponCode: props.creditPurchase.coupon.code,\n }\n }\n\n public handleCouponCodeChange = async (event: React.ChangeEvent) => {\n const newCode = event.target.value\n\n this.setState({ couponCode: newCode })\n }\n\n public handleCouponCodeEntered = async () => {\n const { handleCouponCodeEntered } = this.props\n const { couponCode } = this.state\n\n handleCouponCodeEntered(couponCode)\n }\n\n public handleCancel = async () => {\n const { handleCancel } = this.props\n\n handleCancel()\n }\n\n public renderError() {\n const { creditPurchase } = this.props\n const { error, code: currentCode } = creditPurchase.coupon\n if (!error || !currentCode) { return }\n\n return (\n
\n
\n {error}\n
\n
\n )\n }\n\n public render() {\n const { couponCode } = this.state\n\n return (\n
\n
\n
\n \n
\n
\n \n Apply Promo Code\n \n {' '}\n \n Cancel\n \n
\n
\n\n {this.renderError()}\n
\n )\n }\n}\n","import * as React from 'react'\n\nimport { CreditPurchase } from '../../lib/credit_purchase'\n\ninterface IProps {\n creditPurchase: CreditPurchase\n}\n\nexport class OrderDetails extends React.Component {\n public render() {\n const { creditPurchase } = this.props\n\n if (creditPurchase.discountUSDPrice.cents === 0) { return null }\n\n return (\n
\n \n {creditPurchase.subtotalUSDPrice.localized}{' '}\n - {creditPurchase.discountUSDPrice.localized} (promotion){' '}\n = {creditPurchase.totalUSDPrice.localized}\n \n
\n )\n }\n}\n","import { pluralize } from '../../../lib/pluralize'\nimport * as React from 'react'\n\nimport { CreditPurchase } from '../../lib/credit_purchase'\nimport { Customer } from '../../lib/customer'\nimport { CouponForm } from './CouponForm'\nimport { OrderDetails } from './OrderDetails'\n\ninterface IProps {\n creditBalance: Customer['creditBalances'][0]\n handlePurchase: () => void\n handleCanceled?: () => void\n includeBalance: boolean\n purchaseQuantity: number\n creditPurchase: CreditPurchase\n couponCode?: string\n handleChangeQuantity: (quantity: number) => void\n handleChangeCouponCode: (couponCode: string) => void\n}\n\ninterface IState {\n showConfirmation: boolean\n showCouponForm: boolean\n purchasing: boolean\n}\n\nexport class Form extends React.Component {\n constructor(props: IProps) {\n super(props)\n\n this.state = {\n showConfirmation: false,\n purchasing: false,\n showCouponForm: false,\n }\n }\n\n public handleQuantityChange = (event: React.ChangeEvent) => {\n const { handleChangeQuantity } = this.props\n\n handleChangeQuantity(parseInt(event.target.value, 10) || 0)\n }\n\n public handleConfirmPurchase = async () => {\n const { handlePurchase } = this.props\n\n this.setState({ purchasing: true })\n\n await handlePurchase()\n\n this.setState({ purchasing: false })\n }\n\n public toggleConfirmation = () => {\n this.setState((prevState) => ({ showConfirmation: !prevState.showConfirmation }))\n }\n\n public handleCancel = () => {\n const { handleCanceled } = this.props\n\n if (handleCanceled) {\n handleCanceled()\n }\n }\n\n public toggleCouponForm = (event?: React.SyntheticEvent) => {\n if (event) { event.preventDefault() }\n\n this.setState((prevState) => ({ showCouponForm: !prevState.showCouponForm }))\n }\n\n public handleCouponCodeEntered = async (couponCode: string) => {\n const { handleChangeCouponCode } = this.props\n\n await handleChangeCouponCode(couponCode)\n\n const { creditPurchase } = this.props\n if (creditPurchase && creditPurchase.coupon.isValid) {\n this.toggleCouponForm()\n }\n }\n\n public renderConfirmation(creditPurchase: CreditPurchase) {\n const { purchaseQuantity } = this.props\n const { purchasing } = this.state\n\n return (\n
\n \n Purchase {purchaseQuantity} {this.pluralizedCreditName(purchaseQuantity)} for{' '}\n {creditPurchase.totalUSDPrice.localized}\n \n {' '}\n \n\n \n
\n )\n }\n\n public renderContinue() {\n const { handleCanceled } = this.props\n\n return (\n
\n \n Continue\n \n {' '}\n \n Cancel\n \n
\n )\n }\n\n public renderBalance() {\n const { creditBalance } = this.props\n\n return (\n
\n You currently have {creditBalance.balance}{' '}\n {this.pluralizedCreditName(creditBalance.balance)}.\n
\n )\n }\n\n public renderCouponForm() {\n const { creditPurchase } = this.props\n\n return (\n
\n \n
\n )\n }\n\n public renderCouponCode() {\n const { couponCode, creditPurchase} = this.props\n\n if (couponCode && creditPurchase.coupon.isValid) {\n return (\n
\n Using Promo Code \"{couponCode}\"{' '}\n\n \n Change?\n \n
\n )\n } else {\n return (\n \n Have a Promo Code?\n \n )\n }\n }\n\n public renderError() {\n const { creditPurchase } = this.props\n const { error } = creditPurchase.order\n if (!error) { return }\n\n return (\n
\n {error}\n
\n )\n }\n\n public render() {\n const { purchaseQuantity, creditPurchase, includeBalance } = this.props\n const { showCouponForm, showConfirmation } = this.state\n\n return (\n
\n {includeBalance ? this.renderBalance() : ''}\n\n
\n
\n \n
\n\n
\n \n {this.renderError()}\n {this.renderCouponCode()}\n
\n\n
\n {showConfirmation ? this.renderConfirmation(creditPurchase) : this.renderContinue()}\n
\n
\n\n {showCouponForm ? this.renderCouponForm() : ''}\n
\n )\n }\n\n private pluralizedCreditName(count: number): string {\n const { creditBalance } = this.props\n\n return pluralize(creditBalance.creditCurrencyName, count)\n }\n}\n","import * as React from 'react'\n\nimport { CreditPurchase } from '../../lib/credit_purchase'\nimport { Customer } from '../../lib/customer'\nimport { Form } from './Form'\n\ninterface IProps {\n creditBalance: Customer['creditBalances'][0]\n handlePurchased: () => void\n handleCanceled?: () => void\n defaultPurchaseQuantity: number\n includeBalance: boolean\n couponCode?: string\n}\n\ninterface IState {\n previousDefaultPurchaseQuantity: number\n purchaseQuantity: number\n creditPurchase?: CreditPurchase\n couponCode?: string\n}\n\nexport class DataManager extends React.Component {\n public static defaultProps: Partial = {\n defaultPurchaseQuantity: 5,\n includeBalance: true,\n }\n\n public static getDerivedStateFromProps(nextProps: Readonly, prevState: IState): Partial | null {\n if (prevState.previousDefaultPurchaseQuantity !== nextProps.defaultPurchaseQuantity) {\n return {\n previousDefaultPurchaseQuantity: nextProps.defaultPurchaseQuantity,\n purchaseQuantity: nextProps.defaultPurchaseQuantity,\n }\n } else {\n return null\n }\n }\n\n constructor(props: IProps) {\n super(props)\n\n this.state = {\n previousDefaultPurchaseQuantity: props.defaultPurchaseQuantity,\n purchaseQuantity: props.defaultPurchaseQuantity,\n couponCode: props.couponCode,\n }\n }\n\n public componentDidMount() {\n this.fetchCreditPurchaseData()\n }\n\n public handleChangeQuantity = async (purchaseQuantity: number) => {\n await this.setState({ purchaseQuantity })\n await this.fetchCreditPurchaseData()\n }\n\n public handleChangeCouponCode = async (couponCode: string) => {\n await this.setState({ couponCode })\n await this.fetchCreditPurchaseData()\n }\n\n public fetchCreditPurchaseData = async () => {\n const { creditBalance } = this.props\n const { purchaseQuantity, couponCode } = this.state\n const creditPurchase = await CreditPurchase.buildNew(\n creditBalance.creditCurrencyKey,\n purchaseQuantity,\n couponCode,\n )\n\n this.setState({ creditPurchase })\n }\n\n public handlePurchase = async () => {\n const { handlePurchased } = this.props\n const { creditPurchase } = this.state\n\n if (!creditPurchase) { throw new Error('Cannot confirm undefined creditPurchase!') }\n\n const purchase = await creditPurchase.purchase()\n\n if (purchase.order.paid) {\n handlePurchased()\n }\n }\n\n public handleCancelConfirmPurchase = () => {\n this.setState({ creditPurchase: undefined })\n }\n\n public handleCancel = () => {\n const { handleCanceled } = this.props\n\n if (handleCanceled) {\n handleCanceled()\n }\n }\n\n public render() {\n const {\n creditBalance,\n handleCanceled,\n includeBalance,\n } = this.props\n const {\n purchaseQuantity,\n couponCode,\n creditPurchase,\n } = this.state\n\n if (!creditPurchase) { return 'Loading...' }\n\n return (\n \n )\n }\n}\n","import * as React from 'react'\n\nimport { Customer } from '../lib/customer'\nimport { CreditPurchaseForm } from './CreditPurchaseForm'\n\ninterface IProps {\n couponCode?: string\n}\n\ninterface IState {\n customer?: Customer\n showPurchaseCreditForm?: Customer['creditBalances'][0]\n}\n\nclass CreditBalances extends React.Component {\n public constructor(props: IProps) {\n super(props)\n\n this.state = {}\n }\n public componentDidMount() {\n this.fetchCustomer()\n }\n\n public handleCanceled = () => {\n this.clearForm()\n }\n\n public handlePurchased = async () => {\n this.clearForm()\n this.fetchCustomer()\n }\n\n public renderCredits() {\n const { customer } = this.state\n\n if (!customer) {\n return
\n }\n\n return customer.creditBalances.map((balance) => (\n
\n {balance.creditCurrencyName}: {balance.balance}\n {customer.hasStoredCard ? (\n \n Purchase More Credits\n \n ) : (\n
Please add your billing information below to purchase credits.
\n )}\n
\n ))\n }\n\n public render() {\n const { couponCode } = this.props\n const { customer, showPurchaseCreditForm } = this.state\n\n if (showPurchaseCreditForm) {\n return (\n \n )\n } else if (customer) {\n return this.renderCredits()\n } else {\n return
Loading...
\n }\n }\n\n private handlePurchaseCredits(balance: Customer['creditBalances'][0]) {\n this.setState({\n showPurchaseCreditForm: balance,\n })\n }\n\n private async fetchCustomer() {\n const customer = await Customer.fetch()\n\n this.setState({ customer })\n }\n\n private clearForm() {\n this.setState({\n showPurchaseCreditForm: undefined,\n })\n }\n}\n\nexport { CreditBalances }\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar usePrevious = function usePrevious(value) {\n var ref = React.useRef(value);\n React.useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\nvar isUnknownObject = function isUnknownObject(raw) {\n return raw !== null && _typeof(raw) === 'object';\n};\nvar isPromise = function isPromise(raw) {\n return isUnknownObject(raw) && typeof raw.then === 'function';\n}; // We are using types to enforce the `stripe` prop in this lib,\n// but in an untyped integration `stripe` could be anything, so we need\n// to do some sanity validation to prevent type errors.\n\nvar isStripe = function isStripe(raw) {\n return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n};\n\nvar PLAIN_OBJECT_STR = '[object Object]';\nvar isEqual = function isEqual(left, right) {\n if (!isUnknownObject(left) || !isUnknownObject(right)) {\n return left === right;\n }\n\n var leftArray = Array.isArray(left);\n var rightArray = Array.isArray(right);\n if (leftArray !== rightArray) return false;\n var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n if (leftPlainObject !== rightPlainObject) return false; // not sure what sort of special object this is (regexp is one option), so\n // fallback to reference check.\n\n if (!leftPlainObject && !leftArray) return left === right;\n var leftKeys = Object.keys(left);\n var rightKeys = Object.keys(right);\n if (leftKeys.length !== rightKeys.length) return false;\n var keySet = {};\n\n for (var i = 0; i < leftKeys.length; i += 1) {\n keySet[leftKeys[i]] = true;\n }\n\n for (var _i = 0; _i < rightKeys.length; _i += 1) {\n keySet[rightKeys[_i]] = true;\n }\n\n var allKeys = Object.keys(keySet);\n\n if (allKeys.length !== leftKeys.length) {\n return false;\n }\n\n var l = left;\n var r = right;\n\n var pred = function pred(key) {\n return isEqual(l[key], r[key]);\n };\n\n return allKeys.every(pred);\n};\n\nvar extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n if (!isUnknownObject(options)) {\n return null;\n }\n\n return Object.keys(options).reduce(function (newOptions, key) {\n var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n\n if (immutableKeys.includes(key)) {\n if (isUpdated) {\n console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n }\n\n return newOptions;\n }\n\n if (!isUpdated) {\n return newOptions;\n }\n\n return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n }, null);\n};\n\nvar INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n// integration `stripe` could be anything, so we need to do some sanity\n// validation to prevent type errors.\n\nvar validateStripe = function validateStripe(maybeStripe) {\n if (maybeStripe === null || isStripe(maybeStripe)) {\n return maybeStripe;\n }\n\n throw new Error(INVALID_STRIPE_ERROR);\n};\n\nvar parseStripeProp = function parseStripeProp(raw) {\n if (isPromise(raw)) {\n return {\n tag: 'async',\n stripePromise: Promise.resolve(raw).then(validateStripe)\n };\n }\n\n var stripe = validateStripe(raw);\n\n if (stripe === null) {\n return {\n tag: 'empty'\n };\n }\n\n return {\n tag: 'sync',\n stripe: stripe\n };\n};\n\nvar ElementsContext = /*#__PURE__*/React.createContext(null);\nElementsContext.displayName = 'ElementsContext';\nvar parseElementsContext = function parseElementsContext(ctx, useCase) {\n if (!ctx) {\n throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an provider.\"));\n }\n\n return ctx;\n};\nvar CartElementContext = /*#__PURE__*/React.createContext(null);\nCartElementContext.displayName = 'CartElementContext';\nvar parseCartElementContext = function parseCartElementContext(ctx, useCase) {\n if (!ctx) {\n throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an provider.\"));\n }\n\n return ctx;\n};\n/**\n * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n *\n * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n * Pass the returned `Promise` to `Elements`.\n *\n * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n */\n\nvar Elements = function Elements(_ref) {\n var rawStripeProp = _ref.stripe,\n options = _ref.options,\n children = _ref.children;\n var parsed = React.useMemo(function () {\n return parseStripeProp(rawStripeProp);\n }, [rawStripeProp]);\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n cart = _React$useState2[0],\n setCart = _React$useState2[1];\n\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n cartState = _React$useState4[0],\n setCartState = _React$useState4[1]; // For a sync stripe instance, initialize into context\n\n\n var _React$useState5 = React.useState(function () {\n return {\n stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n };\n }),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n ctx = _React$useState6[0],\n setContext = _React$useState6[1];\n\n React.useEffect(function () {\n var isMounted = true;\n\n var safeSetContext = function safeSetContext(stripe) {\n setContext(function (ctx) {\n // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n if (ctx.stripe) return ctx;\n return {\n stripe: stripe,\n elements: stripe.elements(options)\n };\n });\n }; // For an async stripePromise, store it in context once resolved\n\n\n if (parsed.tag === 'async' && !ctx.stripe) {\n parsed.stripePromise.then(function (stripe) {\n if (stripe && isMounted) {\n // Only update Elements context if the component is still mounted\n // and stripe is not null. We allow stripe to be null to make\n // handling SSR easier.\n safeSetContext(stripe);\n }\n });\n } else if (parsed.tag === 'sync' && !ctx.stripe) {\n // Or, handle a sync stripe instance going from null -> populated\n safeSetContext(parsed.stripe);\n }\n\n return function () {\n isMounted = false;\n };\n }, [parsed, ctx, options]); // Warn on changes to stripe prop\n\n var prevStripe = usePrevious(rawStripeProp);\n React.useEffect(function () {\n if (prevStripe !== null && prevStripe !== rawStripeProp) {\n console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n }\n }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (!ctx.elements) {\n return;\n }\n\n var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n\n if (updates) {\n ctx.elements.update(updates);\n }\n }, [options, prevOptions, ctx.elements]); // Attach react-stripe-js version to stripe.js instance\n\n React.useEffect(function () {\n var anyStripe = ctx.stripe;\n\n if (!anyStripe || !anyStripe._registerWrapper || !anyStripe.registerAppInfo) {\n return;\n }\n\n anyStripe._registerWrapper({\n name: 'react-stripe-js',\n version: \"1.16.5\"\n });\n\n anyStripe.registerAppInfo({\n name: 'react-stripe-js',\n version: \"1.16.5\",\n url: 'https://stripe.com/docs/stripe-js/react'\n });\n }, [ctx.stripe]);\n return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n value: ctx\n }, /*#__PURE__*/React.createElement(CartElementContext.Provider, {\n value: {\n cart: cart,\n setCart: setCart,\n cartState: cartState,\n setCartState: setCartState\n }\n }, children));\n};\nElements.propTypes = {\n stripe: PropTypes.any,\n options: PropTypes.object\n};\nvar useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n var ctx = React.useContext(ElementsContext);\n return parseElementsContext(ctx, useCaseMessage);\n};\nvar useCartElementContextWithUseCase = function useCartElementContextWithUseCase(useCaseMessage) {\n var ctx = React.useContext(CartElementContext);\n return parseCartElementContext(ctx, useCaseMessage);\n};\n/**\n * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n */\n\nvar useElements = function useElements() {\n var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n elements = _useElementsContextWi.elements;\n\n return elements;\n};\n/**\n * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n */\n\nvar useStripe = function useStripe() {\n var _useElementsContextWi2 = useElementsContextWithUseCase('calls useStripe()'),\n stripe = _useElementsContextWi2.stripe;\n\n return stripe;\n};\n/**\n * @docs https://stripe.com/docs/payments/checkout/cart-element\n */\n\nvar useCartElement = function useCartElement() {\n var _useCartElementContex = useCartElementContextWithUseCase('calls useCartElement()'),\n cart = _useCartElementContex.cart;\n\n return cart;\n};\n/**\n * @docs https://stripe.com/docs/payments/checkout/cart-element\n */\n\nvar useCartElementState = function useCartElementState() {\n var _useCartElementContex2 = useCartElementContextWithUseCase('calls useCartElementState()'),\n cartState = _useCartElementContex2.cartState;\n\n return cartState;\n};\n/**\n * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n */\n\nvar ElementsConsumer = function ElementsConsumer(_ref2) {\n var children = _ref2.children;\n var ctx = useElementsContextWithUseCase('mounts '); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n return children(ctx);\n};\nElementsConsumer.propTypes = {\n children: PropTypes.func.isRequired\n};\n\nvar useAttachEvent = function useAttachEvent(element, event, cb) {\n var cbDefined = !!cb;\n var cbRef = React.useRef(cb); // In many integrations the callback prop changes on each render.\n // Using a ref saves us from calling element.on/.off every render.\n\n React.useEffect(function () {\n cbRef.current = cb;\n }, [cb]);\n React.useEffect(function () {\n if (!cbDefined || !element) {\n return function () {};\n }\n\n var decoratedCb = function decoratedCb() {\n if (cbRef.current) {\n cbRef.current.apply(cbRef, arguments);\n }\n };\n\n element.on(event, decoratedCb);\n return function () {\n element.off(event, decoratedCb);\n };\n }, [cbDefined, event, element, cbRef]);\n};\n\nvar capitalized = function capitalized(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nvar createElementComponent = function createElementComponent(type, isServer) {\n var displayName = \"\".concat(capitalized(type), \"Element\");\n\n var ClientElement = function ClientElement(_ref) {\n var id = _ref.id,\n className = _ref.className,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n onBlur = _ref.onBlur,\n onFocus = _ref.onFocus,\n onReady = _ref.onReady,\n onChange = _ref.onChange,\n onEscape = _ref.onEscape,\n onClick = _ref.onClick,\n onLoadError = _ref.onLoadError,\n onLoaderStart = _ref.onLoaderStart,\n onNetworksChange = _ref.onNetworksChange,\n onCheckout = _ref.onCheckout,\n onLineItemClick = _ref.onLineItemClick,\n onConfirm = _ref.onConfirm,\n onCancel = _ref.onCancel,\n onShippingAddressChange = _ref.onShippingAddressChange,\n onShippingRateChange = _ref.onShippingRateChange;\n\n var _useElementsContextWi = useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n elements = _useElementsContextWi.elements;\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n element = _React$useState2[0],\n setElement = _React$useState2[1];\n\n var elementRef = React.useRef(null);\n var domNode = React.useRef(null);\n\n var _useCartElementContex = useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n setCart = _useCartElementContex.setCart,\n setCartState = _useCartElementContex.setCartState; // For every event where the merchant provides a callback, call element.on\n // with that callback. If the merchant ever changes the callback, removes\n // the old callback with element.off and then call element.on with the new one.\n\n\n useAttachEvent(element, 'blur', onBlur);\n useAttachEvent(element, 'focus', onFocus);\n useAttachEvent(element, 'escape', onEscape);\n useAttachEvent(element, 'click', onClick);\n useAttachEvent(element, 'loaderror', onLoadError);\n useAttachEvent(element, 'loaderstart', onLoaderStart);\n useAttachEvent(element, 'networkschange', onNetworksChange);\n useAttachEvent(element, 'lineitemclick', onLineItemClick);\n useAttachEvent(element, 'confirm', onConfirm);\n useAttachEvent(element, 'cancel', onCancel);\n useAttachEvent(element, 'shippingaddresschange', onShippingAddressChange);\n useAttachEvent(element, 'shippingratechange', onShippingRateChange);\n var readyCallback;\n\n if (type === 'cart') {\n readyCallback = function readyCallback(event) {\n setCartState(event);\n onReady && onReady(event);\n };\n } else if (onReady) {\n if (type === 'payButton') {\n // Passes through the event, which includes visible PM types\n readyCallback = onReady;\n } else {\n // For other Elements, pass through the Element itself.\n readyCallback = function readyCallback() {\n onReady(element);\n };\n }\n }\n\n useAttachEvent(element, 'ready', readyCallback);\n var changeCallback = type === 'cart' ? function (event) {\n setCartState(event);\n onChange && onChange(event);\n } : onChange;\n useAttachEvent(element, 'change', changeCallback);\n var checkoutCallback = type === 'cart' ? function (event) {\n setCartState(event);\n onCheckout && onCheckout(event);\n } : onCheckout;\n useAttachEvent(element, 'checkout', checkoutCallback);\n React.useLayoutEffect(function () {\n if (elementRef.current === null && elements && domNode.current !== null) {\n var newElement = elements.create(type, options);\n\n if (type === 'cart' && setCart) {\n // we know that elements.create return value must be of type StripeCartElement if type is 'cart',\n // we need to cast because typescript is not able to infer which overloaded method is used based off param type\n setCart(newElement);\n } // Store element in a ref to ensure it's _immediately_ available in cleanup hooks in StrictMode\n\n\n elementRef.current = newElement; // Store element in state to facilitate event listener attachment\n\n setElement(newElement);\n newElement.mount(domNode.current);\n }\n }, [elements, options, setCart]);\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (!elementRef.current) {\n return;\n }\n\n var updates = extractAllowedOptionsUpdates(options, prevOptions, ['paymentRequest']);\n\n if (updates) {\n elementRef.current.update(updates);\n }\n }, [options, prevOptions]);\n React.useLayoutEffect(function () {\n return function () {\n if (elementRef.current) {\n elementRef.current.destroy();\n elementRef.current = null;\n }\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className,\n ref: domNode\n });\n }; // Only render the Element wrapper in a server environment.\n\n\n var ServerElement = function ServerElement(props) {\n // Validate that we are in the right context by calling useElementsContextWithUseCase.\n useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n var id = props.id,\n className = props.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className\n });\n };\n\n var Element = isServer ? ServerElement : ClientElement;\n Element.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n onReady: PropTypes.func,\n onEscape: PropTypes.func,\n onClick: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoaderStart: PropTypes.func,\n onNetworksChange: PropTypes.func,\n onCheckout: PropTypes.func,\n onLineItemClick: PropTypes.func,\n onConfirm: PropTypes.func,\n onCancel: PropTypes.func,\n onShippingAddressChange: PropTypes.func,\n onShippingRateChange: PropTypes.func,\n options: PropTypes.object\n };\n Element.displayName = displayName;\n Element.__elementType = type;\n return Element;\n};\n\nvar isServer = typeof window === 'undefined';\n/**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar CardElement = createElementComponent('card', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar CardNumberElement = createElementComponent('cardNumber', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar CardExpiryElement = createElementComponent('cardExpiry', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar CardCvcElement = createElementComponent('cardCvc', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar FpxBankElement = createElementComponent('fpxBank', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar IbanElement = createElementComponent('iban', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar IdealBankElement = createElementComponent('idealBank', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar P24BankElement = createElementComponent('p24Bank', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar EpsBankElement = createElementComponent('epsBank', isServer);\nvar PaymentElement = createElementComponent('payment', isServer);\n/**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar PayButtonElement = createElementComponent('payButton', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n/**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar AddressElement = createElementComponent('address', isServer);\n/**\n * @deprecated\n * Use `AddressElement` instead.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n/**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/elements/cart-element\n */\n\nvar CartElement = createElementComponent('cart', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar AffirmMessageElement = createElementComponent('affirmMessage', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\nvar AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\nexport { AddressElement, AffirmMessageElement, AfterpayClearpayMessageElement, AuBankAccountElement, CardCvcElement, CardElement, CardExpiryElement, CardNumberElement, CartElement, Elements, ElementsConsumer, EpsBankElement, FpxBankElement, IbanElement, IdealBankElement, LinkAuthenticationElement, P24BankElement, PayButtonElement, PaymentElement, PaymentMethodMessagingElement, PaymentRequestButtonElement, ShippingAddressElement, useCartElement, useCartElementState, useElements, useStripe };\n","import { CardElement, ElementsConsumer } from '@stripe/react-stripe-js'\nimport { Stripe, StripeElements } from '@stripe/stripe-js'\nimport * as React from 'react'\nimport * as Constants from '../../lib/constants'\nimport { localFetch } from '../../lib/local_fetch'\n\ninterface IProps {\n stripe?: Stripe | null\n elements?: StripeElements | null\n handleCardSaved: () => void\n handleCardSaveFailed?: (error: string) => void\n handleCancel?: () => void\n saveButtonLabel?: React.ReactElement | string\n}\n\ninterface IState {\n saving: boolean\n errorMessage?: string\n}\n\nconst CARD_ELEMENT_STYLES = {\n base: {\n 'fontSize': '18px',\n 'color': '#495057',\n 'fontFamily': '-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,' +\n '\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\"',\n '::placeholder': {\n color: '#868e96',\n },\n },\n invalid: {\n color: '#9e2146',\n },\n}\n\nclass CreditCardForm extends React.Component {\n public static defaultProps: Partial = {\n saveButtonLabel: 'Save Card',\n }\n\n public constructor(props: IProps) {\n super(props)\n\n this.state = {\n saving: false,\n }\n }\n\n public handleSubmit = async () => {\n const {\n stripe,\n elements,\n handleCardSaved,\n } = this.props\n\n if (!stripe || !elements) {\n throw new Error('Stripe is not setup properly!')\n }\n\n const cardElement = elements.getElement(CardElement)\n\n if (!cardElement) {\n throw new Error('Cannot find Stripe CardElement')\n }\n\n this.setState({ saving: true })\n\n const { token } = await stripe.createToken(cardElement)\n\n if (!token) {\n this.setState({ saving: false })\n return\n }\n\n const response = await localFetch(Constants.creditCardPath, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n credit_card: { token: token.id },\n }),\n })\n\n if (response.ok) {\n handleCardSaved()\n } else {\n const json = await response.json()\n this.handleErrorSavingCard(json.error)\n }\n }\n\n public handleCancel = () => {\n const { handleCancel } = this.props\n\n if (handleCancel) { handleCancel() }\n }\n\n public render() {\n const { handleCancel, saveButtonLabel } = this.props\n const { saving, errorMessage } = this.state\n let renderedError\n\n if (errorMessage) {\n renderedError = (\n
\n {errorMessage}\n
\n )\n }\n\n return (\n
\n
\n \n {renderedError}\n
\n \n {saveButtonLabel}\n \n {' '}\n \n Cancel\n \n
\n )\n }\n\n private handleErrorSavingCard(error: string) {\n const { handleCardSaveFailed } = this.props\n\n this.setState({\n errorMessage: error,\n saving: false,\n })\n\n if (handleCardSaveFailed) {\n handleCardSaveFailed(error)\n }\n }\n}\n\nconst WrappedCreditCardForm = (props: IProps) => (\n \n {({stripe, elements}) => (\n \n )}\n \n)\n\nexport { WrappedCreditCardForm as CreditCardForm, IProps as ICreditCardFormProps }\n","import * as React from 'react'\n\ninterface IProps {\n name: string\n invalid: boolean\n initialValue: string\n initiallyShown: boolean\n inputClassName: string\n id?: string\n}\n\ninterface IState {\n value: string\n shown: boolean\n}\n\nclass PasswordField extends React.Component {\n public static defaultProps: Partial = {\n inputClassName: 'form-control',\n initialValue: '',\n initiallyShown: false,\n invalid: false,\n }\n\n constructor(props: IProps) {\n super(props)\n\n this.state = {\n value: props.initialValue,\n shown: props.initiallyShown,\n }\n }\n\n public handleChange = (event: React.ChangeEvent) => {\n this.setState({ value: event.target.value })\n }\n\n public handleToggleShown = (event: React.SyntheticEvent) => {\n event.preventDefault()\n this.setState((prevState) => ({ shown: !prevState.shown }))\n }\n\n public render() {\n const { name, inputClassName, invalid, id } = this.props\n const { value, shown } = this.state\n const additionalClasses = invalid ? 'is-invalid' : ''\n\n return (\n
\n \n
\n \n \n \n
\n
\n )\n }\n}\n\nexport { PasswordField }\n","import * as API from '../../../lib/types/api'\nimport { creditCardPath } from '../../lib/constants'\nimport { localFetch } from '../../lib/local_fetch'\n\nclass CreditCard {\n public static async fetch(): Promise {\n const response = await localFetch(creditCardPath, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' },\n })\n const json = await response.json()\n\n return new CreditCard(json)\n }\n\n public customerID: number | null\n public hasStoredCard: boolean\n public brand?: string\n public expireMonth?: number\n public expireYear?: number\n public lastFour?: string\n\n constructor(api: API.ICreditCard) {\n this.customerID = api.customer_id\n this.hasStoredCard = api.has_stored_card\n this.brand = api.stored_card_info.brand\n this.expireMonth = api.stored_card_info.expire_month\n this.expireYear = api.stored_card_info.expire_year\n this.lastFour = api.stored_card_info.last_four\n }\n\n public async destroy(): Promise {\n const response = await localFetch(creditCardPath, {\n method: 'DELETE',\n headers: { 'Content-Type': 'application/json' },\n })\n\n return response.ok\n }\n}\n\nexport {\n CreditCard,\n}\n","var V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i];\n\n if (!V3_URL_REGEX.test(script.src)) {\n continue;\n }\n\n return script;\n }\n\n return null;\n};\n\nvar injectScript = function injectScript(params) {\n var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n var script = document.createElement('script');\n script.src = \"\".concat(V3_URL).concat(queryString);\n var headOrBody = document.head || document.body;\n\n if (!headOrBody) {\n throw new Error('Expected document.body not to be null. Stripe.js requires a element.');\n }\n\n headOrBody.appendChild(script);\n return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n if (!stripe || !stripe._registerWrapper) {\n return;\n }\n\n stripe._registerWrapper({\n name: 'stripe-js',\n version: \"1.54.2\",\n startTime: startTime\n });\n};\n\nvar stripePromise = null;\nvar loadScript = function loadScript(params) {\n // Ensure that we only attempt to load Stripe.js at most once\n if (stripePromise !== null) {\n return stripePromise;\n }\n\n stripePromise = new Promise(function (resolve, reject) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n // Resolve to null when imported server side. This makes the module\n // safe to import in an isomorphic code base.\n resolve(null);\n return;\n }\n\n if (window.Stripe && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n }\n\n if (window.Stripe) {\n resolve(window.Stripe);\n return;\n }\n\n try {\n var script = findScript();\n\n if (script && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n } else if (!script) {\n script = injectScript(params);\n }\n\n script.addEventListener('load', function () {\n if (window.Stripe) {\n resolve(window.Stripe);\n } else {\n reject(new Error('Stripe.js not available'));\n }\n });\n script.addEventListener('error', function () {\n reject(new Error('Failed to load Stripe.js'));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n return stripePromise;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n if (maybeStripe === null) {\n return null;\n }\n\n var stripe = maybeStripe.apply(undefined, args);\n registerWrapper(stripe, startTime);\n return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n// own script injection.\n\nvar stripePromise$1 = Promise.resolve().then(function () {\n return loadScript(null);\n});\nvar loadCalled = false;\nstripePromise$1[\"catch\"](function (err) {\n if (!loadCalled) {\n console.warn(err);\n }\n});\nvar loadStripe = function loadStripe() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n loadCalled = true;\n var startTime = Date.now();\n return stripePromise$1.then(function (maybeStripe) {\n return initStripe(maybeStripe, args, startTime);\n });\n};\n\nexport { loadStripe };\n","import { Elements } from '@stripe/react-stripe-js'\nimport { loadStripe } from '@stripe/stripe-js'\nimport HAT from 'hat'\nimport * as React from 'react'\nimport { CreditCardForm, ICreditCardFormProps } from './CreditCardForm'\n\nconst stripePromise = loadStripe(HAT.CONSTANTS.STRIPE_PUB_KEY)\n\nclass WrappedCreditCardForm extends React.Component {\n public render() {\n return (\n \n \n \n )\n }\n}\n\nexport { WrappedCreditCardForm }\n","import * as React from 'react'\n\nimport { CreditCard } from '../lib/credit_card'\nimport { WrappedCreditCardForm } from './WrappedCreditCardForm'\n\ninterface IState {\n showForm: boolean\n creditCard?: CreditCard\n}\n\nclass ProfileBillingInfo extends React.Component<{}, IState> {\n public constructor(props: {}) {\n super(props)\n\n this.state = {\n showForm: false,\n }\n }\n\n public componentDidMount() {\n this.fetchCreditCard()\n }\n\n public toggleForm = () => {\n this.setState(({ showForm }) => ({ showForm: !showForm }))\n }\n\n public handleCardSaved = () => {\n window.location.reload()\n }\n\n public removeCard = async () => {\n const { creditCard } = this.state\n\n if (creditCard) {\n if (await creditCard.destroy()) {\n window.location.reload()\n }\n }\n }\n\n public renderForm() {\n return (\n
\n
\n \n
\n
\n )\n }\n\n public renderCreditCard() {\n const { creditCard } = this.state\n\n if (!creditCard) {\n throw new Error('Trying to render credit card data with no data!')\n }\n\n return (\n
\n \n {creditCard.brand} ending in {creditCard.lastFour}\n (expires {creditCard.expireMonth}/{creditCard.expireYear})\n \n {' '}\n \n
\n )\n }\n\n public renderAddCardLink() {\n return (\n
\n No card on file\n \n
\n )\n }\n\n public render() {\n const { showForm, creditCard } = this.state\n\n if (showForm) {\n return this.renderForm()\n } else if (creditCard && creditCard.hasStoredCard) {\n return this.renderCreditCard()\n } else if (creditCard) {\n return this.renderAddCardLink()\n } else {\n return (\n
Loading...
\n )\n }\n }\n\n private async fetchCreditCard(newState?: Readonly) {\n const creditCard = await CreditCard.fetch()\n const updateState = newState || {}\n\n this.setState({ ...updateState, creditCard })\n }\n}\n\nexport { ProfileBillingInfo }\n","import { pluralize } from '../../lib/pluralize'\nimport * as React from 'react'\nimport { CreditPurchaseForm } from '../../UserProfile'\nimport { WrappedCreditCardForm } from '../../UserProfile'\nimport { Customer } from '../../UserProfile/lib/customer'\nimport { IHistoryReportWithRequiredCost } from '../lib/HistoryReport'\n\ninterface IProps {\n handleCardSaved: () => void\n handleCreditsPurchased: () => void\n customer: Customer\n report: IHistoryReportWithRequiredCost\n couponCode?: string\n}\n\nclass HistoryReportCreditPurchase extends React.Component {\n\n public renderCreditPurchaseForm() {\n const { customer, handleCreditsPurchased, couponCode } = this.props\n\n return (\n \n )\n }\n\n public renderAddCardForm() {\n const { handleCardSaved } = this.props\n\n return(\n
\n

\n We need your credit card information in order to purchase the credits.\n

\n
\n
\n \n
\n
\n
\n )\n }\n\n public renderForm() {\n if (this.canPurchaseCredits()) {\n return this.renderCreditPurchaseForm()\n } else {\n return this.renderAddCardForm()\n }\n }\n\n public render() {\n const { report } = this.props\n\n return (\n
\n

\n \n This report costs {report.creditPrice.value} {pluralize('credit', report.creditPrice.value)},\n but you only have {this.customerBalance()} {pluralize('credit', this.customerBalance())}.\n \n

\n\n {this.renderForm()}\n
\n )\n }\n\n private canPurchaseCredits(): boolean {\n const { customer } = this.props\n\n return !!customer && customer.hasStoredCard\n }\n\n private creditsNeeded(): number {\n const { report } = this.props\n\n return report.creditPrice.value - this.customerBalance()\n }\n\n private customerBalance(): number {\n const { report, customer } = this.props\n\n return customer.balanceFor(report.creditPrice.creditCurrencyKey)\n }\n}\n\nexport { HistoryReportCreditPurchase }\n","import * as React from 'react'\n\nimport { WrappedCreditCardForm } from '../../UserProfile'\nimport { CouponForm } from '../../UserProfile/components/CreditPurchaseForm/CouponForm'\nimport { OrderDetails } from '../../UserProfile/components/CreditPurchaseForm/OrderDetails'\nimport { CreditCard } from '../../UserProfile/lib/credit_card'\nimport { CreditPurchase } from '../../UserProfile/lib/credit_purchase'\nimport { Customer } from '../../UserProfile/lib/customer'\nimport { IHistoryReportWithRequiredCost } from '../lib/HistoryReport'\n\ninterface IProps {\n handleCreditsPurchased: () => void\n customer: Customer\n report: IHistoryReportWithRequiredCost\n handleRequestCreditForm: () => void\n couponCode?: string\n}\n\ninterface IState {\n purchased: boolean\n rememberCard: boolean\n showCouponForm: boolean\n couponCode?: string\n creditPurchase?: CreditPurchase\n}\n\ninterface IStateRequiredCreditPurchase extends IState {\n creditPurchase: CreditPurchase\n}\n\nclass HistoryReportPurchase extends React.Component {\n public constructor(props: IProps) {\n super(props)\n\n this.state = {\n purchased: false,\n rememberCard: true,\n showCouponForm: false,\n couponCode: props.couponCode,\n }\n }\n\n public componentDidMount() {\n this.fetchCreditPurchase()\n }\n\n public handlePurchase = async () => {\n const { handleCreditsPurchased } = this.props\n const { creditPurchase, purchased, rememberCard } = this.requiredState()\n\n if (purchased) { return }\n\n await this.setState({ purchased: true })\n\n const purchase = await creditPurchase.purchase()\n\n if (purchase.order.paid) {\n handleCreditsPurchased()\n } else {\n this.setState({ purchased: false, creditPurchase: purchase })\n }\n\n if (!rememberCard) {\n this.forgetCard()\n }\n }\n\n public handleCouponCodeEntered = async (couponCode: string) => {\n await this.setState({ couponCode })\n await this.fetchCreditPurchase()\n\n const { creditPurchase } = this.state\n if (creditPurchase && creditPurchase.coupon.isValid) {\n this.toggleCouponForm()\n }\n }\n\n public toggleRememberCard = () => {\n this.setState((prevState) => ({ rememberCard: !prevState.rememberCard }))\n }\n\n public toggleCouponForm = () => {\n this.setState((prevState) => ({ showCouponForm: !prevState.showCouponForm }))\n }\n\n public renderPurchaseButton() {\n return (\n \n {this.callToAction()}\n \n )\n }\n\n public renderAction() {\n const { creditPurchase, purchased, rememberCard } = this.state\n const { customer } = this.props\n\n if (!creditPurchase || purchased) {\n return
Loading...
\n }\n\n if (customer.hasStoredCard || creditPurchase.totalUSDPrice.cents == 0) {\n return this.renderPurchaseButton()\n } else {\n return (\n
\n
\n
\n
\n \n \n
\n
\n\n \n
\n
\n )\n }\n }\n\n public renderCouponForm() {\n const { showCouponForm, creditPurchase, purchased } = this.state\n\n if (!showCouponForm || !creditPurchase || purchased) { return }\n\n return (\n
\n \n
\n )\n }\n\n public renderOrderDetails() {\n const { creditPurchase } = this.state\n\n if (!creditPurchase) { return }\n\n return (\n \n )\n }\n\n public handleRequestCreditForm = (event: React.SyntheticEvent) => {\n const { handleRequestCreditForm } = this.props\n\n event.preventDefault()\n handleRequestCreditForm()\n }\n\n public handleForgetCardRequest = async (event: React.SyntheticEvent) => {\n event.preventDefault()\n await this.forgetCard()\n window.location.reload()\n }\n\n public renderError() {\n const { creditPurchase } = this.state\n if (!creditPurchase) { return }\n\n const { error } = creditPurchase.order\n if (!error) { return }\n\n return (\n
\n It looks like there was an error when trying to charge your card.\n The error returned was \"{error}\". You can try again, or you can{' '}\n \n try a different credit card\n .\n
\n )\n }\n\n public render() {\n return (\n
\n {this.renderError()}\n {this.renderAction()}\n {this.renderOrderDetails()}\n\n {this.renderCouponForm()}\n\n

\n If you'd rather buy reports in bulk, you can{' '}\n \n purchase Hail History Report Credits\n .\n

\n\n

\n \n Have a Promo Code?\n \n

\n
\n )\n }\n\n private callToAction() {\n const { creditPurchase } = this.requiredState()\n\n return (\n \n Purchase Report for {creditPurchase.totalUSDPrice.localized}\n \n )\n }\n\n private requiredState(): IStateRequiredCreditPurchase {\n const { creditPurchase } = this.state\n\n if (!creditPurchase) { throw new Error('Cannot confirm undefined creditPurchase!') }\n\n return { ...this.state, creditPurchase }\n }\n\n private showCouponLink(): boolean {\n const { creditPurchase, showCouponForm } = this.state\n\n return !(\n showCouponForm ||\n (!!creditPurchase && creditPurchase.coupon.isValid)\n )\n }\n\n private async fetchCreditPurchase() {\n const { report } = this.props\n const { couponCode } = this.state\n const creditPurchase = await CreditPurchase.buildNew(\n report.creditPrice.creditCurrencyKey,\n report.creditPrice.value,\n couponCode,\n )\n\n this.setState({ creditPurchase })\n }\n\n private async forgetCard() {\n const creditCard = await CreditCard.fetch()\n creditCard.destroy()\n }\n}\n\nexport { HistoryReportPurchase }\n","import { pluralize } from '../../lib/pluralize'\nimport * as React from 'react'\nimport { Customer } from '../../UserProfile/lib/customer'\nimport { IHistoryReportWithRequiredCost } from '../lib/HistoryReport'\nimport { HistoryReportCreditPurchase } from './HistoryReportCreditPurchase'\nimport { HistoryReportPurchase } from './HistoryReportPurchase'\n\ninterface IProps {\n handlePurchaseReport: () => void\n handleRefreshCustomer: () => void\n report: IHistoryReportWithRequiredCost\n customer?: Customer\n couponCode?: string\n}\n\ninterface IState {\n creditPurchaseRequested: boolean\n}\n\nclass HistoryReportConfirmation extends React.Component {\n public constructor(props: IProps) {\n super(props)\n\n this.state = {\n creditPurchaseRequested: false,\n }\n }\n\n public renderFreePurchaseButton() {\n const { handlePurchaseReport } = this.props\n\n return (\n
\n

\n This is a free report.\n

\n \n Generate Report\n \n
\n )\n }\n\n public renderPurchaseButton() {\n const { handlePurchaseReport, report } = this.props\n const { creditPrice } = report\n\n return (\n
\n

\n This report costs {creditPrice.value} {pluralize('credit', creditPrice.value)},\n and you have {this.customerBalance()} {pluralize('credit', this.customerBalance())}.\n

\n \n Purchase Report with {creditPrice.value} {pluralize('Credit', creditPrice.value)}\n \n
\n )\n }\n\n public toggleCreditPurchaseRequested = () => {\n this.setState((prevState) => ({ creditPurchaseRequested: !prevState.creditPurchaseRequested }))\n }\n\n public renderContent() {\n const { customer, report, couponCode, handleRefreshCustomer, handlePurchaseReport } = this.props\n\n if (this.canPurchaseReport()) {\n if (report.creditPrice.value === 0) {\n return this.renderFreePurchaseButton()\n } else {\n return this.renderPurchaseButton()\n }\n } else if (customer) {\n if (this.showCreditPurchase()) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n } else {\n return
Loading...
\n }\n }\n\n public render() {\n const { report } = this.props\n\n return (\n
\n

\n Ready to build your report for {report.locationCount} {pluralize('property', report.locationCount)}\n

\n\n {this.renderContent()}\n
\n )\n }\n\n private showCreditPurchase(): boolean {\n const { customer } = this.props\n const { creditPurchaseRequested } = this.state\n\n return creditPurchaseRequested || !!customer && this.customerBalance() > 0\n }\n\n private canPurchaseReport(): boolean {\n const { customer, report } = this.props\n const { creditPrice } = report\n\n return this.creditsNeeded() <= 0 || (\n !!customer &&\n customer.hasSufficientCredits(creditPrice.creditCurrencyKey, creditPrice.value)\n )\n }\n\n private creditsNeeded(): number {\n const { report } = this.props\n\n return report.creditPrice.value - this.customerBalance()\n }\n\n private customerBalance(): number {\n const { report, customer } = this.props\n\n return customer ? customer.balanceFor(report.creditPrice.creditCurrencyKey) : 0\n }\n}\n\nexport { HistoryReportConfirmation }\n","import * as React from 'react'\nimport { HistoryReport as Report, IProcessRowErrors } from '../lib/HistoryReport'\n\ninterface IProps {\n report: Report,\n}\n\nclass HistoryReportErrors extends React.Component {\n public render() {\n const { report } = this.props\n const { rows: rowErrors } = report.processErrors\n\n const renderedErrors = Object.keys(rowErrors).map((rowNumber) => {\n const errors = rowErrors[rowNumber as keyof IProcessRowErrors]\n\n return (\n
\n
\n Row #{rowNumber} {errors.join(', ')}\n
\n
\n )\n })\n\n return (\n
\n

We Need Some Additional Information

\n

\n It looks like we will need a little more information in order to build\n your report. Please see the errors below.\n

\n
\n {renderedErrors}\n
\n\n \n Upload Your Fixed Report\n \n
\n )\n }\n}\n\nexport { HistoryReportErrors }\n","(function() {\n var context = this;\n\n (function() {\n (function() {\n var slice = [].slice;\n\n this.ActionCable = {\n INTERNAL: {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\"actioncable-v1-json\", \"actioncable-unsupported\"]\n },\n WebSocket: window.WebSocket,\n logger: window.console,\n createConsumer: function(url) {\n var ref;\n if (url == null) {\n url = (ref = this.getConfig(\"url\")) != null ? ref : this.INTERNAL.default_mount_path;\n }\n return new ActionCable.Consumer(this.createWebSocketURL(url));\n },\n getConfig: function(name) {\n var element;\n element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n return element != null ? element.getAttribute(\"content\") : void 0;\n },\n createWebSocketURL: function(url) {\n var a;\n if (url && !/^wss?:/i.test(url)) {\n a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n },\n startDebugging: function() {\n return this.debugging = true;\n },\n stopDebugging: function() {\n return this.debugging = null;\n },\n log: function() {\n var messages, ref;\n messages = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n if (this.debugging) {\n messages.push(Date.now());\n return (ref = this.logger).log.apply(ref, [\"[ActionCable]\"].concat(slice.call(messages)));\n }\n }\n };\n\n }).call(this);\n }).call(context);\n\n var ActionCable = context.ActionCable;\n\n (function() {\n (function() {\n var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n ActionCable.ConnectionMonitor = (function() {\n var clamp, now, secondsSince;\n\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30\n };\n\n ConnectionMonitor.staleThreshold = 6;\n\n function ConnectionMonitor(connection) {\n this.connection = connection;\n this.visibilityDidChange = bind(this.visibilityDidChange, this);\n this.reconnectAttempts = 0;\n }\n\n ConnectionMonitor.prototype.start = function() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n document.addEventListener(\"visibilitychange\", this.visibilityDidChange);\n return ActionCable.log(\"ConnectionMonitor started. pollInterval = \" + (this.getPollInterval()) + \" ms\");\n }\n };\n\n ConnectionMonitor.prototype.stop = function() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n document.removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n return ActionCable.log(\"ConnectionMonitor stopped\");\n }\n };\n\n ConnectionMonitor.prototype.isRunning = function() {\n return (this.startedAt != null) && (this.stoppedAt == null);\n };\n\n ConnectionMonitor.prototype.recordPing = function() {\n return this.pingedAt = now();\n };\n\n ConnectionMonitor.prototype.recordConnect = function() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n return ActionCable.log(\"ConnectionMonitor recorded connect\");\n };\n\n ConnectionMonitor.prototype.recordDisconnect = function() {\n this.disconnectedAt = now();\n return ActionCable.log(\"ConnectionMonitor recorded disconnect\");\n };\n\n ConnectionMonitor.prototype.startPolling = function() {\n this.stopPolling();\n return this.poll();\n };\n\n ConnectionMonitor.prototype.stopPolling = function() {\n return clearTimeout(this.pollTimeout);\n };\n\n ConnectionMonitor.prototype.poll = function() {\n return this.pollTimeout = setTimeout((function(_this) {\n return function() {\n _this.reconnectIfStale();\n return _this.poll();\n };\n })(this), this.getPollInterval());\n };\n\n ConnectionMonitor.prototype.getPollInterval = function() {\n var interval, max, min, ref;\n ref = this.constructor.pollInterval, min = ref.min, max = ref.max;\n interval = 5 * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1000);\n };\n\n ConnectionMonitor.prototype.reconnectIfStale = function() {\n if (this.connectionIsStale()) {\n ActionCable.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + (this.getPollInterval()) + \" ms, time disconnected = \" + (secondsSince(this.disconnectedAt)) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n return ActionCable.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n ActionCable.log(\"ConnectionMonitor reopening\");\n return this.connection.reopen();\n }\n }\n };\n\n ConnectionMonitor.prototype.connectionIsStale = function() {\n var ref;\n return secondsSince((ref = this.pingedAt) != null ? ref : this.startedAt) > this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.disconnectedRecently = function() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.visibilityDidChange = function() {\n if (document.visibilityState === \"visible\") {\n return setTimeout((function(_this) {\n return function() {\n if (_this.connectionIsStale() || !_this.connection.isOpen()) {\n ActionCable.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visbilityState = \" + document.visibilityState);\n return _this.connection.reopen();\n }\n };\n })(this), 200);\n }\n };\n\n now = function() {\n return new Date().getTime();\n };\n\n secondsSince = function(time) {\n return (now() - time) / 1000;\n };\n\n clamp = function(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n\n return ConnectionMonitor;\n\n })();\n\n }).call(this);\n (function() {\n var i, message_types, protocols, ref, supportedProtocols, unsupportedProtocol,\n slice = [].slice,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n ref = ActionCable.INTERNAL, message_types = ref.message_types, protocols = ref.protocols;\n\n supportedProtocols = 2 <= protocols.length ? slice.call(protocols, 0, i = protocols.length - 1) : (i = 0, []), unsupportedProtocol = protocols[i++];\n\n ActionCable.Connection = (function() {\n Connection.reopenDelay = 500;\n\n function Connection(consumer) {\n this.consumer = consumer;\n this.open = bind(this.open, this);\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ActionCable.ConnectionMonitor(this);\n this.disconnected = true;\n }\n\n Connection.prototype.send = function(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n\n Connection.prototype.open = function() {\n if (this.isActive()) {\n ActionCable.log(\"Attempted to open WebSocket, but existing socket is \" + (this.getState()));\n return false;\n } else {\n ActionCable.log(\"Opening WebSocket, current state is \" + (this.getState()) + \", subprotocols: \" + protocols);\n if (this.webSocket != null) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new ActionCable.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n\n Connection.prototype.close = function(arg) {\n var allowReconnect, ref1;\n allowReconnect = (arg != null ? arg : {\n allowReconnect: true\n }).allowReconnect;\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isActive()) {\n return (ref1 = this.webSocket) != null ? ref1.close() : void 0;\n }\n };\n\n Connection.prototype.reopen = function() {\n var error;\n ActionCable.log(\"Reopening WebSocket, current state is \" + (this.getState()));\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error1) {\n error = error1;\n return ActionCable.log(\"Failed to reopen WebSocket\", error);\n } finally {\n ActionCable.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n\n Connection.prototype.getProtocol = function() {\n var ref1;\n return (ref1 = this.webSocket) != null ? ref1.protocol : void 0;\n };\n\n Connection.prototype.isOpen = function() {\n return this.isState(\"open\");\n };\n\n Connection.prototype.isActive = function() {\n return this.isState(\"open\", \"connecting\");\n };\n\n Connection.prototype.isProtocolSupported = function() {\n var ref1;\n return ref1 = this.getProtocol(), indexOf.call(supportedProtocols, ref1) >= 0;\n };\n\n Connection.prototype.isState = function() {\n var ref1, states;\n states = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return ref1 = this.getState(), indexOf.call(states, ref1) >= 0;\n };\n\n Connection.prototype.getState = function() {\n var ref1, state, value;\n for (state in WebSocket) {\n value = WebSocket[state];\n if (value === ((ref1 = this.webSocket) != null ? ref1.readyState : void 0)) {\n return state.toLowerCase();\n }\n }\n return null;\n };\n\n Connection.prototype.installEventHandlers = function() {\n var eventName, handler;\n for (eventName in this.events) {\n handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n\n Connection.prototype.uninstallEventHandlers = function() {\n var eventName;\n for (eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function() {};\n }\n };\n\n Connection.prototype.events = {\n message: function(event) {\n var identifier, message, ref1, type;\n if (!this.isProtocolSupported()) {\n return;\n }\n ref1 = JSON.parse(event.data), identifier = ref1.identifier, message = ref1.message, type = ref1.type;\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n case message_types.ping:\n return this.monitor.recordPing();\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function() {\n ActionCable.log(\"WebSocket onopen event, using '\" + (this.getProtocol()) + \"' subprotocol\");\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n ActionCable.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function(event) {\n ActionCable.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function() {\n return ActionCable.log(\"WebSocket onerror event\");\n }\n };\n\n return Connection;\n\n })();\n\n }).call(this);\n (function() {\n var slice = [].slice;\n\n ActionCable.Subscriptions = (function() {\n function Subscriptions(consumer) {\n this.consumer = consumer;\n this.subscriptions = [];\n }\n\n Subscriptions.prototype.create = function(channelName, mixin) {\n var channel, params, subscription;\n channel = channelName;\n params = typeof channel === \"object\" ? channel : {\n channel: channel\n };\n subscription = new ActionCable.Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n\n Subscriptions.prototype.add = function(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n\n Subscriptions.prototype.remove = function(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n };\n\n Subscriptions.prototype.reject = function(identifier) {\n var i, len, ref, results, subscription;\n ref = this.findAll(identifier);\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n results.push(subscription);\n }\n return results;\n };\n\n Subscriptions.prototype.forget = function(subscription) {\n var s;\n this.subscriptions = (function() {\n var i, len, ref, results;\n ref = this.subscriptions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n s = ref[i];\n if (s !== subscription) {\n results.push(s);\n }\n }\n return results;\n }).call(this);\n return subscription;\n };\n\n Subscriptions.prototype.findAll = function(identifier) {\n var i, len, ref, results, s;\n ref = this.subscriptions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n s = ref[i];\n if (s.identifier === identifier) {\n results.push(s);\n }\n }\n return results;\n };\n\n Subscriptions.prototype.reload = function() {\n var i, len, ref, results, subscription;\n ref = this.subscriptions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n results.push(this.sendCommand(subscription, \"subscribe\"));\n }\n return results;\n };\n\n Subscriptions.prototype.notifyAll = function() {\n var args, callbackName, i, len, ref, results, subscription;\n callbackName = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n ref = this.subscriptions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n results.push(this.notify.apply(this, [subscription, callbackName].concat(slice.call(args))));\n }\n return results;\n };\n\n Subscriptions.prototype.notify = function() {\n var args, callbackName, i, len, results, subscription, subscriptions;\n subscription = arguments[0], callbackName = arguments[1], args = 3 <= arguments.length ? slice.call(arguments, 2) : [];\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [subscription];\n }\n results = [];\n for (i = 0, len = subscriptions.length; i < len; i++) {\n subscription = subscriptions[i];\n results.push(typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : void 0);\n }\n return results;\n };\n\n Subscriptions.prototype.sendCommand = function(subscription, command) {\n var identifier;\n identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n\n return Subscriptions;\n\n })();\n\n }).call(this);\n (function() {\n ActionCable.Subscription = (function() {\n var extend;\n\n function Subscription(consumer, params, mixin) {\n this.consumer = consumer;\n if (params == null) {\n params = {};\n }\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n\n Subscription.prototype.perform = function(action, data) {\n if (data == null) {\n data = {};\n }\n data.action = action;\n return this.send(data);\n };\n\n Subscription.prototype.send = function(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n\n Subscription.prototype.unsubscribe = function() {\n return this.consumer.subscriptions.remove(this);\n };\n\n extend = function(object, properties) {\n var key, value;\n if (properties != null) {\n for (key in properties) {\n value = properties[key];\n object[key] = value;\n }\n }\n return object;\n };\n\n return Subscription;\n\n })();\n\n }).call(this);\n (function() {\n ActionCable.Consumer = (function() {\n function Consumer(url) {\n this.url = url;\n this.subscriptions = new ActionCable.Subscriptions(this);\n this.connection = new ActionCable.Connection(this);\n }\n\n Consumer.prototype.send = function(data) {\n return this.connection.send(data);\n };\n\n Consumer.prototype.connect = function() {\n return this.connection.open();\n };\n\n Consumer.prototype.disconnect = function() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n\n Consumer.prototype.ensureActiveConnection = function() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n\n return Consumer;\n\n })();\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = ActionCable;\n } else if (typeof define === \"function\" && define.amd) {\n define(ActionCable);\n }\n}).call(this);\n","import * as ActionCable from 'actioncable'\n\nconst DEFAULT_WS_URL = '/cable'\n\nexport function connectCable(): ActionCable.Cable {\n const metaTag = document.querySelector('meta[name=\"action-cable-url\"]')\n let url: string | null = null\n\n if (metaTag) {\n url = metaTag.getAttribute('content')\n }\n\n return ActionCable.createConsumer(url || DEFAULT_WS_URL)\n}\n","import * as React from 'react'\n\nexport const ReportSpinner = (props: { title: string, subtitle: string, children?: React.ReactNode }) => {\n const { title, subtitle, children } = props\n\n return (\n
\n
\n {title}\n
{subtitle}
\n\n {children}\n
\n )\n}\n","import * as ActionCable from 'actioncable'\nimport * as React from 'react'\nimport { connectCable } from '../../lib/cable'\nimport { HistoryReport as Report } from '../lib/HistoryReport'\nimport { ReportSpinner } from './ReportSpinner'\n\nconst MAX_WAIT = 15 * 1000\n\ninterface IProps {\n report: Report\n title: string\n subtitle: string\n handleRefreshReport?: () => {}\n}\n\ninterface IState {\n cable: ActionCable.Cable\n channel?: ActionCable.Channel\n status?: IStatus\n pollingInterval?: number,\n}\n\ninterface IStatus {\n message: string\n task: string\n progress: number\n taskProgress: number\n complete: boolean\n timestamp: Date\n}\n\ninterface IExtStreamPayload {\n message: string\n task: string\n progress: number\n task_progress: number\n complete: boolean\n}\n\nclass ReportBuildStatus extends React.Component {\n constructor(props: IProps) {\n super(props)\n\n this.state = {\n cable: connectCable(),\n }\n }\n\n public componentDidMount() {\n const { report, handleRefreshReport } = this.props\n const { cable } = this.state\n\n const channel = cable.subscriptions.create({\n channel: 'HistoryReportChannel',\n history_report_id: report.id,\n }, {\n connected: () => { /* no-op */ },\n disconnected: () => { /* no-op */ },\n received: this.onReceived,\n })\n\n this.setState(\n {\n channel,\n pollingInterval: window.setInterval(this.pollingCheck, MAX_WAIT),\n },\n () => handleRefreshReport ? handleRefreshReport() : null,\n )\n }\n\n public componentWillUnmount() {\n const { cable, channel, pollingInterval } = this.state\n\n if (channel) { channel.unsubscribe() }\n cable.disconnect()\n if (pollingInterval) { clearInterval(pollingInterval) }\n }\n\n public onReceived = (data: IExtStreamPayload) => {\n const { handleRefreshReport } = this.props\n const mapped = {\n message: data.message,\n task: data.task,\n progress: data.progress,\n taskProgress: data.task_progress,\n complete: data.complete,\n timestamp: new Date(),\n }\n\n if (handleRefreshReport && mapped.complete) {\n handleRefreshReport()\n }\n\n this.setState({ status: mapped })\n }\n\n public pollingCheck = () => {\n const { status } = this.state\n const { handleRefreshReport } = this.props\n const now = new Date()\n const statusExpireTime = new Date(now.getTime() - MAX_WAIT)\n\n if (!handleRefreshReport) { return }\n\n if (!status || status.timestamp < statusExpireTime) {\n handleRefreshReport()\n }\n }\n\n public renderStatus() {\n const { status } = this.state\n if (!status) { return }\n\n const { message, task, progress, taskProgress, complete } = status\n const taskPercent = this.displayPercent(taskProgress)\n const overallPercent = this.displayPercent(progress)\n\n if (complete) { return }\n\n return (\n
\n
\n {message}:{' '}\n {task} {taskProgress > 0 ? `(${taskPercent})` : ''}\n
\n
\n \n {overallPercent}\n
\n
\n
\n )\n }\n\n public render() {\n const { title, subtitle } = this.props\n\n return (\n
\n \n {this.renderStatus()}\n \n
\n )\n }\n\n private displayPercent(percent: number): string {\n return `${Math.round(percent * 100)}%`\n }\n}\n\nexport { ReportBuildStatus }\n","import { pluralize } from '../../lib/pluralize'\nimport * as React from 'react'\nimport * as API from '../../../lib/types/api'\nimport { historyReportPurchasePath } from '../../lib/constants'\nimport { localFetch } from '../../lib/local_fetch'\nimport { Customer } from '../../UserProfile/lib/customer'\nimport { HistoryReport as Report } from '../lib/HistoryReport'\nimport { HistoryReportConfirmation } from './HistoryReportConfirmation'\nimport { HistoryReportErrors } from './HistoryReportErrors'\nimport { ReportBuildStatus } from './ReportBuildStatus'\n\ninterface IProps {\n report: API.IHistoryReport\n couponCode?: string\n}\n\ninterface IState {\n report: Report\n customer?: Customer\n}\n\nconst CompletedReport = (props: { report: Report }) => {\n const { report } = props\n\n return (\n
\n

\n Your Report is Complete\n

\n

\n Your report with {report.locationCount} {pluralize('property', report.locationCount)} has been generated.\n

\n
\n \n
\n \n \n Download Report\n \n
\n )\n}\n\nclass HistoryReport extends React.Component {\n constructor(props: IProps) {\n super(props)\n\n this.state = {\n report: new Report(props.report),\n }\n }\n\n public componentDidMount() {\n this.refreshReport()\n this.refreshCustomer()\n }\n\n public refreshReport = async () => {\n const { report } = this.state\n this.setState({\n report: await Report.fetch(report.id),\n })\n }\n\n public runReportGenerator = async () => {\n const { report } = this.state\n const postData = {\n history_report: {\n generate_report: true,\n },\n }\n const response = await localFetch(historyReportPurchasePath(report.id), {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n },\n body: JSON.stringify(postData),\n })\n\n if (response.ok) {\n const json = await response.json()\n const newReport = new Report(json)\n\n this.setState({ report: newReport })\n } else {\n this.refreshReport()\n this.refreshCustomer()\n }\n }\n\n public render() {\n const { couponCode } = this.props\n const { report, customer } = this.state\n\n if (report.isValidating()) {\n return(\n \n )\n } else if (report.isWorking()) {\n return(\n \n )\n } else if (report.isFailed()) {\n return \n } else if (report.waitingForConfirmation()) {\n return (\n \n )\n } else {\n return \n }\n }\n\n private refreshCustomer = async () => {\n this.setState({\n customer: await Customer.fetch(),\n })\n }\n}\n\nexport { HistoryReport }\n","/* @license\nPapa Parse\nv5.4.1\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=f.IS_PAPA_WORKER||!1,a={},u=0,b={parse:function(e,t){var r=(t=t||{}).dynamicTyping||!1;J(r)&&(t.dynamicTypingFunction=r,r={});if(t.dynamicTyping=r,t.transform=!!J(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var i=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(r=f.URL||f.webkitURL||null,i=s.toString(),b.BLOB_URL||(b.BLOB_URL=r.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",i,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var r,i;return t.onmessage=_,t.id=u++,a[t.id]=t}();return i.userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=J(t.step),t.chunk=J(t.chunk),t.complete=J(t.complete),t.error=J(t.error),delete t.worker,void i.postMessage({input:e,config:t,workerId:i.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?(e=function(e){if(65279===e.charCodeAt(0))return e.slice(1);return e}(e),n=t.download?new l(t):new p(t)):!0===e.readable&&J(e.read)&&J(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,r=!1,i=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(r=t.skipEmptyLines);\"string\"==typeof t.newline&&(y=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");i=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);(\"boolean\"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(o=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\\-@\\t\\r].*$/)}();var u=new RegExp(Q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return h(null,e,r);if(\"object\"==typeof e[0])return h(i||Object.keys(e[0]),e,r)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||i),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),h(e.fields||[],e.data||[],r);throw new Error(\"Unable to serialize unrecognized input\");function h(e,t,r){var i=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(J(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!J(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){J(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var i;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),h.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(i=new XMLHttpRequest,this._config.withCredentials&&(i.withCredentials=this._config.withCredentials),n||(i.onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)),i.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)i.setRequestHeader(t,e[t])}if(this._config.chunkSize){var r=this._start+this._config.chunkSize-1;i.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+r)}try{i.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===i.status&&this._chunkError()}},this._chunkLoaded=function(){4===i.readyState&&(i.status<200||400<=i.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:i.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(i),this.parseChunk(i.responseText)))},this._chunkError=function(e){var t=i.statusText||e;this._sendError(new Error(t))}}function c(e){var i,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),h.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((i=new FileReader).onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function p(e){var r;h.call(this,e=e||{}),this.stream=function(e){return r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=r.substring(0,t),r=r.substring(t)):(e=r,r=\"\"),this._finished=!r,this.parseChunk(e)}}}function g(e){h.call(this,e=e||{});var t=[],r=!0,i=!1;this.pause=function(){h.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){h.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){i&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=v(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=v(function(){this._streamCleanUp(),i=!0,this._streamData(\"\")},this),this._streamCleanUp=v(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function r(m){var a,o,u,i=Math.pow(2,53),n=-i,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,h=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,t=this,r=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(J(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;r+=e.data.length,m.preview&&r>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){return c&&u&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),u=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return!y(e)})),_()&&function(){if(!c)return;function e(e,t){J(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t=l.length?\"__parsed_extra\":l[r]),m.transform&&(s=m.transform(s,n)),s=v(n,s),\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+r,f+t):r=i.length/2?\"\\r\\n\":\"\\r\"}(e,i)),u=!1,m.delimiter)J(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,r,i,n){var s,a,o,u;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var h=0;h=N)return L(!0)}else for(S=W,W++;;){if(-1===(S=i.indexOf(z,S+1)))return r||h.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:u.length,index:W}),T();if(S===n-1)return T(i.substring(W,S).replace(C,z));if(z!==K||i[S+1]!==K){if(z===K||0===S||i[S-1]!==K){-1!==w&&w=N)return L(!0);break}h.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:u.length,index:W}),S++}}else S++}return T();function I(e){u.push(e),d=W}function A(e){var t=0;if(-1!==e){var r=i.substring(S+1,e);r&&\"\"===r.trim()&&(t=r.length)}return t}function T(e){return r||(void 0===e&&(e=i.substring(W)),f.push(e),W=n,I(f),o&&F()),L()}function D(e){W=e,I(f),f=[],R=i.indexOf(P,W)}function L(e){return{data:u,errors:h,meta:{delimiter:M,linebreak:P,aborted:H,truncated:!!e,cursor:d+(t||0)}}}function F(){q(L()),u=[],h=[]}},this.abort=function(){H=!0},this.getCharIndex=function(){return W}}function _(e){var t=e.data,r=a[t.workerId],i=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){i=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(J(r.userStep)){for(var s=0;s {\n public static defaultProps: Partial = {\n submitText: 'Save',\n }\n\n public constructor(props: IProps) {\n super(props)\n\n const { location } = props\n\n this.state = {\n location: { ...location },\n showLatlon: false,\n submitted: false,\n }\n }\n\n public handleChange = (event: React.ChangeEvent) => {\n const { location } = this.state\n const newLocation = { ...location }\n\n newLocation[event.target.name as keyof ILocation] = event.target.value\n\n this.setState({ location: newLocation })\n }\n\n public onSubmit = (event: React.SyntheticEvent) => {\n const { rowNumber, onSubmit } = this.props\n const { location } = this.state\n\n event.preventDefault()\n this.setState({ submitted: true })\n onSubmit({ rowNumber, location })\n }\n\n public toggleLatlonFields = () => {\n this.setState((prevState) => (\n {\n showLatlon: !prevState.showLatlon,\n }\n ))\n }\n\n public renderLatlonFields() {\n const { location } = this.state\n\n return (\n
\n
\n
\n \n \n
\n\n
\n \n \n
\n
\n\n \n Optionally, you can provide a Latitude and Longitude. Leave these blank\n if you want us to look this up for you from the address above.\n \n
\n )\n }\n\n public renderShowLatlonPrompt() {\n return(\n
\n \n I want to specify the latitude and longitude\n \n
\n )\n }\n\n public render() {\n const { submitText } = this.props\n const {\n location,\n showLatlon,\n submitted,\n } = this.state\n\n return (\n
\n
\n \n \n \n This will be used in the generated report to identify the property.\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n\n {showLatlon ? this.renderLatlonFields() : this.renderShowLatlonPrompt()}\n\n \n
\n )\n }\n}\n\nexport { HistoryLocationForm }\n","import * as React from 'react'\nimport { ILocationCSVRow } from '../lib/types'\n\ninterface IProps {\n locations: ILocationCSVRow[]\n onRemoveRow({ rowNumber }: { rowNumber: number }): void\n}\n\nclass HistoryReportLocationsTable extends React.Component {\n public onRemoveRow = (rowNumber: number, event: React.SyntheticEvent) => {\n const { onRemoveRow } = this.props\n event.preventDefault()\n onRemoveRow({ rowNumber })\n }\n\n public renderLocation(row: ILocationCSVRow) {\n const { data: location, rowNumber: id } = row\n\n return (\n \n {location.Name}\n {location.Address}\n {location.City}\n {location.State}\n {location.Zip}\n {location.Latitude}\n {location.Longitude}\n \n \n \n \n \n \n )\n }\n\n public render() {\n const { locations } = this.props\n const rows = locations.map((location) => this.renderLocation(location))\n\n if (!locations.length) { return null }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {rows}\n \n
NameAddressCityStateZipLatitudeLongitude\n
\n )\n }\n}\n\nexport { HistoryReportLocationsTable }\n","import * as CSV from 'papaparse'\nimport * as React from 'react'\nimport { RadioButtonGroup } from '../../common/RadioButtonGroup'\nimport { historyReportCreatePath } from '../../lib/constants'\nimport { localFetch } from '../../lib/local_fetch'\nimport { HistoryReport } from '../lib/HistoryReport'\nimport { ILocation, ILocationCSVRow } from '../lib/types'\nimport { HistoryLocationForm } from './HistoryLocationForm'\nimport { HistoryReportLocationsTable } from './HistoryReportLocationsTable'\n\ntype HistoryReportFormMode = 'single' | 'multi'\ninterface IProps {\n message: string\n defaultMode: HistoryReportFormMode\n hailHistoryCredits: number | 'infinite'\n}\n\ninterface IState {\n locations: ILocationCSVRow[]\n CSVErrors: CSV.ParseError[]\n report?: HistoryReport\n mode: HistoryReportFormMode\n}\n\nconst formModes: { name: HistoryReportFormMode, label: string }[] = [\n { name: 'single', label: 'Single Property Report' },\n { name: 'multi', label: 'Multiple Property Report' },\n]\n\nclass HistoryReportForm extends React.Component {\n public static defaultProps: Partial = {\n defaultMode: 'single',\n }\n\n constructor(props: IProps) {\n super(props)\n this.state = {\n locations: [],\n CSVErrors: [],\n mode: props.defaultMode,\n }\n }\n\n public buildLocation(): ILocation {\n return {\n Name: '',\n Address: '',\n City: '',\n State: '',\n Zip: '',\n Latitude: '',\n Longitude: '',\n }\n }\n\n public fileSelected = (event: React.ChangeEvent) => {\n CSV.parse(\n (event.target.files as FileList)[0],\n {\n header: true,\n skipEmptyLines: true,\n complete: (results) => {\n this.setState({\n locations: results.data.map( (data, i) =>\n ({ rowNumber: i, data }),\n ),\n CSVErrors: results.errors,\n })\n },\n },\n )\n }\n\n public resetForm = () => {\n this.setState({\n locations: [],\n CSVErrors: [],\n })\n }\n\n public removeRow = ({ rowNumber }: { rowNumber: number }) => {\n const { locations } = this.state\n\n this.setState({\n locations: locations.filter((item) => item.rowNumber != rowNumber),\n })\n }\n\n public addSingleProperty = ({ location }: { location: ILocation }) => {\n const { locations } = this.state\n\n this.setState({\n locations: [...locations, { rowNumber: locations.length, data: location }],\n }, () => this.saveReport())\n }\n\n public saveReport = async () => {\n const response = await localFetch(historyReportCreatePath, {\n method: 'POST',\n body: JSON.stringify({\n csv_locations: this.csvData(),\n }),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n })\n const json = await response.json()\n const report = new HistoryReport(json)\n\n window.location.href = `./${report.id}`\n }\n\n public handleFormModeChanged = (mode: HistoryReportFormMode) => {\n this.setState({ mode })\n }\n\n public csvData(): string {\n const { locations } = this.state\n return CSV.unparse(locations.map((row) => row.data), { header: true })\n }\n\n public renderErrors() {\n const { CSVErrors } = this.state\n\n if (CSVErrors.length) {\n return
{CSVErrors}
\n } else {\n return ''\n }\n }\n\n public renderSingleForm() {\n return (\n
\n

Enter Property Address

\n

\n For reporting on a single property simply fill out the form below.\n

\n \n
\n )\n }\n\n public renderMultiForm() {\n return (\n
\n

Upload a CSV of Properties

\n

\n For reporting on multiple properties we provide a CSV upload tool.\n Simply download our CSV template, make your edits in Excel, and\n then upload the CSV file below.\n

\n
\n
\n
Step 1:
\n
\n Download our CSV Template\n
\n
\n
\n
Step 2:
\n
\n Make your edits in Excel\n
\n
\n
\n
Step 3:
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n )\n }\n\n public renderForm() {\n const { hailHistoryCredits } = this.props\n const { mode } = this.state\n let renderedForm\n\n if (mode == 'single') {\n renderedForm = this.renderSingleForm()\n } else if (mode == 'multi') {\n renderedForm = this.renderMultiForm()\n }\n\n return (\n
\n
\n
\n
\n \n prefix=\"history-report-form-mode\"\n options={formModes}\n selected={mode}\n onChange={this.handleFormModeChanged}\n />\n
\n
\n
\n Credit Balance: {hailHistoryCredits === 'infinite' ? <>∞ : hailHistoryCredits}\n
\n {hailHistoryCredits === 'infinite' ? '' : }\n
\n
\n\n {this.renderErrors()}\n {renderedForm}\n
\n
\n )\n }\n\n public renderData() {\n const { locations } = this.state\n\n return (\n
\n

Review Imported Property Data

\n

\n We found {locations.length} properties in your upload. You can review\n them below before continuing.\n

\n
\n
\n \n
\n
\n \n
\n
\n \n
\n )\n }\n\n public render() {\n const { locations, mode } = this.state\n\n if (locations.length == 0 || mode == 'single') {\n return this.renderForm()\n } else {\n return this.renderData()\n }\n }\n}\n\nexport { HistoryReportForm }\n","import * as React from 'react'\n\ninterface IProps {\n property: HAT.IProperty\n}\n\nexport const PropertyTooltip: React.FunctionComponent = ({ property }) => (\n
\n
\n {property.name} ({property.account_name})\n
\n
\n {property.group_name}\n
\n
\n {property.address}\n
\n
\n {property.city}, {property.state} {property.zip}\n
\n
\n {property.latitude}, {property.longitude}\n
\n
\n)\n","export type HailSize = 0.75 | 1.00 | 1.25 | 1.50 | 1.75 | 2.00 | 2.25 | 2.50 | 2.75 | 3.00 | 3.25 | 3.50 | 3.75 | 4.00\ntype Color = [number, number, number]\n\nconst COLOR_STOPS: [HailSize, Color][] = [\n [0.75, [0xff, 0xf8, 0x78]],\n [1.00, [0xff, 0xea, 0x00]],\n [1.25, [0xff, 0xc4, 0x00]],\n [1.50, [0xff, 0x9d, 0x00]],\n [1.75, [0xff, 0x7b, 0x00]],\n [2.00, [0xff, 0x4d, 0x00]],\n [2.25, [0xff, 0x26, 0x00]],\n [2.50, [0xff, 0x00, 0x00]],\n [2.75, [0xb0, 0x12, 0x00]],\n [3.00, [0x87, 0x1d, 0x00]],\n [3.25, [0x6c, 0x00, 0x75]],\n [3.50, [0xb0, 0x00, 0x90]],\n [3.75, [0xeb, 0x00, 0xd3]],\n [4.00, [0xfc, 0x63, 0xff]],\n]\n\nexport function colorForSize(lookupSize: HailSize): Color {\n return (\n COLOR_STOPS.find((entry) => entry[0] == lookupSize) || [null, [0, 0, 0]]\n )[1]\n}\n\nexport function colorStringForSize(lookupSize: HailSize): string {\n return `rgb(${colorForSize(lookupSize).map((color) => color.toString(10)).join(', ')})`\n}\n\nexport function formatted(size: HailSize): string {\n return `${size.toFixed(2)}\"`\n}\n","import { RGBAColor } from '@deck.gl/core'\nimport { GeoJsonLayer, ScatterplotLayer } from '@deck.gl/layers'\nimport DeckGL from '@deck.gl/react'\nimport HAT from 'hat'\nimport * as React from 'react'\nimport { PropertyTooltip } from './PropertyTooltip'\nimport { StaticMap } from 'react-map-gl'\nimport * as HailSize from '../../../lib/hail_size'\nimport * as Constants from '../../lib/constants'\nimport { isoDateString } from '../../lib/date'\n\n// The types that get loaded for this aren't right\nconst UntypedDeckGL = DeckGL as any\n\nconst TOOLTIP_OFFSET = 10\nconst MAP_STYLE = 'mapbox://styles/mapbox/light-v9'\nconst PROPERTY_BUBBLE_COLOR: RGBAColor = [0x62, 0xb0, 0x31]\nconst INITIAL_VIEW_STATE = {\n width: '100%',\n height: '100%',\n latitude: 39.58,\n longitude: -97.89,\n zoom: 4.6,\n}\n\ninterface IViewState {\n width: string\n height: string\n latitude: number\n longitude: number\n zoom: number\n}\n\ninterface IProps {\n stormDates: Date[]\n initialViewState: IViewState\n propertyData?: string\n}\n\ninterface IState {\n x?: number\n y?: number\n hoveredProperty?: HAT.IProperty\n hoveredSwath?: IHoveredSwath\n}\n\ninterface IHoveredSwath {\n date: Date\n properties: { value: HailSize.HailSize }\n}\n\ninterface IGeoJSONFeature {\n properties: { value: HailSize.HailSize }\n}\n\nexport class Map extends React.Component {\n public static defaultProps: Partial = {\n initialViewState: INITIAL_VIEW_STATE,\n }\n\n public constructor(props: IProps) {\n super(props)\n\n this.state = {\n }\n }\n\n public render() {\n const { initialViewState } = this.props\n\n return (\n \n \n\n {this.renderTooltip}\n \n )\n }\n\n private renderTooltip = () => {\n const { x, y } = this.state\n\n if (!this.showTooltip() || !x || !y) { return }\n\n return (\n
\n {this.renderPropertyTooltipInfo()}\n {this.renderSwathTooltipInfo()}\n
\n )\n }\n\n private renderPropertyTooltipInfo() {\n const { hoveredProperty } = this.state\n\n if (!hoveredProperty) { return }\n\n return \n }\n\n private renderSwathTooltipInfo() {\n const { hoveredSwath } = this.state\n\n if (!hoveredSwath) { return }\n const hailSize = hoveredSwath.properties.value\n\n const swatchStyles = {\n width: '1.25em',\n height: '1.25em',\n backgroundColor: HailSize.colorStringForSize(hailSize),\n }\n\n return (\n
\n
\n
\n\n \n Hail Size: {HailSize.formatted(hailSize)}\n \n
\n
{hoveredSwath.date.toLocaleDateString()}
\n
\n )\n }\n\n private handleHoverProperty = ({ x, y, object }: {x: number, y: number, object?: HAT.IProperty }) => {\n this.setState({ x, y, hoveredProperty: object })\n }\n\n private handleHoverSwath = (date: Date, { x, y, object }: {x: number, y: number, object?: any }) => {\n this.setState({ x, y, hoveredSwath: object ? { ...object, date } : undefined })\n }\n\n private renderLayers() {\n const { stormDates } = this.props\n\n return [\n ...stormDates.map((date) => this.stormLayer(date)),\n this.pointLayer(),\n ].filter((e) => e !== null)\n }\n\n private showTooltip(): boolean {\n const { hoveredSwath, hoveredProperty } = this.state\n\n return !!(hoveredSwath || hoveredProperty)\n }\n\n private pointLayer() {\n let { propertyData } = this.props\n\n if (!propertyData) {\n propertyData = '{}'\n }\n\n return new ScatterplotLayer({\n id: 'properties',\n data: propertyData,\n pickable: true,\n opacity: 0.8,\n stroked: false,\n filled: true,\n radiusMinPixels: 4,\n getPosition: (p) => [p.longitude, p.latitude],\n getRadius: 4,\n getFillColor: PROPERTY_BUBBLE_COLOR,\n onHover: this.handleHoverProperty,\n })\n }\n\n private stormLayer(stormDate: Date) {\n return new GeoJsonLayer({\n id: `swath-storm-${isoDateString(stormDate)}`,\n data: Constants.stormSwathPath(stormDate),\n opacity: 0.6,\n stroked: false,\n filled: true,\n wireframe: false,\n getFillColor: (f) => HailSize.colorForSize(f.properties.value),\n pickable: true,\n onHover: this.handleHoverSwath.bind(this, stormDate),\n })\n }\n}\n","import { pluralize } from '../../lib/pluralize'\nimport * as React from 'react'\n\nimport { initDateFromISO, isoDateString } from '../../lib/date'\n\ninterface IProps {\n stormDate: string\n pinnedDates: string[]\n title: string\n onStormDateChange: (newDate: string) => void\n onStormDatePinnedToggle: (pinDate: string) => void\n}\n\ninterface IState {\n}\n\nexport class MapNavigation extends React.Component {\n public static defaultProps: Partial = {\n title: 'Storm Map',\n }\n\n public render() {\n const { title, stormDate, pinnedDates } = this.props\n const isPinned = pinnedDates.includes(stormDate)\n\n return (\n
\n
\n
\n

\n {title}\n

\n
\n
\n
\n \n ←\n \n \n \n →\n \n \n \n \n
\n {this.renderPinnedNotice()}\n
\n
\n
\n )\n }\n\n private renderPinnedNotice() {\n const { pinnedDates } = this.props\n\n if (!pinnedDates.length) { return }\n\n const formattedDates: string = pinnedDates\n .sort()\n .map((dateString) => (initDateFromISO(dateString)).toLocaleDateString())\n .join(', ')\n\n return (\n
\n \n Showing {pinnedDates.length} pinned {pluralize('storm', pinnedDates.length)}\n \n
\n )\n }\n\n private handleStormDateChange = (event: React.ChangeEvent) => {\n const newDateString = event.target.value\n if (!newDateString) { return }\n\n this.setStormDate(newDateString)\n }\n\n private handleStormDatePinnedToggle = () => {\n const { stormDate, onStormDatePinnedToggle } = this.props\n\n onStormDatePinnedToggle(stormDate)\n }\n\n private traverseStormDate(movement: number) {\n const { stormDate } = this.props\n const newDate = initDateFromISO(stormDate)\n\n newDate.setDate(newDate.getDate() + movement)\n this.setStormDate(isoDateString(newDate))\n }\n\n private setStormDate(stormDateString: string) {\n const { onStormDateChange } = this.props\n let newDateString = stormDateString\n\n if (stormDateString > this.maxStormDate()) {\n newDateString = this.maxStormDate()\n }\n\n onStormDateChange(newDateString)\n }\n\n private maxStormDate(): string {\n return this.yesterday()\n }\n\n private yesterday(): string {\n const date = new Date()\n date.setDate(date.getDate() - 1)\n return isoDateString(date)\n }\n}\n","import * as React from 'react'\nimport { initDateFromISO, isoDateString } from '../../lib/date'\nimport { Map } from './Map'\nimport { MapNavigation } from './MapNavigation'\n\ninterface IProps {\n initialDate: string\n staticPropertyData?: string\n title?: string\n}\n\ninterface IState {\n stormDate: string\n pinnedDates: string[]\n}\n\nexport class MapPage extends React.Component {\n public constructor(props: IProps) {\n super(props)\n\n this.state = {\n stormDate: isoDateString(initDateFromISO(props.initialDate)),\n pinnedDates: [],\n }\n }\n\n public render() {\n const { title } = this.props\n const { stormDate, pinnedDates } = this.state\n\n return (\n
\n
\n \n
\n
\n \n
\n
\n )\n }\n\n private selectedStormDates() {\n const { stormDate, pinnedDates } = this.state\n\n if (this.isDatePinned(stormDate)) {\n return pinnedDates\n } else {\n return [stormDate, ...pinnedDates]\n }\n }\n\n private isDatePinned(checkDate: string): boolean {\n const { pinnedDates } = this.state\n return pinnedDates.includes(checkDate)\n }\n\n private propertyData(): string {\n const { staticPropertyData } = this.props\n const { stormDate } = this.state\n\n if (staticPropertyData) {\n return staticPropertyData\n } else {\n return `/admin/properties.json?impacted_on=${stormDate}`\n }\n }\n\n private handleDateChange = (newDate: string) => {\n this.setState({ stormDate: newDate })\n }\n\n private handlePinnedDateToggle = (toggleDate: string) => {\n this\n .setState((prevState) => ({ pinnedDates: this.toggleInArray(prevState.pinnedDates, toggleDate) }))\n }\n\n private toggleInArray(ary: T[], item: T) {\n const newAry = ary.slice(0)\n const matchIndex = newAry.indexOf(item)\n\n if (matchIndex === -1) {\n newAry.push(item)\n } else {\n newAry.splice(matchIndex, 1)\n }\n\n return newAry\n }\n}\n","import React, { useState, useCallback, useEffect } from 'react'\nimport { WebMercatorViewport } from '@deck.gl/core'\nimport { IconLayer } from '@deck.gl/layers'\nimport DeckGL from '@deck.gl/react'\nimport HAT from 'hat'\nimport { StaticMap } from 'react-map-gl'\nimport { PropertyTooltip } from '../../Storm/components/PropertyTooltip'\nimport { fetchJSON } from '../../lib/local_fetch'\nimport { getBounds } from '../../lib/get_bounds'\n\n// The types that get loaded for this aren't right\nconst UntypedDeckGL = DeckGL as any\n\nconst TOOLTIP_OFFSET = 10\nconst MAP_STYLE = 'mapbox://styles/mapbox/streets-v11'\nconst INITIAL_VIEW_STATE = {\n width: '100%',\n height: '100%',\n latitude: 39.0,\n longitude: -95.0,\n zoom: 3.0,\n pitch: 0,\n bearing: 0,\n}\nconst VIEWPORT_CALCULATION_PARAMS = {\n width: 400,\n height: 250,\n}\nconst MAX_AUTO_ZOOM = 12\nconst RETRY_PROPERTY_FETCH_INTERVAL = 2000\n\ninterface IProps {\n propertyData: string\n}\n\ninterface IPosition {\n x: number\n y: number\n}\n\nconst Tooltip = ({\n position,\n property,\n}: {\n position: IPosition\n property: HAT.IProperty | null\n}) => {\n if (!property) {\n return null\n }\n\n const { x, y } = position\n\n return (\n \n \n
\n )\n}\n\nconst getProperties = async (url: string): Promise => {\n const result = await fetchJSON(url)\n if (result.success) {\n return result.success.filter((p) => p.latitude && p.longitude)\n } else {\n return []\n }\n}\n\nexport const PortalMap: React.FunctionComponent = ({\n propertyData,\n}) => {\n const [properties, setProperties] = useState([])\n const [viewState, setViewState] = useState(INITIAL_VIEW_STATE)\n const [hoveredProperty, setHoveredProperty] = useState(\n null,\n )\n const [tooltipPosition, setTooltipPosition] = useState({\n x: 0,\n y: 0,\n })\n\n const onViewStateChange = useCallback(({ viewState: newViewState }) => {\n setViewState(newViewState)\n }, [])\n\n const propertyLayer = new IconLayer({\n id: 'properties-icons',\n data: properties,\n pickable: true,\n getIcon: () => ({\n url: '/map-icons/blue-pin.png',\n width: 90,\n height: 81,\n }),\n getSize: 90,\n getPosition: (p) => [p.longitude, p.latitude],\n onHover: ({ x, y, object }) => {\n setHoveredProperty(object)\n setTooltipPosition({ x, y })\n },\n onClick: ({ object }) => {\n window.location.href = `/portal/properties/${object.id}`\n },\n })\n\n const fetchAndSetProperties = async () => {\n const newProperties = await getProperties(propertyData)\n if (newProperties.length) {\n setProperties(newProperties)\n } else {\n setTimeout(fetchAndSetProperties, RETRY_PROPERTY_FETCH_INTERVAL)\n }\n }\n\n useEffect(() => { fetchAndSetProperties() }, [])\n\n // Autozoom to displayed properties once loaded\n useEffect(() => {\n if (!properties.length) {\n return\n }\n const bounds = getBounds(properties).map((point) => [\n point.longitude,\n point.latitude,\n ])\n const viewport = new WebMercatorViewport(VIEWPORT_CALCULATION_PARAMS)\n const { latitude, longitude, zoom } = viewport.fitBounds(bounds) as any\n setViewState({\n ...viewState,\n latitude,\n longitude,\n zoom: zoom > MAX_AUTO_ZOOM ? MAX_AUTO_ZOOM : zoom,\n })\n }, [properties])\n\n return (\n
\n \n \n \n \n
\n )\n}\n","import * as ActiveStorage from 'activestorage'\nimport 'whatwg-fetch'\n\nimport * as HistoryReport from '../components/HistoryReport'\nimport setupReact from '../components/react-setup'\nimport * as Storm from '../components/Storm'\nimport * as UserProfile from '../components/UserProfile'\nimport * as PortalMap from '../components/PortalMap'\n\nconst ReactComponents = {\n ...HistoryReport,\n ...UserProfile,\n ...Storm,\n ...PortalMap,\n}\n\ndocument.addEventListener('DOMContentLoaded', () => setupReact(ReactComponents))\n\nActiveStorage.start()\n"],"names":["lightingShader$1","INITIAL_MODULE_OPTIONS","convertColor","color","intensity","component","getLightSourceUniforms","_ref","ambientLight","pointLights","directionalLights","lightSourceUniforms","pointLight","index","directionalLight","getUniforms","opts","lightSources","light","lights","lightingShader","getMaterialUniforms","material","ambient","diffuse","shininess","specularColor","x","gouraudLighting","TRACE_RENDER_LAYERS","CompositeLayer","Layer","layer","context","updateObject","info","object","subLayerId","data","DefaultLayerClass","overridingProps","row","sourceObject","sourceObjectIndex","accessor","objectInfo","sublayerProps","_this$props$updateTri","opacity","pickable","visible","parameters","getPolygonOffset","highlightedObjectIndex","autoHighlight","highlightColor","coordinateSystem","coordinateOrigin","wrapLongitude","positionFormat","modelMatrix","extensions","fetch","operation","newProps","overridingSublayerProps","overridingSublayerTriggers","sublayerId","propTypes","PROP_TYPES_SYMBOL","subLayerPropTypes","key","propType","extension","passThroughProps","updateParams","forceUpdate","subLayers","shouldUpdate","subLayersList","flatten","debug","_defineProperty","Tesselator","attributes","defaultTypedArrayManager","buffers","getGeometry","geometryBuffer","dataChanged","normalize","assert","dataRange","startRow","endRow","value","getAccessorFromBuffer","instanceCount","copy","_attributeDefs","typedArrayManager","name","def","visitor","iterable","createIterable","geometry","indexStarts","vertexStarts","normalizedData","dataIndex","normalizedGeometry","Buffer","byteStride","bufferValue","elementStride","vertexEnd","vs$2","fs$4","DEFAULT_COLOR","defaultProps","ScatterplotLayer","vs","fs","project32","picking","params","_this$state$model","gl","uniforms","radiusUnits","radiusScale","radiusMinPixels","radiusMaxPixels","stroked","filled","billboard","antialiasing","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","UNIT","positions","Model","Geometry","WINDING","modifyPolygonWindingDirection","points","direction","options","getPolygonWindingDirection","reversePolygon","getPolygonSignedArea","start","end","dim","area","i","j","size","numPoints","numSwaps","b1","b2","tmp","push","target","source","startIndex","isDuplicate","getPointAtIndex","offset","out","startI","intersect","a","b","edge","bbox","t","snap","bitCode","p","code","cutPolylineByGrid","broken","gridResolution","gridOffset","endIndex","part","result","codeB","cell","getGridCell","scratchPoint","codeAlt","moveToNeighborCell","TYPE_INSIDE","TYPE_BORDER","concatInPlace","arr1","arr2","cutPolygonByGrid","holeIndices","edgeTypes","queue","pos","types","holes","getBoundingBox","parts","bisectPolygon","polygonLow","polygonHigh","polygon","resultLow","resultHigh","typesLow","typesHigh","side","type","prev","prevSide","prevType","lowPointCount","highPointCount","left","bottom","minX","maxX","minY","maxY","y","DEFAULT_MAX_LATITUDE","cutPolylineByMercatorBounds","newPositions","wrapLongitudesForShortestPath","shiftLongitudesIntoRange","cutPolygonByMercatorBounds","newHoleIndices","srcStartIndex","targetIndex","ringIndex","srcEndIndex","targetStartIndex","splitIndex","findSplitIndex","insertPoleVertices","maxLat","pointIndex","lat","maxLatitude","firstLng","lastLng","prevLng","lng","delta","refLng","pointCount","normalizePath","path","flatPath","length","START_CAP","END_CAP","INVALID","PathTesselator","attributeName","buffer","isCut","subPath","geometrySize","segmentTypes","isPathClosed","vertexStart","ptIndex","positionSize","lastPointIndex","vs$1","fs$3","ATTRIBUTE_TRANSITION","chunk","PathLayer","args","props","changeFlags","attributeManager","pathTesselator","d","objectIndex","jointRounded","capRounded","miterLimit","widthUnits","widthScale","widthMinPixels","widthMaxPixels","SEGMENT_INDICES","SEGMENT_POSITIONS","attribute","earcutModule","earcut","hasHoles","outerLen","outerNode","linkedList","triangles","invSize","eliminateHoles","earcutLinked","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","again","ear","pass","indexCurve","stop","next","isEarHashed","isEar","cureLocalIntersections","splitEarcut","c","ax","bx","cx","ay","by","cy","x0","y0","x1","y1","pointInTriangle","minZ","zOrder","maxZ","n","intersects","locallyInside","isValidDiagonal","splitPolygon","len","list","getLeftmost","compareX","eliminateHole","hole","bridge","findHoleBridge","bridgeReverse","hx","hy","qx","m","mx","my","tanMin","tan","sectorContainsSector","sortLinked","q","e","tail","numMerges","pSize","qSize","inSize","leftmost","px","py","intersectsPolygon","middleInside","r","p1","p2","q1","q2","o1","sign","o2","o3","o4","onSegment","num","inside","a2","Node","an","bp","polygonArea","trianglesArea","sum","holeIndex","OUTER_POLYGON_WINDING","HOLE_POLYGON_WINDING","windingOptions","validate","getPositions","getHoleIndices","isNested","isSimple","isNestedRingClosed","simplePolygon","p0","isFlatRingClosed","copyNestedRing","windingDirection","copyFlatRing","srcLength","srcPositions","srcHoleIndices","polygonIndex","getPlaneArea","xIndex","yIndex","numVerts","permutePositions","zIndex","o","z","getSurfaceIndices","preproject","full3d","positionIndex","is3d","xy","xyArea","xzArea","yzArea","PolygonTesselator","fp64","IndexType","externalIndices","normalizedPolygon","Polygon.normalize","Polygon.getPositions","Polygon.getHoleIndices","subPolygon","geometryIndex","indexStart","indices","Polygon.getSurfaceIndices","polygonPositions","vertexValid","main","vsTop","vsSide","fs$2","f","SolidPolygonLayer","viewport","_full3d","COORDINATE_SYSTEM","hasFeatures","FEATURES","noAlloc","extruded","wireframe","elevationScale","topModel","sideModel","polygonTesselator","renderUniforms","oldProps","_this$state$models","model","id","shaders","replaceInRange","getIndex","replace","count","replaceStart","replaceEnd","endChunk","binaryToFeatureForAccesor","featureIndex","getPropertiesForIndex","propertiesIndex","numericPropsIndex","feature","prop","calculatePickingColors","geojsonBinary","encodePickingColor","pickingColors","featureIds","pickingColor","fs$1","DEFAULT_BUFFER","EMPTY_ARRAY","MultiIconLayer","IconLayer","outlineColor","log","sdf","smoothing","outlineWidth","outlineBuffer","iconManager","icons","icon","INF","TinySDF","fontSize","radius","cutoff","fontFamily","fontWeight","fontStyle","canvas","ctx","char","glyphAdvance","actualBoundingBoxAscent","actualBoundingBoxDescent","actualBoundingBoxLeft","actualBoundingBoxRight","glyphTop","glyphLeft","glyphWidth","glyphHeight","width","height","glyph","gridInner","gridOuter","imgData","edt","gridSize","v","edt1d","grid","stride","k","s","qr","MISSING_CHAR_WIDTH","SINGLE_LINE","nextPowOfTwo","number","buildMapping","characterSet","getFontWidth","fontHeight","maxCanvasWidth","mapping","xOffset","yOffset","rowHeight","getTextWidth","text","_mapping$character","character","breakAll","maxWidth","iconMapping","rowStartCharIndex","rowOffsetLeft","textWidth","breakWord","groupStartCharIndex","groupEndCharIndex","groupWidth","autoWrapping","wordBreak","transformRow","line","leftOffsets","rowSize","frame","transformParagraph","paragraph","lineHeight","characters","numCharacters","rowWidth","autoWrappingEnabled","rowOffsetTop","lineStartIndex","lineEndIndex","rows","rowIndex","rowStart","rowEnd","_iconMapping$char","layoutOffsetY","getTextFromBuffer","startIndices","bytesPerElement","elementOffset","characterCount","autoCharacterSet","texts","codes","ArrayType","codesAtIndex","charCode","LRUCache","limit","getDefaultCharacterSet","charSet","DEFAULT_FONT_SETTINGS","MAX_CANVAS_WIDTH","BASELINE_SCALE","HEIGHT_SCALE","CACHE_LIMIT","cache","getNewChars","cacheKey","newCharSet","cachedFontAtlas","populateAlphaChannel","alphaChannel","imageData","setTextStyle","setFontAtlasCacheLimit","FontAtlasManager","fontAtlas","canvasHeight","tinySDF","TextBackgroundLayer","sizeScale","sizeUnits","sizeMinPixels","sizeMaxPixels","getLineWidth","padding","TEXT_ANCHOR","ALIGNMENT_BASELINE","DEFAULT_LINE_HEIGHT","TextLayer","getTextAnchor","getAlignmentBaseline","anchorX","anchorY","offsets","rowOffset","fontSettings","fontAtlasManager","fontProps","_attributes","textBuffer","getText","numInstances","_","scale","texture","styleVersion","_dataDiff","getPosition","getColor","getSize","getAngle","getPixelOffset","getBackgroundColor","getBorderColor","getBorderWidth","backgroundPadding","background","transitions","updateTriggers","CharactersLayerClass","BackgroundLayerClass","POINT_LAYER","LINE_LAYER","POLYGON_LAYER","getDefaultProps","forwardProps","sourceKey","targetKey","getGeojsonFeatures","geojson","separateGeojsonFeatures","features","wrapFeature","separated","geometries","subGeometry","separateGeometry","sourceFeature","sourceFeatureIndex","coordinates","pointFeatures","lineFeatures","polygonFeatures","polygonOutlineFeatures","validateGeometry","point","COORDINATE_NEST_LEVEL","nestLevel","createEmptyLayerProps","getCoordinates","createLayerPropsFromFeatures","featuresDiff","layerProps","createLayerPropsFromBinary","lines","polygons","customPickingColors","FEATURE_TYPES","GeoJsonLayer","binary","newFeatures","oldFeatures","partialFeatures","sourceLayer","ft","pointLayerIdPrefix","sourceIsPoints","PolygonFillLayer","forwardedProps","useLineColor","polygonStrokeLayerId","lineStringsLayerId","PolygonStrokeLayer","LineStringsLayer","pointType","pointLayers","PointLayerMapping","PointsLayer","pointsLayerProps","instancePickingColors","rest","polygonFillLayer","lineLayers","global","factory","exports","this","createCommonjsModule","fn","module","sparkMd5","undefined","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","state","lo","hi","md51_array","rhex","hex","clamp","val","from","to","begin","targetArray","sourceArray","toUtf8","str","utf8Str2ArrayBuffer","returnUInt8Array","buff","arr","arrayBuffer2Utf8Str","concatenateArrayBuffers","first","second","hexToBinaryString","bytes","SparkMD5","contents","raw","ret","content","hash","classCallCheck","instance","Constructor","createClass","defineProperties","descriptor","protoProps","staticProps","fileSlice","FileChecksum","file","callback","_this","event","binaryDigest","base64digest","getMetaValue","element","findElement","findElements","root","selector","elements","toArray$1","dispatchEvent","eventInit","disabled","bubbles","cancelable","detail","BlobRecord","checksum","url","response","direct_upload","_xhr","responseType","BlobUpload","blob","_blob$directUploadDat","headers","status","DirectUpload","delegate","error","notify","upload","methodName","_len","messages","_key","DirectUploadController","input","hiddenInput","progress","xhr","_this2","inputSelector","DirectUploadsController","form","controllers","startNextController","controller","processingAttribute","submitButtonsByForm","started","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","inputs","disable","enable","submitForm","button","_button","autostart","g","support","isDataView","obj","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","items","iterator","Headers","header","oldValue","thisArg","consumed","body","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","promise","readBlobAsText","match","encoding","readArrayBufferAsText","buf","view","chars","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","ctrl","reParamSearch","reQueryString","split","parseHeaders","rawHeaders","preProcessedHeaders","Response","bodyInit","redirectStatuses","DOMException","message","init","request","abortXhr","fixUrl","names","pluralize","word","Customer","json","localFetch","customerPath","api","balance","currency","amount","_HistoryReport","withLocations","historyReportShowPath","errors","states","HistoryReport","gtag","priceStringFormatter","CreditPurchase","creditCurrencyKey","creditValue","couponCode","newCreditPurchasePath","mappedData","queryString","creditPurchasePath","purchase","price","dollars","CouponForm","React.Component","newCode","handleCouponCodeEntered","handleCancel","creditPurchase","currentCode","React.createElement","OrderDetails","Form","handleChangeQuantity","handlePurchase","prevState","handleCanceled","handleChangeCouponCode","purchaseQuantity","purchasing","creditBalance","includeBalance","showCouponForm","showConfirmation","DataManager","handlePurchased","nextProps","CreditBalances","customer","showPurchaseCreditForm","CreditPurchaseForm","ownKeys","enumerableOnly","keys","symbols","sym","_objectSpread2","_typeof","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_i","_arr","_n","_d","_s","_e","err","minLen","_arrayLikeToArray","usePrevious","ref","React","isUnknownObject","isPromise","isStripe","PLAIN_OBJECT_STR","isEqual","right","leftArray","rightArray","leftPlainObject","rightPlainObject","leftKeys","rightKeys","keySet","allKeys","l","pred","extractAllowedOptionsUpdates","prevOptions","immutableKeys","newOptions","isUpdated","INVALID_STRIPE_ERROR","validateStripe","maybeStripe","parseStripeProp","stripe","ElementsContext","parseElementsContext","useCase","CartElementContext","parseCartElementContext","Elements","rawStripeProp","children","parsed","_React$useState","_React$useState2","cart","setCart","_React$useState3","_React$useState4","cartState","setCartState","_React$useState5","_React$useState6","setContext","isMounted","safeSetContext","prevStripe","updates","anyStripe","PropTypes","useElementsContextWithUseCase","useCaseMessage","useCartElementContextWithUseCase","ElementsConsumer","_ref2","useAttachEvent","cb","cbDefined","cbRef","decoratedCb","capitalized","createElementComponent","isServer","displayName","ClientElement","className","_ref$options","onBlur","onFocus","onReady","onChange","onEscape","onClick","onLoadError","onLoaderStart","onNetworksChange","onCheckout","onLineItemClick","onConfirm","onCancel","onShippingAddressChange","onShippingRateChange","_useElementsContextWi","setElement","elementRef","domNode","_useCartElementContex","readyCallback","changeCallback","checkoutCallback","newElement","ServerElement","Element","CardElement","CARD_ELEMENT_STYLES","CreditCardForm","handleCardSaved","cardElement","token","Constants.creditCardPath","saveButtonLabel","saving","errorMessage","renderedError","handleCardSaveFailed","WrappedCreditCardForm","PasswordField","inputClassName","invalid","shown","additionalClasses","CreditCard","creditCardPath","V3_URL","V3_URL_REGEX","EXISTING_SCRIPT_MESSAGE","findScript","scripts","script","injectScript","headOrBody","registerWrapper","startTime","stripePromise","loadScript","initStripe","stripePromise$1","loadCalled","loadStripe","HAT","ProfileBillingInfo","showForm","creditCard","newState","updateState","HistoryReportCreditPurchase","handleCreditsPurchased","report","HistoryReportPurchase","purchased","rememberCard","handleRequestCreditForm","HistoryReportConfirmation","handlePurchaseReport","creditPrice","handleRefreshCustomer","creditPurchaseRequested","HistoryReportErrors","rowErrors","renderedErrors","rowNumber","slice","ActionCable","bind","me","now","secondsSince","ConnectionMonitor","connection","interval","max","min","time","message_types","protocols","supportedProtocols","indexOf","item","Connection","consumer","arg","allowReconnect","ref1","error1","eventName","handler","identifier","Subscriptions","channelName","mixin","channel","subscription","results","callbackName","subscriptions","command","extend","Subscription","action","properties","Consumer","DEFAULT_WS_URL","connectCable","metaTag","ActionCable.createConsumer","ReportSpinner","title","subtitle","MAX_WAIT","ReportBuildStatus","handleRefreshReport","mapped","statusExpireTime","cable","pollingInterval","task","taskProgress","complete","taskPercent","overallPercent","percent","CompletedReport","Report","postData","historyReportPurchasePath","newReport","u","J","Q","h","E","w","M","P","U","N","B","K","W","H","L","I","F","R","C","S","D","T","O","A","HistoryLocationForm","location","newLocation","onSubmit","submitText","showLatlon","submitted","HistoryReportLocationsTable","onRemoveRow","locations","formModes","HistoryReportForm","CSV.parse","historyReportCreatePath","mode","CSV.unparse","CSVErrors","hailHistoryCredits","renderedForm","RadioButtonGroup","React.Fragment","PropertyTooltip","property","COLOR_STOPS","colorForSize","lookupSize","entry","colorStringForSize","formatted","UntypedDeckGL","DeckGL","TOOLTIP_OFFSET","MAP_STYLE","PROPERTY_BUBBLE_COLOR","INITIAL_VIEW_STATE","Map","date","initialViewState","StaticMap","hoveredProperty","hoveredSwath","hailSize","swatchStyles","HailSize.colorStringForSize","HailSize.formatted","stormDates","propertyData","stormDate","isoDateString","Constants.stormSwathPath","HailSize.colorForSize","MapNavigation","newDateString","onStormDatePinnedToggle","pinnedDates","isPinned","formattedDates","dateString","initDateFromISO","movement","newDate","stormDateString","onStormDateChange","MapPage","toggleDate","checkDate","staticPropertyData","ary","newAry","matchIndex","VIEWPORT_CALCULATION_PARAMS","MAX_AUTO_ZOOM","RETRY_PROPERTY_FETCH_INTERVAL","Tooltip","position","getProperties","fetchJSON","PortalMap","setProperties","useState","viewState","setViewState","setHoveredProperty","tooltipPosition","setTooltipPosition","onViewStateChange","useCallback","newViewState","propertyLayer","fetchAndSetProperties","newProperties","useEffect","bounds","getBounds","WebMercatorViewport","latitude","longitude","zoom","ReactComponents","UserProfile","Storm","setupReact","ActiveStorage.start"],"mappings":"4XAAA,MAAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECCTC,GAAyB,CAC7B,aAAc,CAAE,CAClB,EAEA,SAASC,IAAe,CACtB,GAAI,CACF,MAAAC,EAAQ,CAAC,EAAG,EAAG,CAAC,EAChB,UAAAC,EAAY,CACb,EAAG,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxE,OAAOD,EAAM,IAAIE,GAAaA,EAAYD,EAAY,GAAK,CAC7D,CAEA,SAASE,GAAuBC,EAAM,CACpC,GAAI,CACF,aAAAC,EACA,YAAAC,EAAc,CAAE,EAChB,kBAAAC,EAAoB,CAAE,CACvB,EAAGH,EACJ,MAAMI,EAAsB,CAAA,EAE5B,OAAIH,EACFG,EAAoB,8BAA8B,EAAIT,GAAaM,CAAY,EAE/EG,EAAoB,8BAA8B,EAAI,CAAC,EAAG,EAAG,CAAC,EAGhEF,EAAY,QAAQ,CAACG,EAAYC,IAAU,CACzCF,EAAoB,wBAAwB,OAAOE,EAAO,SAAS,CAAC,EAAIX,GAAaU,CAAU,EAC/FD,EAAoB,wBAAwB,OAAOE,EAAO,YAAY,CAAC,EAAID,EAAW,SACtFD,EAAoB,wBAAwB,OAAOE,EAAO,eAAe,CAAC,EAAID,EAAW,aAAe,CAAC,EAAG,EAAG,CAAC,CACpH,CAAG,EACDD,EAAoB,0BAA4BF,EAAY,OAC5DC,EAAkB,QAAQ,CAACI,EAAkBD,IAAU,CACrDF,EAAoB,8BAA8B,OAAOE,EAAO,SAAS,CAAC,EAAIX,GAAaY,CAAgB,EAC3GH,EAAoB,8BAA8B,OAAOE,EAAO,aAAa,CAAC,EAAIC,EAAiB,SACvG,CAAG,EACDH,EAAoB,gCAAkCD,EAAkB,OACjEC,CACT,CAEA,SAASI,IAAc,CACrB,IAAIC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIf,GAE/E,GAAI,iBAAkBe,EAAM,CAC1B,KAAM,CACJ,aAAAR,EACA,YAAAC,EACA,kBAAAC,CACN,EAAQM,EAAK,cAAgB,GAGzB,OAFkBR,GAAgBC,GAAeA,EAAY,OAAS,GAAKC,GAAqBA,EAAkB,OAAS,EAQpH,OAAO,OAAO,CAAE,EAAEJ,GAAuB,CAC9C,aAAAE,EACA,YAAAC,EACA,kBAAAC,CACN,CAAK,EAAG,CACF,kBAAmB,EACzB,CAAK,EAXQ,CACL,kBAAmB,EAC3B,CAUG,CAED,GAAI,WAAYM,EAAM,CACpB,MAAMC,EAAe,CACnB,YAAa,CAAE,EACf,kBAAmB,CAAE,CAC3B,EAEI,UAAWC,KAASF,EAAK,QAAU,CAAA,EACjC,OAAQE,EAAM,KAAI,CAChB,IAAK,UACHD,EAAa,aAAeC,EAC5B,MAEF,IAAK,cACHD,EAAa,kBAAkB,KAAKC,CAAK,EACzC,MAEF,IAAK,QACHD,EAAa,YAAY,KAAKC,CAAK,EACnC,KAGH,CAGH,OAAOH,GAAY,CACjB,aAAAE,CACN,CAAK,CACF,CAED,MAAO,EACT,CAEO,MAAME,GAAS,CACpB,KAAM,SACN,GAAIC,GACJ,GAAIA,GACN,YAAEL,GACA,QAAS,CACP,WAAY,CACb,CACH,EC3GAK,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECETnB,GAAyB,CAAA,EAE/B,SAASoB,GAAoBC,EAAU,CACrC,KAAM,CACJ,QAAAC,EAAU,IACV,QAAAC,EAAU,GACV,UAAAC,EAAY,GACZ,cAAAC,EAAgB,CAAC,GAAI,GAAI,EAAE,CAC5B,EAAGJ,EACJ,MAAO,CACL,kBAAmBC,EACnB,kBAAmBC,EACnB,oBAAqBC,EACrB,wBAAyBC,EAAc,IAAIC,GAAKA,EAAI,GAAG,CAC3D,CACA,CAEA,SAASZ,IAAc,CACrB,IAAIC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIf,GAE/E,GAAI,EAAE,aAAce,GAClB,MAAO,GAGT,KAAM,CACJ,SAAAM,CACD,EAAGN,EAEJ,OAAKM,EAMED,GAAoBC,CAAQ,EAL1B,CACL,kBAAmB,EACzB,CAIA,CAEO,MAAMM,GAAkB,CAC7B,KAAM,mBACN,aAAc,CAACT,EAAM,EACrB,GAAIC,GACJ,QAAS,CACP,gBAAiB,CAClB,EACD,YAAAL,EACF,EC1CMc,GAAsB,8BACb,MAAMC,WAAuBC,EAAM,CAChD,IAAI,aAAc,CAChB,MAAO,EACR,CAED,IAAI,UAAW,CACb,OAAO,MAAM,UAAY,KAAK,aAAY,EAAG,MAAMC,GAASA,EAAM,QAAQ,CAC3E,CAED,cAAe,CACb,OAAO,KAAK,eAAiB,KAAK,cAAc,WAAa,CAAA,CAC9D,CAED,gBAAgBC,EAAS,CAAE,CAE3B,SAASC,EAAc,CACrB,MAAM,SAASA,CAAY,EAC3B,KAAK,eAAc,CACpB,CAED,eAAe,CACb,KAAAC,CACJ,EAAK,CACD,KAAM,CACJ,OAAAC,CACD,EAAGD,EAGJ,OAFsBC,GAAUA,EAAO,UAAYA,EAAO,SAAS,QAAUA,EAAO,SAAS,OAAO,KAAO,KAAK,KAMhHD,EAAK,OAASC,EAAO,SAAS,OAC9BD,EAAK,MAAQC,EAAO,SAAS,OACtBD,CACR,CAED,eAAeF,EAAS,CACtB,MAAO,EACR,CAED,qBAAqBI,EAAYC,EAAM,CACrC,OAAOA,GAAQA,EAAK,MACrB,CAED,iBAAiBD,EAAYE,EAAmB,CAC9C,KAAM,CACJ,eAAgBC,CACtB,EAAQ,KAAK,MACT,OAAOA,GAAmBA,EAAgBH,CAAU,GAAKG,EAAgBH,CAAU,EAAE,MAAQE,CAC9F,CAED,eAAeE,EAAKC,EAAcC,EAAmB,CACnD,OAAAF,EAAI,SAAW,CACb,OAAQ,KACR,OAAQC,EACR,MAAOC,CACb,EACWF,CACR,CAED,oBAAoBG,EAAU,CAC5B,GAAI,OAAOA,GAAa,WAAY,CAClC,MAAMC,EAAa,CACjB,MAAO,GACP,KAAM,KAAK,MAAM,KACjB,OAAQ,CAAE,CAClB,EACM,MAAO,CAAClB,EAAG,IACLA,GAAKA,EAAE,UACTkB,EAAW,MAAQlB,EAAE,SAAS,MACvBiB,EAASjB,EAAE,SAAS,OAAQkB,CAAU,GAGxCD,EAASjB,EAAG,CAAC,CAEvB,CAED,OAAOiB,CACR,CAED,iBAAiBE,EAAgB,GAAI,CACnC,IAAIC,EAEJ,KAAM,CACJ,QAAAC,EACA,SAAAC,EACA,QAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,uBAAAC,EACA,cAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,eAAAC,EACA,YAAAC,EACA,WAAAC,EACA,MAAAC,EACA,UAAAC,EACA,eAAgBvB,CACtB,EAAQ,KAAK,MACHwB,EAAW,CACf,GAAI,GACJ,eAAgB,CAAE,EAClB,QAAAhB,EACA,SAAAC,EACA,QAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,uBAAAC,EACA,cAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,eAAAC,EACA,YAAAC,EACA,WAAAC,EACA,MAAAC,EACA,UAAAC,CACN,EACUE,EAA0BzB,GAAmBM,EAAc,IAAMN,EAAgBM,EAAc,EAAE,EACjGoB,EAA6BD,GAA2BA,EAAwB,eAChFE,EAAarB,EAAc,IAAM,WAEvC,GAAImB,EAAyB,CAC3B,MAAMG,EAAY,KAAK,MAAMC,EAAiB,EACxCC,EAAoBxB,EAAc,KAAOA,EAAc,KAAK,WAAa,GAE/E,UAAWyB,KAAON,EAAyB,CACzC,MAAMO,EAAWF,EAAkBC,CAAG,GAAKH,EAAUG,CAAG,EAEpDC,GAAYA,EAAS,OAAS,aAChCP,EAAwBM,CAAG,EAAI,KAAK,oBAAoBN,EAAwBM,CAAG,CAAC,EAEvF,CACF,CAED,OAAO,OAAOP,EAAUlB,EAAemB,CAAuB,EAC9DD,EAAS,GAAK,GAAG,OAAO,KAAK,MAAM,GAAI,GAAG,EAAE,OAAOG,CAAU,EAC7DH,EAAS,eAAiB,CACxB,KAAMjB,EAAwB,KAAK,MAAM,kBAAoB,MAAQA,IAA0B,OAAS,OAASA,EAAsB,IACvI,GAAGD,EAAc,eACjB,GAAGoB,CACT,EAEI,UAAWO,KAAaZ,EAAY,CAClC,MAAMa,EAAmBD,EAAU,iBAAiB,KAAK,KAAMA,CAAS,EAEpEC,GACF,OAAO,OAAOV,EAAUU,EAAkB,CACxC,eAAgB,OAAO,OAAOV,EAAS,eAAgBU,EAAiB,cAAc,CAChG,CAAS,CAEJ,CAED,OAAOV,CACR,CAED,qBAAqB7B,EAAM,CACzB,UAAWH,KAAS,KAAK,eACvBA,EAAM,oBAAoBG,CAAI,CAEjC,CAED,sBAAuB,CACrB,OAAO,IACR,CAED,YAAYwC,EAAcC,EAAa,CACrC,IAAIC,EAAY,KAAK,cAAc,UACnC,MAAMC,EAAe,CAACD,GAAa,KAAK,YAAW,EAEnD,GAAIC,EAAc,CAChB,MAAMC,EAAgB,KAAK,eAC3BF,EAAYG,GAAQD,EAAe,OAAO,EAC1C,KAAK,cAAc,UAAYF,CAChC,CAEDI,GAAMpD,GAAqB,KAAMiD,EAAcD,CAAS,EAExD,UAAW7C,KAAS6C,EAClB7C,EAAM,OAAS,IAElB,CAEH,CAEAkD,EAAgBpD,GAAgB,YAAa,gBAAgB,EC/L9C,MAAMqD,EAAW,CAC9B,YAAYnE,EAAM,CAChBkE,EAAgB,KAAM,OAAQ,MAAM,EAEpCA,EAAgB,KAAM,oBAAqB,MAAM,EAEjDA,EAAgB,KAAM,cAAe,CAAC,CAAC,CAAC,EAExCA,EAAgB,KAAM,eAAgB,CAAC,CAAC,CAAC,EAEzCA,EAAgB,KAAM,cAAe,CAAC,EAEtCA,EAAgB,KAAM,gBAAiB,CAAC,EAExCA,EAAgB,KAAM,aAAc,MAAM,EAE1CA,EAAgB,KAAM,iBAAkB,MAAM,EAE9CA,EAAgB,KAAM,OAAQ,MAAM,EAEpCA,EAAgB,KAAM,cAAe,MAAM,EAE3CA,EAAgB,KAAM,iBAAkB,MAAM,EAE9CA,EAAgB,KAAM,UAAW,MAAM,EAEvCA,EAAgB,KAAM,eAAgB,MAAM,EAE5CA,EAAgB,KAAM,YAAa,MAAM,EAEzC,KAAM,CACJ,WAAAE,EAAa,CAAE,CAChB,EAAGpE,EACJ,KAAK,kBAAoBqE,GACzB,KAAK,WAAa,GAClB,KAAK,eAAiBD,EACtB,KAAK,KAAOpE,EACZ,KAAK,eAAeA,CAAI,CACzB,CAED,eAAeA,EAAM,CACnB,OAAO,OAAO,KAAK,KAAMA,CAAI,EAC7B,KAAM,CACJ,KAAAsB,EACA,QAAAgD,EAAU,CAAE,EACZ,YAAAC,EACA,eAAAC,EACA,eAAA7B,EACA,YAAA8B,EACA,UAAAC,EAAY,EAClB,EAAQ,KAAK,KAkBT,GAjBA,KAAK,KAAOpD,EACZ,KAAK,YAAciD,EACnB,KAAK,aAAeC,GAAkBA,EAAe,OAAS7B,IAAmB,KAAO,EAAI,GAC5F,KAAK,QAAU2B,EACf,KAAK,UAAYI,EAEbF,IACFG,GAAOrD,EAAK,YAAY,EACxB,KAAK,YAAc,KAAK,sBAAsBkD,CAAc,EAEvDE,IACHJ,EAAQ,UAAYE,IAIxB,KAAK,eAAiBF,EAAQ,UAE1B,MAAM,QAAQG,CAAW,EAC3B,UAAWG,KAAaH,EACtB,KAAK,iBAAiBG,CAAS,OAGjC,KAAK,iBAAgB,CAExB,CAED,sBAAsB,CACpB,SAAAC,EACA,OAAAC,CACJ,EAAK,CACD,KAAK,iBAAiB,CACpB,SAAAD,EACA,OAAAC,CACN,CAAK,CACF,CAED,sBAAsBN,EAAgB,CACpC,MAAMO,EAAQP,EAAe,OAASA,EAEtC,OAAK,YAAY,OAAOO,CAAK,EAItBC,GAAsBD,EAAO,CAClC,KAAM,KAAK,aACX,OAAQP,EAAe,OACvB,OAAQA,EAAe,OACvB,aAAc,KAAK,KAAK,YAC9B,CAAK,EARQ,IASV,CAED,UAAUS,EAAeC,EAAM,CAC7B,KAAM,CACJ,WAAAd,EACA,QAAAE,EACA,eAAAa,EACA,kBAAAC,CACD,EAAG,KAEJ,UAAWC,KAAQF,EACjB,GAAIE,KAAQf,EACVc,EAAkB,QAAQhB,EAAWiB,CAAI,CAAC,EAC1CjB,EAAWiB,CAAI,EAAI,SACd,CACL,MAAMC,EAAMH,EAAeE,CAAI,EAC/BC,EAAI,KAAOJ,EACXd,EAAWiB,CAAI,EAAID,EAAkB,SAAShB,EAAWiB,CAAI,EAAGJ,EAAeK,CAAG,CACnF,CAEJ,CAED,iBAAiBC,EAASV,EAAUC,EAAQ,CAC1C,KAAM,CACJ,KAAAxD,EACA,YAAAiD,CACD,EAAG,KACE,CACJ,SAAAiB,EACA,WAAA3D,CACD,EAAG4D,GAAenE,EAAMuD,EAAUC,CAAM,EAEzC,UAAW1D,KAAUoE,EAAU,CAC7B3D,EAAW,QACX,MAAM6D,EAAWnB,EAAcA,EAAYnD,EAAQS,CAAU,EAAI,KACjE0D,EAAQG,EAAU7D,EAAW,KAAK,CACnC,CACF,CAED,iBAAiB+C,EAAW,CAC1B,GAAI,CAAC,KAAK,KACR,OAGF,GAAI,CACF,YAAAe,EACA,aAAAC,EACA,cAAAX,CACD,EAAG,KACJ,KAAM,CACJ,KAAA3D,EACA,eAAAkD,CACD,EAAG,KACE,CACJ,SAAAK,EAAW,EACX,OAAAC,EAAS,GACf,EAAQF,GAAa,CAAA,EACXiB,EAAiB,CAAA,EAOvB,GALKjB,IACHe,EAAc,CAAC,CAAC,EAChBC,EAAe,CAAC,CAAC,GAGf,KAAK,WAAa,CAACpB,EACrB,KAAK,iBAAiB,CAACkB,EAAUI,IAAc,CAC7C,MAAMC,EAAqBL,GAAY,KAAK,kBAAkBA,CAAQ,EACtEG,EAAeC,CAAS,EAAIC,EAC5BH,EAAaE,EAAY,CAAC,EAAIF,EAAaE,CAAS,GAAKC,EAAqB,KAAK,gBAAgBA,CAAkB,EAAI,EACjI,EAASlB,EAAUC,CAAM,EAEnBG,EAAgBW,EAAaA,EAAa,OAAS,CAAC,UAEpDA,EAAetE,EAAK,aACpB2D,EAAgBW,EAAatE,EAAK,MAAM,GAAK,EAEzC,YAAY,OAAOkD,CAAc,EACnCS,EAAgBA,GAAiBT,EAAe,OAAS,KAAK,qBACrDA,aAA0BwB,GAAQ,CAC3C,MAAMC,EAAazB,EAAe,SAAS,QAAU,KAAK,aAAe,EACzES,EAAgBA,GAAiBT,EAAe,WAAayB,CACrE,SAAiBzB,EAAe,OAAQ,CAChC,MAAMyB,EAAazB,EAAe,QAAU,KAAK,aAAe,EAChES,EAAgBA,GAAiBT,EAAe,OAAO,WAAayB,CAC5E,SAAiBzB,EAAe,MAAO,CAC/B,MAAM0B,EAAc1B,EAAe,MAC7B2B,EAAgB3B,EAAe,OAAS0B,EAAY,mBAAqB,KAAK,aACpFjB,EAAgBA,GAAiBiB,EAAY,OAASC,CACvD,CAGH,KAAK,UAAUlB,EAAe,EAAQL,CAAU,EAEhD,KAAK,YAAce,EACnB,KAAK,aAAeC,EACpB,KAAK,cAAgBX,EACrB,MAAMhE,EAAU,CAAA,EAEhB,KAAK,iBAAiB,CAACyE,EAAUI,IAAc,CAC7C,MAAMC,EAAqBF,EAAeC,CAAS,GAAKJ,EACxDzE,EAAQ,YAAc2E,EAAaE,CAAS,EAC5C7E,EAAQ,WAAa0E,EAAYG,CAAS,EAC1C,MAAMM,EAAYN,EAAYF,EAAa,OAAS,EAAIA,EAAaE,EAAY,CAAC,EAAIb,EACtFhE,EAAQ,aAAemF,EAAYR,EAAaE,CAAS,EACzD7E,EAAQ,cAAgB6E,EACxB,KAAK,yBAAyBC,EAAoB9E,CAAO,CAC/D,EAAO4D,EAAUC,CAAM,EAEnB,KAAK,YAAca,EAAYA,EAAY,OAAS,CAAC,CACtD,CAEH,CCxNA,MAAAU,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECAfC,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECKTC,GAAgB,CAAC,EAAG,EAAG,EAAG,GAAG,EAC7BC,GAAe,CACnB,YAAa,SACb,YAAa,CACX,KAAM,SACN,IAAK,EACL,MAAO,CACR,EACD,gBAAiB,CACf,KAAM,SACN,IAAK,EACL,MAAO,CACR,EACD,gBAAiB,CACf,KAAM,SACN,IAAK,EACL,MAAO,OAAO,gBACf,EACD,eAAgB,SAChB,eAAgB,CACd,KAAM,SACN,IAAK,EACL,MAAO,CACR,EACD,mBAAoB,CAClB,KAAM,SACN,IAAK,EACL,MAAO,CACR,EACD,mBAAoB,CAClB,KAAM,SACN,IAAK,EACL,MAAO,OAAO,gBACf,EACD,QAAS,GACT,OAAQ,GACR,UAAW,GACX,aAAc,GACd,YAAa,CACX,KAAM,WACN,MAAO7F,GAAKA,EAAE,QACf,EACD,UAAW,CACT,KAAM,WACN,MAAO,CACR,EACD,aAAc,CACZ,KAAM,WACN,MAAO4F,EACR,EACD,aAAc,CACZ,KAAM,WACN,MAAOA,EACR,EACD,aAAc,CACZ,KAAM,WACN,MAAO,CACR,EACD,YAAa,CACX,cAAe,cAChB,EACD,QAAS,CACP,cAAe,SAChB,EACD,SAAU,CACR,cAAe,CAAC,eAAgB,cAAc,CAC/C,CACH,EACe,MAAME,WAAyB1F,EAAM,CAClD,YAAa,CACX,OAAO,MAAM,WAAW,CAC5B,GAAM2F,GACN,GAAMC,GACA,QAAS,CAACC,GAAWC,EAAO,CAClC,CAAK,CACF,CAED,iBAAkB,CAChB,KAAK,oBAAqB,EAAC,aAAa,CACtC,kBAAmB,CACjB,KAAM,EACN,KAAM,KACN,KAAM,KAAK,kBAAmB,EAC9B,WAAY,GACZ,SAAU,aACX,EACD,eAAgB,CACd,KAAM,EACN,WAAY,GACZ,SAAU,YACV,aAAc,CACf,EACD,mBAAoB,CAClB,KAAM,KAAK,MAAM,YAAY,OAC7B,WAAY,GACZ,WAAY,GACZ,KAAM,KACN,SAAU,eACV,aAAc,CAAC,EAAG,EAAG,EAAG,GAAG,CAC5B,EACD,mBAAoB,CAClB,KAAM,KAAK,MAAM,YAAY,OAC7B,WAAY,GACZ,WAAY,GACZ,KAAM,KACN,SAAU,eACV,aAAc,CAAC,EAAG,EAAG,EAAG,GAAG,CAC5B,EACD,mBAAoB,CAClB,KAAM,EACN,WAAY,GACZ,SAAU,eACV,aAAc,CACf,CACP,CAAK,CACF,CAED,YAAYC,EAAQ,CAGlB,GAFA,MAAM,YAAYA,CAAM,EAEpBA,EAAO,YAAY,kBAAmB,CACxC,IAAIC,EAEJ,KAAM,CACJ,GAAAC,CACR,EAAU,KAAK,SACRD,EAAoB,KAAK,MAAM,SAAW,MAAQA,IAAsB,QAAkBA,EAAkB,OAAM,EACnH,KAAK,MAAM,MAAQ,KAAK,UAAUC,CAAE,EACpC,KAAK,sBAAsB,eAC5B,CACF,CAED,KAAK,CACH,SAAAC,CACJ,EAAK,CACD,KAAM,CACJ,YAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,QAAAC,EACA,OAAAC,EACA,UAAAC,EACA,aAAAC,EACA,eAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,mBAAAC,CACN,EAAQ,KAAK,MACT,KAAK,MAAM,MAAM,YAAYZ,CAAQ,EAAE,YAAY,CACjD,QAASK,EAAU,EAAI,EACvB,OAAAC,EACA,UAAAC,EACA,aAAAC,EACA,YAAaK,GAAKZ,CAAW,EAC7B,YAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,eAAgBS,GAAKJ,CAAc,EACnC,eAAAC,EACA,mBAAAC,EACA,mBAAAC,CACN,CAAK,EAAE,KAAI,CACR,CAED,UAAUb,EAAI,CACZ,MAAMe,EAAY,CAAC,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EACzD,OAAO,IAAIC,GAAMhB,EAAI,CAAE,GAAG,KAAK,WAAY,EACzC,GAAI,KAAK,MAAM,GACf,SAAU,IAAIiB,GAAS,CACrB,SAAU,EACV,YAAa,EACb,WAAY,CACV,UAAW,CACT,KAAM,EACN,MAAO,IAAI,aAAaF,CAAS,CAClC,CACF,CACT,CAAO,EACD,YAAa,EACnB,CAAK,CACF,CAEH,CAEA7D,EAAgBuC,GAAkB,eAAgBD,EAAY,EAE9DtC,EAAgBuC,GAAkB,YAAa,kBAAkB,EC/L1D,MAAMyB,GAAU,CACrB,UAAW,EACX,kBAAmB,EACrB,EACO,SAASC,GAA8BC,EAAQC,EAAWC,EAAU,CAAA,EAAI,CAG7E,OAFyBC,GAA2BH,EAAQE,CAAO,IAE1CD,GACvBG,GAAeJ,EAAQE,CAAO,EACvB,IAGF,EACT,CACO,SAASC,GAA2BH,EAAQE,EAAU,GAAI,CAC/D,OAAO,KAAK,KAAKG,GAAqBL,EAAQE,CAAO,CAAC,CACxD,CACO,SAASG,GAAqBL,EAAQE,EAAU,GAAI,CACzD,KAAM,CACJ,MAAAI,EAAQ,EACR,IAAAC,EAAMP,EAAO,MACd,EAAGE,EACEM,EAAMN,EAAQ,MAAQ,EAC5B,IAAIO,EAAO,EAEX,QAASC,EAAIJ,EAAOK,EAAIJ,EAAMC,EAAKE,EAAIH,EAAKG,GAAKF,EAC/CC,IAAST,EAAOU,CAAC,EAAIV,EAAOW,CAAC,IAAMX,EAAOU,EAAI,CAAC,EAAIV,EAAOW,EAAI,CAAC,GAC/DA,EAAID,EAGN,OAAOD,EAAO,CAChB,CAsBA,SAASL,GAAeJ,EAAQE,EAAS,CACvC,KAAM,CACJ,MAAAI,EAAQ,EACR,IAAAC,EAAMP,EAAO,OACb,KAAAY,EAAO,CACR,EAAGV,EACEW,GAAaN,EAAMD,GAASM,EAC5BE,EAAW,KAAK,MAAMD,EAAY,CAAC,EAEzC,QAASH,EAAI,EAAGA,EAAII,EAAU,EAAEJ,EAAG,CACjC,MAAMK,EAAKT,EAAQI,EAAIE,EACjBI,EAAKV,GAASO,EAAY,EAAIH,GAAKE,EAEzC,QAASD,EAAI,EAAGA,EAAIC,EAAM,EAAED,EAAG,CAC7B,MAAMM,EAAMjB,EAAOe,EAAKJ,CAAC,EACzBX,EAAOe,EAAKJ,CAAC,EAAIX,EAAOgB,EAAKL,CAAC,EAC9BX,EAAOgB,EAAKL,CAAC,EAAIM,CAClB,CACF,CACH,CCzEO,SAASC,GAAKC,EAAQC,EAAQ,CACnC,MAAMR,EAAOQ,EAAO,OACdC,EAAaF,EAAO,OAE1B,GAAIE,EAAa,EAAG,CAClB,IAAIC,EAAc,GAElB,QAASZ,EAAI,EAAGA,EAAIE,EAAMF,IACxB,GAAIS,EAAOE,EAAaT,EAAOF,CAAC,IAAMU,EAAOV,CAAC,EAAG,CAC/CY,EAAc,GACd,KACD,CAGH,GAAIA,EACF,MAAO,EAEV,CAED,QAAS,EAAI,EAAG,EAAIV,EAAM,IACxBO,EAAOE,EAAa,CAAC,EAAID,EAAO,CAAC,EAGnC,MAAO,EACT,CACO,SAAStE,GAAKqE,EAAQC,EAAQ,CACnC,MAAMR,EAAOQ,EAAO,OAEpB,QAASV,EAAI,EAAGA,EAAIE,EAAMF,IACxBS,EAAOT,CAAC,EAAIU,EAAOV,CAAC,CAExB,CACO,SAASa,GAAgB5B,EAAWlI,EAAOmJ,EAAMY,EAAQC,EAAM,GAAI,CACxE,MAAMC,EAASF,EAAS/J,EAAQmJ,EAEhC,QAASF,EAAI,EAAGA,EAAIE,EAAMF,IACxBe,EAAIf,CAAC,EAAIf,EAAU+B,EAAShB,CAAC,EAG/B,OAAOe,CACT,CCwDO,SAASE,GAAUC,EAAGC,EAAGC,EAAMC,EAAMN,EAAM,GAAI,CACpD,IAAIO,EACAC,EAEJ,GAAIH,EAAO,EACTE,GAAKD,EAAK,CAAC,EAAIH,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAID,EAAE,CAAC,GAClCK,EAAO,UACEH,EAAO,EAChBE,GAAKD,EAAK,CAAC,EAAIH,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAID,EAAE,CAAC,GAClCK,EAAO,UACEH,EAAO,EAChBE,GAAKD,EAAK,CAAC,EAAIH,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAID,EAAE,CAAC,GAClCK,EAAO,UACEH,EAAO,EAChBE,GAAKD,EAAK,CAAC,EAAIH,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAID,EAAE,CAAC,GAClCK,EAAO,MAEP,QAAO,KAGT,QAASvB,EAAI,EAAGA,EAAIkB,EAAE,OAAQlB,IAC5Be,EAAIf,CAAC,GAAKuB,EAAO,KAAOvB,EAAIqB,EAAKE,CAAI,EAAID,GAAKH,EAAEnB,CAAC,EAAIkB,EAAElB,CAAC,GAAKkB,EAAElB,CAAC,EAGlE,OAAOe,CACT,CACO,SAASS,GAAQC,EAAGJ,EAAM,CAC/B,IAAIK,EAAO,EACX,OAAID,EAAE,CAAC,EAAIJ,EAAK,CAAC,EAAGK,GAAQ,EAAWD,EAAE,CAAC,EAAIJ,EAAK,CAAC,IAAGK,GAAQ,GAC3DD,EAAE,CAAC,EAAIJ,EAAK,CAAC,EAAGK,GAAQ,EAAWD,EAAE,CAAC,EAAIJ,EAAK,CAAC,IAAGK,GAAQ,GACxDA,CACT,CC7HO,SAASC,GAAkB1C,EAAWO,EAAS,CACpD,KAAM,CACJ,KAAAU,EAAO,EACP,OAAA0B,EAAS,GACT,eAAAC,EAAiB,GACjB,WAAAC,EAAa,CAAC,EAAG,CAAC,EAClB,WAAAnB,EAAa,EACb,SAAAoB,EAAW9C,EAAU,MACzB,EAAMO,GAAW,CAAA,EACTW,GAAa4B,EAAWpB,GAAcT,EAC5C,IAAI8B,EAAO,CAAA,EACX,MAAMC,EAAS,CAACD,CAAI,EACdd,EAAIL,GAAgB5B,EAAW,EAAGiB,EAAMS,CAAU,EACxD,IAAIQ,EACAe,EACJ,MAAMC,EAAOC,GAAYlB,EAAGW,EAAgBC,EAAY,CAAA,CAAE,EACpDO,EAAe,CAAA,EACrB7B,GAAKwB,EAAMd,CAAC,EAEZ,QAASlB,EAAI,EAAGA,EAAIG,EAAWH,IAAK,CAIlC,IAHAmB,EAAIN,GAAgB5B,EAAWe,EAAGE,EAAMS,EAAYQ,CAAC,EACrDe,EAAQV,GAAQL,EAAGgB,CAAI,EAEhBD,GAAO,CACZjB,GAAUC,EAAGC,EAAGe,EAAOC,EAAME,CAAY,EACzC,MAAMC,EAAUd,GAAQa,EAAcF,CAAI,EAEtCG,IACFrB,GAAUC,EAAGmB,EAAcC,EAASH,EAAME,CAAY,EACtDH,EAAQI,GAGV9B,GAAKwB,EAAMK,CAAY,EACvBjG,GAAK8E,EAAGmB,CAAY,EACpBE,GAAmBJ,EAAMN,EAAgBK,CAAK,EAE1CN,GAAUI,EAAK,OAAS9B,IAC1B8B,EAAO,CAAA,EACPC,EAAO,KAAKD,CAAI,EAChBxB,GAAKwB,EAAMd,CAAC,GAGdgB,EAAQV,GAAQL,EAAGgB,CAAI,CACxB,CAED3B,GAAKwB,EAAMb,CAAC,EACZ/E,GAAK8E,EAAGC,CAAC,CACV,CAED,OAAOS,EAASK,EAASA,EAAO,CAAC,CACnC,CACA,MAAMO,GAAc,EACdC,GAAc,EAEpB,SAASC,GAAcC,EAAMC,EAAM,CACjC,QAAS5C,EAAI,EAAGA,EAAI4C,EAAK,OAAQ5C,IAC/B2C,EAAK,KAAKC,EAAK5C,CAAC,CAAC,EAGnB,OAAO2C,CACT,CAEO,SAASE,GAAiB5D,EAAW6D,EAAc,KAAMtD,EAAS,CACvE,GAAI,CAACP,EAAU,OACb,MAAO,GAGT,KAAM,CACJ,KAAAiB,EAAO,EACP,eAAA2B,EAAiB,GACjB,WAAAC,EAAa,CAAC,EAAG,CAAC,EAClB,UAAAiB,EAAY,EAChB,EAAMvD,GAAW,CAAA,EACTyC,EAAS,CAAA,EACTe,EAAQ,CAAC,CACb,IAAK/D,EACL,MAAO8D,EAAY,IAAI,MAAM9D,EAAU,OAASiB,CAAI,EAAE,KAAKuC,EAAW,EAAI,KAC1E,MAAOK,GAAe,CAAE,CAC5B,CAAG,EACKzB,EAAO,CAAC,GAAI,CAAA,CAAE,EACpB,IAAIc,EAAO,CAAA,EAEX,KAAOa,EAAM,QAAQ,CACnB,KAAM,CACJ,IAAAC,EACA,MAAAC,EACA,MAAAC,CACN,EAAQH,EAAM,QACVI,GAAeH,EAAK/C,EAAMiD,EAAM,CAAC,GAAKF,EAAI,OAAQ5B,CAAI,EACtDc,EAAOC,GAAYf,EAAK,CAAC,EAAGQ,EAAgBC,EAAYK,CAAI,EAC5D,MAAMT,EAAOF,GAAQH,EAAK,CAAC,EAAGc,CAAI,EAElC,GAAIT,EAAM,CACR,IAAI2B,EAAQC,GAAcL,EAAKC,EAAOhD,EAAM,EAAGiD,EAAM,CAAC,GAAKF,EAAI,OAAQd,EAAMT,CAAI,EACjF,MAAM6B,EAAa,CACjB,IAAKF,EAAM,CAAC,EAAE,IACd,MAAOA,EAAM,CAAC,EAAE,MAChB,MAAO,CAAE,CACjB,EACYG,EAAc,CAClB,IAAKH,EAAM,CAAC,EAAE,IACd,MAAOA,EAAM,CAAC,EAAE,MAChB,MAAO,CAAE,CACjB,EACML,EAAM,KAAKO,EAAYC,CAAW,EAElC,QAASxD,EAAI,EAAGA,EAAImD,EAAM,OAAQnD,IAChCqD,EAAQC,GAAcL,EAAKC,EAAOhD,EAAMiD,EAAMnD,CAAC,EAAGmD,EAAMnD,EAAI,CAAC,GAAKiD,EAAI,OAAQd,EAAMT,CAAI,EAEpF2B,EAAM,CAAC,IACTE,EAAW,MAAM,KAAKA,EAAW,IAAI,MAAM,EAC3CA,EAAW,IAAMb,GAAca,EAAW,IAAKF,EAAM,CAAC,EAAE,GAAG,EAEvDN,IACFQ,EAAW,MAAQb,GAAca,EAAW,MAAOF,EAAM,CAAC,EAAE,KAAK,IAIjEA,EAAM,CAAC,IACTG,EAAY,MAAM,KAAKA,EAAY,IAAI,MAAM,EAC7CA,EAAY,IAAMd,GAAcc,EAAY,IAAKH,EAAM,CAAC,EAAE,GAAG,EAEzDN,IACFS,EAAY,MAAQd,GAAcc,EAAY,MAAOH,EAAM,CAAC,EAAE,KAAK,GAI/E,KAAW,CACL,MAAMI,EAAU,CACd,UAAWR,CACnB,EAEUF,IACFU,EAAQ,UAAYP,GAGlBC,EAAM,SACRM,EAAQ,YAAcN,GAGxBlB,EAAO,KAAKwB,CAAO,CACpB,CACF,CAED,OAAOxB,CACT,CAEA,SAASqB,GAAcrE,EAAW8D,EAAW7C,EAAMS,EAAYoB,EAAUV,EAAMD,EAAM,CACnF,MAAMjB,GAAa4B,EAAWpB,GAAcT,EACtCwD,EAAY,CAAA,EACZC,EAAa,CAAA,EACbC,EAAW,CAAA,EACXC,EAAY,CAAA,EACZxB,EAAe,CAAA,EACrB,IAAIZ,EACAqC,EACAC,EACJ,MAAMC,EAAOnD,GAAgB5B,EAAWkB,EAAY,EAAGD,EAAMS,CAAU,EACvE,IAAIsD,EAAW,KAAK,KAAK7C,EAAO,EAAI4C,EAAK,CAAC,EAAI3C,EAAK,CAAC,EAAI2C,EAAK,CAAC,EAAI3C,EAAK,CAAC,CAAC,EACrE6C,EAAWnB,GAAaA,EAAU5C,EAAY,CAAC,EAC/CgE,EAAgB,EAChBC,EAAiB,EAErB,QAASpE,EAAI,EAAGA,EAAIG,EAAWH,IAC7ByB,EAAIZ,GAAgB5B,EAAWe,EAAGE,EAAMS,EAAYc,CAAC,EACrDqC,EAAO,KAAK,KAAK1C,EAAO,EAAIK,EAAE,CAAC,EAAIJ,EAAK,CAAC,EAAII,EAAE,CAAC,EAAIJ,EAAK,CAAC,CAAC,EAC3D0C,EAAOhB,GAAaA,EAAUpC,EAAaT,EAAOF,CAAC,EAE/C8D,GAAQG,GAAYA,IAAaH,IACnC7C,GAAU+C,EAAMvC,EAAGL,EAAMC,EAAMgB,CAAY,EAC3C7B,GAAKkD,EAAWrB,CAAY,GAAKuB,EAAS,KAAKM,CAAQ,EACvD1D,GAAKmD,EAAYtB,CAAY,GAAKwB,EAAU,KAAKK,CAAQ,GAGvDJ,GAAQ,GACVtD,GAAKkD,EAAWjC,CAAC,GAAKmC,EAAS,KAAKG,CAAI,EACxCI,GAAiBL,GACRF,EAAS,SAClBA,EAASA,EAAS,OAAS,CAAC,EAAIpB,IAG9BsB,GAAQ,GACVtD,GAAKmD,EAAYlC,CAAC,GAAKoC,EAAU,KAAKE,CAAI,EAC1CK,GAAkBN,GACTD,EAAU,SACnBA,EAAUA,EAAU,OAAS,CAAC,EAAIrB,IAGpCpG,GAAK4H,EAAMvC,CAAC,EACZwC,EAAWH,EACXI,EAAWH,EAGb,MAAO,CAACI,EAAgB,CACtB,IAAKT,EACL,MAAOX,GAAaa,CACxB,EAAM,KAAMQ,EAAiB,CACzB,IAAKT,EACL,MAAOZ,GAAac,CACrB,EAAG,IAAI,CACV,CAEA,SAASzB,GAAYX,EAAGI,EAAgBC,EAAYf,EAAK,CACvD,MAAMsD,EAAO,KAAK,OAAO5C,EAAE,CAAC,EAAIK,EAAW,CAAC,GAAKD,CAAc,EAAIA,EAAiBC,EAAW,CAAC,EAC1FwC,EAAS,KAAK,OAAO7C,EAAE,CAAC,EAAIK,EAAW,CAAC,GAAKD,CAAc,EAAIA,EAAiBC,EAAW,CAAC,EAClG,OAAAf,EAAI,CAAC,EAAIsD,EACTtD,EAAI,CAAC,EAAIuD,EACTvD,EAAI,CAAC,EAAIsD,EAAOxC,EAChBd,EAAI,CAAC,EAAIuD,EAASzC,EACXd,CACT,CAEA,SAASwB,GAAmBJ,EAAMN,EAAgBT,EAAM,CAClDA,EAAO,GACTe,EAAK,CAAC,GAAKN,EACXM,EAAK,CAAC,GAAKN,GACFT,EAAO,GAChBe,EAAK,CAAC,GAAKN,EACXM,EAAK,CAAC,GAAKN,GACFT,EAAO,GAChBe,EAAK,CAAC,GAAKN,EACXM,EAAK,CAAC,GAAKN,GACFT,EAAO,IAChBe,EAAK,CAAC,GAAKN,EACXM,EAAK,CAAC,GAAKN,EAEf,CAEA,SAASuB,GAAenE,EAAWiB,EAAM6B,EAAUhB,EAAK,CACtD,IAAIwD,EAAO,IACPC,EAAO,KACPC,EAAO,IACPC,EAAO,KAEX,QAAS1E,EAAI,EAAGA,EAAI+B,EAAU/B,GAAKE,EAAM,CACvC,MAAMrI,EAAIoH,EAAUe,CAAC,EACf2E,EAAI1F,EAAUe,EAAI,CAAC,EACzBuE,EAAO1M,EAAI0M,EAAO1M,EAAI0M,EACtBC,EAAO3M,EAAI2M,EAAO3M,EAAI2M,EACtBC,EAAOE,EAAIF,EAAOE,EAAIF,EACtBC,EAAOC,EAAID,EAAOC,EAAID,CACvB,CAED,OAAA3D,EAAI,CAAC,EAAE,CAAC,EAAIwD,EACZxD,EAAI,CAAC,EAAE,CAAC,EAAI0D,EACZ1D,EAAI,CAAC,EAAE,CAAC,EAAIyD,EACZzD,EAAI,CAAC,EAAE,CAAC,EAAI2D,EACL3D,CACT,CCxPA,MAAM6D,GAAuB,UACtB,SAASC,GAA4B5F,EAAWO,EAAS,CAC9D,KAAM,CACJ,KAAAU,EAAO,EACP,WAAAS,EAAa,EACb,SAAAoB,EAAW9C,EAAU,OACrB,UAAArD,EAAY,EAChB,EAAM4D,GAAW,CAAA,EACTsF,EAAe7F,EAAU,MAAM0B,EAAYoB,CAAQ,EACzDgD,GAA8BD,EAAc5E,EAAM,EAAG6B,EAAWpB,CAAU,EAC1E,MAAM0C,EAAQ1B,GAAkBmD,EAAc,CAC5C,KAAA5E,EACA,OAAQ,GACR,eAAgB,IAChB,WAAY,CAAC,KAAM,IAAI,CAC3B,CAAG,EAED,GAAItE,EACF,UAAWoG,KAAQqB,EACjB2B,GAAyBhD,EAAM9B,CAAI,EAIvC,OAAOmD,CACT,CACO,SAAS4B,GAA2BhG,EAAW6D,EAAc,KAAMtD,EAAS,CACjF,KAAM,CACJ,KAAAU,EAAO,EACP,UAAAtE,EAAY,GACZ,UAAAmH,EAAY,EAChB,EAAMvD,GAAW,CAAA,EACfsD,EAAcA,GAAe,GAC7B,MAAMgC,EAAe,CAAA,EACfI,EAAiB,CAAA,EACvB,IAAIC,EAAgB,EAChBC,EAAc,EAElB,QAASC,EAAY,EAAGA,GAAavC,EAAY,OAAQuC,IAAa,CACpE,MAAMC,EAAcxC,EAAYuC,CAAS,GAAKpG,EAAU,OAClDsG,EAAmBH,EACnBI,EAAaC,GAAexG,EAAWiB,EAAMiF,EAAeG,CAAW,EAE7E,QAAStF,EAAIwF,EAAYxF,EAAIsF,EAAatF,IACxC8E,EAAaM,GAAa,EAAInG,EAAUe,CAAC,EAG3C,QAASA,EAAImF,EAAenF,EAAIwF,EAAYxF,IAC1C8E,EAAaM,GAAa,EAAInG,EAAUe,CAAC,EAG3C+E,GAA8BD,EAAc5E,EAAMqF,EAAkBH,CAAW,EAC/EM,GAAmBZ,EAAc5E,EAAMqF,EAAkBH,EAAa5F,GAAY,KAA6B,OAASA,EAAQ,WAAW,EAC3I2F,EAAgBG,EAChBJ,EAAeG,CAAS,EAAID,CAC7B,CAEDF,EAAe,IAAG,EAClB,MAAM7B,EAAQR,GAAiBiC,EAAcI,EAAgB,CAC3D,KAAAhF,EACA,eAAgB,IAChB,WAAY,CAAC,KAAM,IAAI,EACvB,UAAA6C,CACJ,CAAG,EAED,GAAInH,EACF,UAAWoG,KAAQqB,EACjB2B,GAAyBhD,EAAK,UAAW9B,CAAI,EAIjD,OAAOmD,CACT,CAEA,SAASoC,GAAexG,EAAWiB,EAAMS,EAAYoB,EAAU,CAC7D,IAAI4D,EAAS,GACTC,EAAa,GAEjB,QAAS5F,EAAIW,EAAa,EAAGX,EAAI+B,EAAU/B,GAAKE,EAAM,CACpD,MAAM2F,EAAM,KAAK,IAAI5G,EAAUe,CAAC,CAAC,EAE7B6F,EAAMF,IACRA,EAASE,EACTD,EAAa5F,EAAI,EAEpB,CAED,OAAO4F,CACT,CAEA,SAASF,GAAmBzG,EAAWiB,EAAMS,EAAYoB,EAAU+D,EAAclB,GAAsB,CACrG,MAAMmB,EAAW9G,EAAU0B,CAAU,EAC/BqF,EAAU/G,EAAU8C,EAAW7B,CAAI,EAEzC,GAAI,KAAK,IAAI6F,EAAWC,CAAO,EAAI,IAAK,CACtC,MAAMvE,EAAIZ,GAAgB5B,EAAW,EAAGiB,EAAMS,CAAU,EACxDc,EAAE,CAAC,GAAK,KAAK,OAAOuE,EAAUD,GAAY,GAAG,EAAI,IACjDvF,GAAKvB,EAAWwC,CAAC,EACjBA,EAAE,CAAC,EAAI,KAAK,KAAKA,EAAE,CAAC,CAAC,EAAIqE,EACzBtF,GAAKvB,EAAWwC,CAAC,EACjBA,EAAE,CAAC,EAAIsE,EACPvF,GAAKvB,EAAWwC,CAAC,CAClB,CACH,CAEA,SAASsD,GAA8B9F,EAAWiB,EAAMS,EAAYoB,EAAU,CAC5E,IAAIkE,EAAUhH,EAAU,CAAC,EACrBiH,EAEJ,QAASlG,EAAIW,EAAYX,EAAI+B,EAAU/B,GAAKE,EAAM,CAChDgG,EAAMjH,EAAUe,CAAC,EACjB,MAAMmG,EAAQD,EAAMD,GAEhBE,EAAQ,KAAOA,EAAQ,QACzBD,GAAO,KAAK,MAAMC,EAAQ,GAAG,EAAI,KAGnClH,EAAUe,CAAC,EAAIiG,EAAUC,CAC1B,CACH,CAEA,SAASlB,GAAyB/F,EAAWiB,EAAM,CACjD,IAAIkG,EACJ,MAAMC,EAAapH,EAAU,OAASiB,EAEtC,QAASF,EAAI,EAAGA,EAAIqG,IAClBD,EAASnH,EAAUe,EAAIE,CAAI,GAEtBkG,EAAS,KAAO,MAAQ,GAHCpG,IAG9B,CAKF,MAAMmG,EAAQ,CAAC,KAAK,MAAMC,EAAS,GAAG,EAAI,IAE1C,GAAID,IAAU,EAId,QAASnG,EAAI,EAAGA,EAAIqG,EAAYrG,IAC9Bf,EAAUe,EAAIE,CAAI,GAAKiG,CAE3B,CC9IO,SAASG,GAAcC,EAAMrG,EAAM2B,EAAgBjI,EAAe,CACvE,IAAI4M,EAEJ,GAAI,MAAM,QAAQD,EAAK,CAAC,CAAC,EAAG,CAC1B,MAAME,EAASF,EAAK,OAASrG,EAC7BsG,EAAW,IAAI,MAAMC,CAAM,EAE3B,QAASzG,EAAI,EAAGA,EAAIuG,EAAK,OAAQvG,IAC/B,QAASC,EAAI,EAAGA,EAAIC,EAAMD,IACxBuG,EAASxG,EAAIE,EAAOD,CAAC,EAAIsG,EAAKvG,CAAC,EAAEC,CAAC,GAAK,CAG/C,MACIuG,EAAWD,EAGb,OAAI1E,EACKF,GAAkB6E,EAAU,CACjC,KAAAtG,EACA,eAAA2B,CACN,CAAK,EAGCjI,EACKiL,GAA4B2B,EAAU,CAC3C,KAAAtG,CACN,CAAK,EAGIsG,CACT,CC7BA,MAAME,GAAY,EACZC,GAAU,EACVC,GAAU,EACD,MAAMC,WAAuBxL,EAAW,CACrD,YAAYnE,EAAM,CAChB,MAAM,CAAE,GAAGA,EACT,WAAY,CACV,UAAW,CACT,KAAM,EACN,QAAS,GACT,WAAY,GACZ,KAAMA,EAAK,KAAO,aAAe,YAClC,EACD,aAAc,CACZ,KAAM,EACN,KAAM,iBACP,CACF,CACP,CAAK,CACF,CAED,IAAI4P,EAAe,CACjB,OAAO,KAAK,WAAWA,CAAa,CACrC,CAED,sBAAsBC,EAAQ,CAC5B,OAAI,KAAK,UACA,MAAM,sBAAsBA,CAAM,EAGpC,IACR,CAED,kBAAkBR,EAAM,CACtB,OAAI,KAAK,UACAD,GAAcC,EAAM,KAAK,aAAc,KAAK,KAAK,WAAY,KAAK,KAAK,aAAa,EAGtFA,CACR,CAED,gBAAgBA,EAAM,CACpB,GAAIS,GAAMT,CAAI,EAAG,CACf,IAAIrG,EAAO,EAEX,UAAW+G,KAAWV,EACpBrG,GAAQ,KAAK,gBAAgB+G,CAAO,EAGtC,OAAO/G,CACR,CAED,MAAMC,EAAY,KAAK,cAAcoG,CAAI,EAEzC,OAAIpG,EAAY,EACP,EAGL,KAAK,SAASoG,CAAI,EACbpG,EAAY,EAAI,EAAIA,EAAY,EAGlCA,CACR,CAED,yBAAyBoG,EAAMpO,EAAS,CACtC,GAAIA,EAAQ,eAAiB,EAI7B,GAAIoO,GAAQS,GAAMT,CAAI,EACpB,UAAWU,KAAWV,EAAM,CAC1B,MAAMW,EAAe,KAAK,gBAAgBD,CAAO,EACjD9O,EAAQ,aAAe+O,EACvB,KAAK,yBAAyBD,EAAS9O,CAAO,EAC9CA,EAAQ,aAAe+O,CACxB,MAED,KAAK,oBAAoBX,EAAMpO,CAAO,EAEtC,KAAK,iBAAiBoO,EAAMpO,CAAO,CAEtC,CAED,oBAAoBoO,EAAMpO,EAAS,CACjC,MAAMgP,EAAe,KAAK,WAAW,aAC/BC,EAAeb,EAAO,KAAK,SAASA,CAAI,EAAI,GAC5C,CACJ,YAAAc,EACA,aAAAH,CACD,EAAG/O,EACJgP,EAAa,KAAK,EAAGE,EAAaA,EAAcH,CAAY,EAExDE,GACFD,EAAaE,CAAW,EAAIT,GAC5BO,EAAaE,EAAcH,EAAe,CAAC,EAAIN,KAE/CO,EAAaE,CAAW,GAAKX,GAC7BS,EAAaE,EAAcH,EAAe,CAAC,GAAKP,IAGlDQ,EAAaE,EAAcH,EAAe,CAAC,EAAIN,EAChD,CAED,iBAAiBL,EAAMpO,EAAS,CAC9B,KAAM,CACJ,UAAA8G,CACN,EAAQ,KAAK,WAET,GAAI,CAACA,GAAa,CAACsH,EACjB,OAGF,KAAM,CACJ,YAAAc,EACA,aAAAH,CACD,EAAG/O,EACEsJ,EAAI,IAAI,MAAM,CAAC,EAErB,QAASzB,EAAIqH,EAAaC,EAAU,EAAGA,EAAUJ,EAAclH,IAAKsH,IAClE,KAAK,eAAef,EAAMe,EAAS7F,CAAC,EACpCxC,EAAUe,EAAI,CAAC,EAAIyB,EAAE,CAAC,EACtBxC,EAAUe,EAAI,EAAI,CAAC,EAAIyB,EAAE,CAAC,EAC1BxC,EAAUe,EAAI,EAAI,CAAC,EAAIyB,EAAE,CAAC,CAE7B,CAED,cAAc8E,EAAM,CAClB,OAAOA,EAAK,OAAS,KAAK,YAC3B,CAED,eAAeA,EAAMxP,EAAO0J,EAAS,CAAA,EAAI,CACvC,KAAM,CACJ,aAAA8G,CACD,EAAG,KAEAxQ,EAAQwQ,GAAgBhB,EAAK,SAC/BxP,GAAS,EAAIwP,EAAK,OAASgB,GAG7B,MAAMvH,EAAIjJ,EAAQwQ,EAClB,OAAA9G,EAAO,CAAC,EAAI8F,EAAKvG,CAAC,EAClBS,EAAO,CAAC,EAAI8F,EAAKvG,EAAI,CAAC,EACtBS,EAAO,CAAC,EAAI8G,IAAiB,GAAKhB,EAAKvG,EAAI,CAAC,GAAK,EAC1CS,CACR,CAED,SAAS8F,EAAM,CACb,GAAI,CAAC,KAAK,UACR,MAAO,EAAQ,KAAK,KAAK,KAG3B,KAAM,CACJ,aAAAgB,CACD,EAAG,KACEC,EAAiBjB,EAAK,OAASgB,EACrC,OAAOhB,EAAK,CAAC,IAAMA,EAAKiB,CAAc,GAAKjB,EAAK,CAAC,IAAMA,EAAKiB,EAAiB,CAAC,IAAMD,IAAiB,GAAKhB,EAAK,CAAC,IAAMA,EAAKiB,EAAiB,CAAC,EAC9I,CAEH,CAEA,SAASR,GAAMT,EAAM,CACnB,OAAO,MAAM,QAAQA,EAAK,CAAC,CAAC,CAC9B,CCrKA,MAAAkB,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECAfC,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECMTjK,GAAgB,CAAC,EAAG,EAAG,EAAG,GAAG,EAC7BC,GAAe,CACnB,WAAY,SACZ,WAAY,CACV,KAAM,SACN,IAAK,EACL,MAAO,CACR,EACD,eAAgB,CACd,KAAM,SACN,IAAK,EACL,MAAO,CACR,EACD,eAAgB,CACd,KAAM,SACN,IAAK,EACL,MAAO,OAAO,gBACf,EACD,aAAc,GACd,WAAY,GACZ,WAAY,CACV,KAAM,SACN,IAAK,EACL,MAAO,CACR,EACD,UAAW,GACX,UAAW,KACX,QAAS,CACP,KAAM,WACN,MAAOpF,GAAUA,EAAO,IACzB,EACD,SAAU,CACR,KAAM,WACN,MAAOmF,EACR,EACD,SAAU,CACR,KAAM,WACN,MAAO,CACR,EACD,QAAS,CACP,cAAe,CAAC,eAAgB,YAAY,CAC7C,CACH,EACMkK,GAAuB,CAC3B,MAAO,CAAC1L,EAAO2L,IACNA,EAAM,OAASA,EAAM,SAASA,EAAM,OAAS3L,EAAM,MAAM,EAAIA,CAExE,EACe,MAAM4L,WAAkB5P,EAAM,CAC3C,eAAe6P,EAAM,CACnB,MAAM,GAAGA,CAAI,EAEb1M,EAAgB,KAAM,QAAS,MAAM,CACtC,CAED,YAAa,CACX,OAAO,MAAM,WAAW,CAC5B,GAAMwC,GACN,GAAMC,GACA,QAAS,CAACC,GAAWC,EAAO,CAClC,CAAK,CACF,CAED,IAAI,eAAgB,CAClB,MAAO,EACR,CAED,iBAAkB,CAES,KAAK,sBACb,aAAa,CAC5B,UAAW,CACT,KAAM,EACN,aAAc,EACd,KAAM,KACN,KAAM,KAAK,kBAAmB,EAC9B,WAAY4J,GACZ,SAAU,UACV,OAAQ,KAAK,mBACb,WACA,iBAAkB,CAChB,sBAAuB,CACrB,aAAc,CACf,EACD,uBAAwB,CACtB,aAAc,CACf,EACD,qBAAsB,CACpB,aAAc,CACf,EACD,uBAAwB,CACtB,aAAc,CACf,CACF,CACF,EACD,cAAe,CACb,KAAM,EACN,KAAM,KACN,OAAQ,KAAK,sBACb,UACD,EACD,qBAAsB,CACpB,KAAM,EACN,SAAU,WACV,WAAYA,GACZ,aAAc,CACf,EACD,eAAgB,CACd,KAAM,KAAK,MAAM,YAAY,OAC7B,KAAM,KACN,WAAY,GACZ,SAAU,WACV,WAAYA,GACZ,aAAclK,EACf,EACD,sBAAuB,CACrB,KAAM,EACN,KAAM,KACN,SAAU,CAACnF,EAAQ,CACjB,MAAAvB,EACA,OAAQkF,CACT,IAAK,KAAK,mBAAmB3D,GAAUA,EAAO,SAAWA,EAAO,SAAS,MAAQvB,EAAOkF,CAAK,CAC/F,CACP,CAAK,EACD,KAAK,SAAS,CACZ,eAAgB,IAAI4K,GAAe,CACjC,KAAM,KAAK,kBAAmB,CACtC,CAAO,CACP,CAAK,CACF,CAED,YAAY7I,EAAQ,CAClB,MAAM,YAAYA,CAAM,EACxB,KAAM,CACJ,MAAA+J,EACA,YAAAC,CACD,EAAGhK,EACEiK,EAAmB,KAAK,sBAG9B,GAFwBD,EAAY,aAAeA,EAAY,wBAA0BA,EAAY,sBAAsB,KAAOA,EAAY,sBAAsB,SAE/I,CACnB,KAAM,CACJ,eAAAE,CACR,EAAU,KAAK,MACH1M,EAAUuM,EAAM,KAAK,YAAc,CAAA,EACzCG,EAAe,eAAe,CAC5B,KAAMH,EAAM,KACZ,eAAgBvM,EAAQ,QACxB,QAAAA,EACA,UAAW,CAACuM,EAAM,UAClB,KAAMA,EAAM,YAAc,OAC1B,YAAaA,EAAM,QACnB,eAAgBA,EAAM,eACtB,cAAeA,EAAM,cACrB,WAAY,KAAK,QAAQ,SAAS,WAClC,YAAaC,EAAY,WACjC,CAAO,EACD,KAAK,SAAS,CACZ,aAAcE,EAAe,cAC7B,aAAcA,EAAe,YACrC,CAAO,EAEIF,EAAY,aACfC,EAAiB,cAAa,CAEjC,CAED,GAAID,EAAY,kBAAmB,CACjC,IAAI/J,EAEJ,KAAM,CACJ,GAAAC,CACR,EAAU,KAAK,SACRD,EAAoB,KAAK,MAAM,SAAW,MAAQA,IAAsB,QAAkBA,EAAkB,OAAM,EACnH,KAAK,MAAM,MAAQ,KAAK,UAAUC,CAAE,EACpC+J,EAAiB,cAAa,CAC/B,CACF,CAED,eAAejK,EAAQ,CACrB,MAAM3F,EAAO,MAAM,eAAe2F,CAAM,EAClC,CACJ,MAAAjH,CACD,EAAGsB,EACE,CACJ,KAAAG,CACN,EAAQ,KAAK,MAET,OAAIA,EAAK,CAAC,GAAKA,EAAK,CAAC,EAAE,WACrBH,EAAK,OAASG,EAAK,KAAK2P,GAAKA,EAAE,SAAS,QAAUpR,CAAK,GAGlDsB,CACR,CAED,oBAAoB+P,EAAa,CAC/B,KAAM,CACJ,KAAA5P,CACN,EAAQ,KAAK,MAET,GAAIA,EAAK,CAAC,GAAKA,EAAK,CAAC,EAAE,SACrB,QAASwH,EAAI,EAAGA,EAAIxH,EAAK,OAAQwH,IAC3BxH,EAAKwH,CAAC,EAAE,SAAS,QAAUoI,GAC7B,KAAK,qBAAqBpI,CAAC,OAI/B,MAAM,oBAAoBoI,CAAW,CAExC,CAED,KAAK,CACH,SAAAjK,CACJ,EAAK,CACD,KAAM,CACJ,aAAAkK,EACA,WAAAC,EACA,UAAA5J,EACA,WAAA6J,EACA,WAAAC,EACA,WAAAC,EACA,eAAAC,EACA,eAAAC,CACN,EAAQ,KAAK,MACT,KAAK,MAAM,MAAM,YAAYxK,CAAQ,EAAE,YAAY,CACjD,UAAW,OAAOkK,CAAY,EAC9B,QAAS,OAAOC,CAAU,EAC1B,UAAA5J,EACA,WAAYM,GAAKwJ,CAAU,EAC3B,WAAAC,EACA,WAAAF,EACA,eAAAG,EACA,eAAAC,CACN,CAAK,EAAE,KAAI,CACR,CAED,UAAUzK,EAAI,CACZ,MAAM0K,EAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACrDC,EAAoB,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,EAC/D,OAAO,IAAI3J,GAAMhB,EAAI,CAAE,GAAG,KAAK,WAAY,EACzC,GAAI,KAAK,MAAM,GACf,SAAU,IAAIiB,GAAS,CACrB,SAAU,EACV,WAAY,CACV,QAAS,IAAI,YAAYyJ,CAAe,EACxC,UAAW,CACT,MAAO,IAAI,aAAaC,CAAiB,EACzC,KAAM,CACP,CACF,CACT,CAAO,EACD,YAAa,EACnB,CAAK,CACF,CAED,mBAAmBC,EAAW,CAC5B,KAAM,CACJ,eAAAZ,CACN,EAAQ,KAAK,MACTY,EAAU,aAAeZ,EAAe,aACxCY,EAAU,MAAQZ,EAAe,IAAI,WAAW,CACjD,CAED,sBAAsBY,EAAW,CAC/B,KAAM,CACJ,eAAAZ,CACN,EAAQ,KAAK,MACTY,EAAU,aAAeZ,EAAe,aACxCY,EAAU,MAAQZ,EAAe,IAAI,cAAc,CACpD,CAEH,CAEA9M,EAAgByM,GAAW,eAAgBnK,EAAY,EAEvDtC,EAAgByM,GAAW,YAAa,WAAW,sBCvRnDkB,GAAc,QAAGC,GACKD,GAAA,QAAA,QAAGC,GAEzB,SAASA,GAAOxQ,EAAMsK,EAAahD,EAAK,CAEpCA,EAAMA,GAAO,EAEb,IAAImJ,EAAWnG,GAAeA,EAAY,OACtCoG,EAAWD,EAAWnG,EAAY,CAAC,EAAIhD,EAAMtH,EAAK,OAClD2Q,EAAYC,GAAW5Q,EAAM,EAAG0Q,EAAUpJ,EAAK,EAAI,EACnDuJ,EAAY,CAAA,EAEhB,GAAI,CAACF,GAAaA,EAAU,OAASA,EAAU,KAAM,OAAOE,EAE5D,IAAI9E,EAAME,EAAMD,EAAME,EAAM7M,EAAG8M,EAAG2E,EAKlC,GAHIL,IAAUE,EAAYI,GAAe/Q,EAAMsK,EAAaqG,EAAWrJ,CAAG,GAGtEtH,EAAK,OAAS,GAAKsH,EAAK,CACxByE,EAAOC,EAAOhM,EAAK,CAAC,EACpBiM,EAAOC,EAAOlM,EAAK,CAAC,EAEpB,QAASwH,EAAIF,EAAKE,EAAIkJ,EAAUlJ,GAAKF,EACjCjI,EAAIW,EAAKwH,CAAC,EACV2E,EAAInM,EAAKwH,EAAI,CAAC,EACVnI,EAAI0M,IAAMA,EAAO1M,GACjB8M,EAAIF,IAAMA,EAAOE,GACjB9M,EAAI2M,IAAMA,EAAO3M,GACjB8M,EAAID,IAAMA,EAAOC,GAIzB2E,EAAU,KAAK,IAAI9E,EAAOD,EAAMG,EAAOD,CAAI,EAC3C6E,EAAUA,IAAY,EAAI,MAAQA,EAAU,CAC/C,CAED,OAAAE,GAAaL,EAAWE,EAAWvJ,EAAKyE,EAAME,EAAM6E,EAAS,CAAC,EAEvDD,CACX,CAGA,SAASD,GAAW5Q,EAAMoH,EAAOC,EAAKC,EAAK2J,EAAW,CAClD,IAAIzJ,EAAG0J,EAEP,GAAID,IAAeE,GAAWnR,EAAMoH,EAAOC,EAAKC,CAAG,EAAI,EACnD,IAAKE,EAAIJ,EAAOI,EAAIH,EAAKG,GAAKF,EAAK4J,EAAOE,GAAW5J,EAAGxH,EAAKwH,CAAC,EAAGxH,EAAKwH,EAAI,CAAC,EAAG0J,CAAI,MAElF,KAAK1J,EAAIH,EAAMC,EAAKE,GAAKJ,EAAOI,GAAKF,EAAK4J,EAAOE,GAAW5J,EAAGxH,EAAKwH,CAAC,EAAGxH,EAAKwH,EAAI,CAAC,EAAG0J,CAAI,EAG7F,OAAIA,GAAQG,GAAOH,EAAMA,EAAK,IAAI,IAC9BI,GAAWJ,CAAI,EACfA,EAAOA,EAAK,MAGTA,CACX,CAGA,SAASK,GAAanK,EAAOC,EAAK,CAC9B,GAAI,CAACD,EAAO,OAAOA,EACdC,IAAKA,EAAMD,GAEhB,IAAI6B,EAAI7B,EACJoK,EACJ,EAGI,IAFAA,EAAQ,GAEJ,CAACvI,EAAE,UAAYoI,GAAOpI,EAAGA,EAAE,IAAI,GAAK1B,GAAK0B,EAAE,KAAMA,EAAGA,EAAE,IAAI,IAAM,GAAI,CAGpE,GAFAqI,GAAWrI,CAAC,EACZA,EAAI5B,EAAM4B,EAAE,KACRA,IAAMA,EAAE,KAAM,MAClBuI,EAAQ,EAEpB,MACYvI,EAAIA,EAAE,WAELuI,GAASvI,IAAM5B,GAExB,OAAOA,CACX,CAGA,SAAS2J,GAAaS,EAAKZ,EAAWvJ,EAAKyE,EAAME,EAAM6E,EAASY,EAAM,CAClE,GAAKD,EAGL,CAAI,CAACC,GAAQZ,GAASa,GAAWF,EAAK1F,EAAME,EAAM6E,CAAO,EAMzD,QAJIc,EAAOH,EACPjG,EAAMqG,EAGHJ,EAAI,OAASA,EAAI,MAAM,CAI1B,GAHAjG,EAAOiG,EAAI,KACXI,EAAOJ,EAAI,KAEPX,EAAUgB,GAAYL,EAAK1F,EAAME,EAAM6E,CAAO,EAAIiB,GAAMN,CAAG,EAAG,CAE9DZ,EAAU,KAAKrF,EAAK,EAAIlE,EAAM,CAAC,EAC/BuJ,EAAU,KAAKY,EAAI,EAAInK,EAAM,CAAC,EAC9BuJ,EAAU,KAAKgB,EAAK,EAAIvK,EAAM,CAAC,EAE/BgK,GAAWG,CAAG,EAGdA,EAAMI,EAAK,KACXD,EAAOC,EAAK,KAEZ,QACH,CAKD,GAHAJ,EAAMI,EAGFJ,IAAQG,EAAM,CAETF,EAIMA,IAAS,GAChBD,EAAMO,GAAuBT,GAAaE,CAAG,EAAGZ,EAAWvJ,CAAG,EAC9D0J,GAAaS,EAAKZ,EAAWvJ,EAAKyE,EAAME,EAAM6E,EAAS,CAAC,GAGjDY,IAAS,GAChBO,GAAYR,EAAKZ,EAAWvJ,EAAKyE,EAAME,EAAM6E,CAAO,EATpDE,GAAaO,GAAaE,CAAG,EAAGZ,EAAWvJ,EAAKyE,EAAME,EAAM6E,EAAS,CAAC,EAY1E,KACH,CACJ,EACL,CAGA,SAASiB,GAAMN,EAAK,CAChB,IAAI/I,EAAI+I,EAAI,KACR9I,EAAI8I,EACJS,EAAIT,EAAI,KAEZ,GAAIlK,GAAKmB,EAAGC,EAAGuJ,CAAC,GAAK,EAAG,MAAO,GAY/B,QATIC,EAAKzJ,EAAE,EAAG0J,EAAKzJ,EAAE,EAAG0J,EAAKH,EAAE,EAAGI,EAAK5J,EAAE,EAAG6J,EAAK5J,EAAE,EAAG6J,EAAKN,EAAE,EAGzDO,EAAKN,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDK,EAAKJ,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDG,EAAKR,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDO,EAAKN,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EAErDvJ,EAAIiJ,EAAE,KACHjJ,IAAMP,GAAG,CACZ,GAAIO,EAAE,GAAKwJ,GAAMxJ,EAAE,GAAK0J,GAAM1J,EAAE,GAAKyJ,GAAMzJ,EAAE,GAAK2J,GAC9CC,GAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAIvJ,EAAE,EAAGA,EAAE,CAAC,GAChD1B,GAAK0B,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,EAAG,MAAO,GACzCA,EAAIA,EAAE,IACT,CAED,MAAO,EACX,CAEA,SAAS6I,GAAYL,EAAK1F,EAAME,EAAM6E,EAAS,CAC3C,IAAIpI,EAAI+I,EAAI,KACR9I,EAAI8I,EACJS,EAAIT,EAAI,KAEZ,GAAIlK,GAAKmB,EAAGC,EAAGuJ,CAAC,GAAK,EAAG,MAAO,GAkB/B,QAhBIC,EAAKzJ,EAAE,EAAG0J,EAAKzJ,EAAE,EAAG0J,EAAKH,EAAE,EAAGI,EAAK5J,EAAE,EAAG6J,EAAK5J,EAAE,EAAG6J,EAAKN,EAAE,EAGzDO,EAAKN,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDK,EAAKJ,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDG,EAAKR,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDO,EAAKN,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EAGrDM,EAAOC,GAAON,EAAIC,EAAI3G,EAAME,EAAM6E,CAAO,EACzCkC,EAAOD,GAAOJ,EAAIC,EAAI7G,EAAME,EAAM6E,CAAO,EAEzC7H,EAAIwI,EAAI,MACRwB,EAAIxB,EAAI,MAGLxI,GAAKA,EAAE,GAAK6J,GAAQG,GAAKA,EAAE,GAAKD,GAAM,CAKzC,GAJI/J,EAAE,GAAKwJ,GAAMxJ,EAAE,GAAK0J,GAAM1J,EAAE,GAAKyJ,GAAMzJ,EAAE,GAAK2J,GAAM3J,IAAMP,GAAKO,IAAMiJ,GACrEW,GAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAIvJ,EAAE,EAAGA,EAAE,CAAC,GAAK1B,GAAK0B,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,IACpFA,EAAIA,EAAE,MAEFgK,EAAE,GAAKR,GAAMQ,EAAE,GAAKN,GAAMM,EAAE,GAAKP,GAAMO,EAAE,GAAKL,GAAMK,IAAMvK,GAAKuK,IAAMf,GACrEW,GAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAIS,EAAE,EAAGA,EAAE,CAAC,GAAK1L,GAAK0L,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,GAAG,MAAO,GAC9FA,EAAIA,EAAE,KACT,CAGD,KAAOhK,GAAKA,EAAE,GAAK6J,GAAM,CACrB,GAAI7J,EAAE,GAAKwJ,GAAMxJ,EAAE,GAAK0J,GAAM1J,EAAE,GAAKyJ,GAAMzJ,EAAE,GAAK2J,GAAM3J,IAAMP,GAAKO,IAAMiJ,GACrEW,GAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAIvJ,EAAE,EAAGA,EAAE,CAAC,GAAK1B,GAAK0B,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,EAAG,MAAO,GAC9FA,EAAIA,EAAE,KACT,CAGD,KAAOgK,GAAKA,EAAE,GAAKD,GAAM,CACrB,GAAIC,EAAE,GAAKR,GAAMQ,EAAE,GAAKN,GAAMM,EAAE,GAAKP,GAAMO,EAAE,GAAKL,GAAMK,IAAMvK,GAAKuK,IAAMf,GACrEW,GAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAIS,EAAE,EAAGA,EAAE,CAAC,GAAK1L,GAAK0L,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,EAAG,MAAO,GAC9FA,EAAIA,EAAE,KACT,CAED,MAAO,EACX,CAGA,SAASjB,GAAuB5K,EAAOyJ,EAAWvJ,EAAK,CACnD,IAAI2B,EAAI7B,EACR,EAAG,CACC,IAAIsB,EAAIO,EAAE,KACNN,EAAIM,EAAE,KAAK,KAEX,CAACoI,GAAO3I,EAAGC,CAAC,GAAKuK,GAAWxK,EAAGO,EAAGA,EAAE,KAAMN,CAAC,GAAKwK,GAAczK,EAAGC,CAAC,GAAKwK,GAAcxK,EAAGD,CAAC,IAEzFmI,EAAU,KAAKnI,EAAE,EAAIpB,EAAM,CAAC,EAC5BuJ,EAAU,KAAK5H,EAAE,EAAI3B,EAAM,CAAC,EAC5BuJ,EAAU,KAAKlI,EAAE,EAAIrB,EAAM,CAAC,EAG5BgK,GAAWrI,CAAC,EACZqI,GAAWrI,EAAE,IAAI,EAEjBA,EAAI7B,EAAQuB,GAEhBM,EAAIA,EAAE,IACd,OAAaA,IAAM7B,GAEf,OAAOmK,GAAatI,CAAC,CACzB,CAGA,SAASgJ,GAAY7K,EAAOyJ,EAAWvJ,EAAKyE,EAAME,EAAM6E,EAAS,CAE7D,IAAIpI,EAAItB,EACR,EAAG,CAEC,QADIuB,EAAID,EAAE,KAAK,KACRC,IAAMD,EAAE,MAAM,CACjB,GAAIA,EAAE,IAAMC,EAAE,GAAKyK,GAAgB1K,EAAGC,CAAC,EAAG,CAEtC,IAAIuJ,EAAImB,GAAa3K,EAAGC,CAAC,EAGzBD,EAAI6I,GAAa7I,EAAGA,EAAE,IAAI,EAC1BwJ,EAAIX,GAAaW,EAAGA,EAAE,IAAI,EAG1BlB,GAAatI,EAAGmI,EAAWvJ,EAAKyE,EAAME,EAAM6E,EAAS,CAAC,EACtDE,GAAakB,EAAGrB,EAAWvJ,EAAKyE,EAAME,EAAM6E,EAAS,CAAC,EACtD,MACH,CACDnI,EAAIA,EAAE,IACT,CACDD,EAAIA,EAAE,IACd,OAAaA,IAAMtB,EACnB,CAGA,SAAS2J,GAAe/Q,EAAMsK,EAAaqG,EAAWrJ,EAAK,CACvD,IAAIkD,EAAQ,CAAE,EACVhD,EAAG8L,EAAKlM,EAAOC,EAAKkM,EAExB,IAAK/L,EAAI,EAAG8L,EAAMhJ,EAAY,OAAQ9C,EAAI8L,EAAK9L,IAC3CJ,EAAQkD,EAAY9C,CAAC,EAAIF,EACzBD,EAAMG,EAAI8L,EAAM,EAAIhJ,EAAY9C,EAAI,CAAC,EAAIF,EAAMtH,EAAK,OACpDuT,EAAO3C,GAAW5Q,EAAMoH,EAAOC,EAAKC,EAAK,EAAK,EAC1CiM,IAASA,EAAK,OAAMA,EAAK,QAAU,IACvC/I,EAAM,KAAKgJ,GAAYD,CAAI,CAAC,EAMhC,IAHA/I,EAAM,KAAKiJ,EAAQ,EAGdjM,EAAI,EAAGA,EAAIgD,EAAM,OAAQhD,IAC1BmJ,EAAY+C,GAAclJ,EAAMhD,CAAC,EAAGmJ,CAAS,EAGjD,OAAOA,CACX,CAEA,SAAS8C,GAAS/K,EAAGC,EAAG,CACpB,OAAOD,EAAE,EAAIC,EAAE,CACnB,CAGA,SAAS+K,GAAcC,EAAMhD,EAAW,CACpC,IAAIiD,EAASC,GAAeF,EAAMhD,CAAS,EAC3C,GAAI,CAACiD,EACD,OAAOjD,EAGX,IAAImD,EAAgBT,GAAaO,EAAQD,CAAI,EAG7C,OAAApC,GAAauC,EAAeA,EAAc,IAAI,EACvCvC,GAAaqC,EAAQA,EAAO,IAAI,CAC3C,CAGA,SAASC,GAAeF,EAAMhD,EAAW,CACrC,IAAI1H,EAAI0H,EACJoD,EAAKJ,EAAK,EACVK,EAAKL,EAAK,EACVM,EAAK,KACLC,EAIJ,EAAG,CACC,GAAIF,GAAM/K,EAAE,GAAK+K,GAAM/K,EAAE,KAAK,GAAKA,EAAE,KAAK,IAAMA,EAAE,EAAG,CACjD,IAAI5J,EAAI4J,EAAE,GAAK+K,EAAK/K,EAAE,IAAMA,EAAE,KAAK,EAAIA,EAAE,IAAMA,EAAE,KAAK,EAAIA,EAAE,GAC5D,GAAI5J,GAAK0U,GAAM1U,EAAI4U,IACfA,EAAK5U,EACL6U,EAAIjL,EAAE,EAAIA,EAAE,KAAK,EAAIA,EAAIA,EAAE,KACvB5J,IAAM0U,GAAI,OAAOG,CAE5B,CACDjL,EAAIA,EAAE,IACd,OAAaA,IAAM0H,GAEf,GAAI,CAACuD,EAAG,OAAO,KAMf,IAAItC,EAAOsC,EACPC,EAAKD,EAAE,EACPE,EAAKF,EAAE,EACPG,EAAS,IACTC,EAEJrL,EAAIiL,EAEJ,GACQH,GAAM9K,EAAE,GAAKA,EAAE,GAAKkL,GAAMJ,IAAO9K,EAAE,GAC/B4J,GAAgBmB,EAAKI,EAAKL,EAAKE,EAAID,EAAIG,EAAIC,EAAIJ,EAAKI,EAAKH,EAAKF,EAAIC,EAAI/K,EAAE,EAAGA,EAAE,CAAC,IAElFqL,EAAM,KAAK,IAAIN,EAAK/K,EAAE,CAAC,GAAK8K,EAAK9K,EAAE,GAE/BkK,GAAclK,EAAG0K,CAAI,IACpBW,EAAMD,GAAWC,IAAQD,IAAWpL,EAAE,EAAIiL,EAAE,GAAMjL,EAAE,IAAMiL,EAAE,GAAKK,GAAqBL,EAAGjL,CAAC,MAC3FiL,EAAIjL,EACJoL,EAASC,IAIjBrL,EAAIA,EAAE,WACDA,IAAM2I,GAEf,OAAOsC,CACX,CAGA,SAASK,GAAqBL,EAAGjL,EAAG,CAChC,OAAO1B,GAAK2M,EAAE,KAAMA,EAAGjL,EAAE,IAAI,EAAI,GAAK1B,GAAK0B,EAAE,KAAMiL,EAAGA,EAAE,IAAI,EAAI,CACpE,CAGA,SAASvC,GAAWvK,EAAO2E,EAAME,EAAM6E,EAAS,CAC5C,IAAI7H,EAAI7B,EACR,GACQ6B,EAAE,IAAM,IAAGA,EAAE,EAAI8J,GAAO9J,EAAE,EAAGA,EAAE,EAAG8C,EAAME,EAAM6E,CAAO,GACzD7H,EAAE,MAAQA,EAAE,KACZA,EAAE,MAAQA,EAAE,KACZA,EAAIA,EAAE,WACDA,IAAM7B,GAEf6B,EAAE,MAAM,MAAQ,KAChBA,EAAE,MAAQ,KAEVuL,GAAWvL,CAAC,CAChB,CAIA,SAASuL,GAAWjB,EAAM,CACtB,IAAI/L,EAAGyB,EAAGwL,EAAGC,EAAGC,EAAMC,EAAWC,EAAOC,EACpCC,EAAS,EAEb,EAAG,CAMC,IALA9L,EAAIsK,EACJA,EAAO,KACPoB,EAAO,KACPC,EAAY,EAEL3L,GAAG,CAIN,IAHA2L,IACAH,EAAIxL,EACJ4L,EAAQ,EACHrN,EAAI,EAAGA,EAAIuN,IACZF,IACAJ,EAAIA,EAAE,MACF,EAACA,GAHejN,IAGpB,CAIJ,IAFAsN,EAAQC,EAEDF,EAAQ,GAAMC,EAAQ,GAAKL,GAE1BI,IAAU,IAAMC,IAAU,GAAK,CAACL,GAAKxL,EAAE,GAAKwL,EAAE,IAC9CC,EAAIzL,EACJA,EAAIA,EAAE,MACN4L,MAEAH,EAAID,EACJA,EAAIA,EAAE,MACNK,KAGAH,EAAMA,EAAK,MAAQD,EAClBnB,EAAOmB,EAEZA,EAAE,MAAQC,EACVA,EAAOD,EAGXzL,EAAIwL,CACP,CAEDE,EAAK,MAAQ,KACbI,GAAU,CAElB,OAAaH,EAAY,GAErB,OAAOrB,CACX,CAGA,SAASR,GAAO1T,EAAG8M,EAAGJ,EAAME,EAAM6E,EAAS,CAEvC,OAAAzR,GAAKA,EAAI0M,GAAQ+E,EAAU,EAC3B3E,GAAKA,EAAIF,GAAQ6E,EAAU,EAE3BzR,GAAKA,EAAKA,GAAK,GAAM,SACrBA,GAAKA,EAAKA,GAAK,GAAM,UACrBA,GAAKA,EAAKA,GAAK,GAAM,UACrBA,GAAKA,EAAKA,GAAK,GAAM,WAErB8M,GAAKA,EAAKA,GAAK,GAAM,SACrBA,GAAKA,EAAKA,GAAK,GAAM,UACrBA,GAAKA,EAAKA,GAAK,GAAM,UACrBA,GAAKA,EAAKA,GAAK,GAAM,WAEd9M,EAAK8M,GAAK,CACrB,CAGA,SAASqH,GAAYpM,EAAO,CACxB,IAAI6B,EAAI7B,EACJ4N,EAAW5N,EACf,GACQ6B,EAAE,EAAI+L,EAAS,GAAM/L,EAAE,IAAM+L,EAAS,GAAK/L,EAAE,EAAI+L,EAAS,KAAIA,EAAW/L,GAC7EA,EAAIA,EAAE,WACDA,IAAM7B,GAEf,OAAO4N,CACX,CAGA,SAASnC,GAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAIyC,EAAIC,EAAI,CACrD,OAAQ7C,EAAK4C,IAAO3C,EAAK4C,KAAQ/C,EAAK8C,IAAOzC,EAAK0C,KAC1C/C,EAAK8C,IAAO1C,EAAK2C,KAAQ9C,EAAK6C,IAAO3C,EAAK4C,KAC1C9C,EAAK6C,IAAOzC,EAAK0C,KAAQ7C,EAAK4C,IAAO1C,EAAK2C,EACtD,CAGA,SAAS9B,GAAgB1K,EAAGC,EAAG,CAC3B,OAAOD,EAAE,KAAK,IAAMC,EAAE,GAAKD,EAAE,KAAK,IAAMC,EAAE,GAAK,CAACwM,GAAkBzM,EAAGC,CAAC,IAC9DwK,GAAczK,EAAGC,CAAC,GAAKwK,GAAcxK,EAAGD,CAAC,GAAK0M,GAAa1M,EAAGC,CAAC,IAC9DpB,GAAKmB,EAAE,KAAMA,EAAGC,EAAE,IAAI,GAAKpB,GAAKmB,EAAGC,EAAE,KAAMA,CAAC,IAC7C0I,GAAO3I,EAAGC,CAAC,GAAKpB,GAAKmB,EAAE,KAAMA,EAAGA,EAAE,IAAI,EAAI,GAAKnB,GAAKoB,EAAE,KAAMA,EAAGA,EAAE,IAAI,EAAI,EACrF,CAGA,SAASpB,GAAK0B,EAAGwL,EAAGY,EAAG,CACnB,OAAQZ,EAAE,EAAIxL,EAAE,IAAMoM,EAAE,EAAIZ,EAAE,IAAMA,EAAE,EAAIxL,EAAE,IAAMoM,EAAE,EAAIZ,EAAE,EAC9D,CAGA,SAASpD,GAAOiE,EAAIC,EAAI,CACpB,OAAOD,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAMC,EAAG,CACxC,CAGA,SAASrC,GAAWoC,EAAIE,EAAID,EAAIE,EAAI,CAChC,IAAIC,EAAKC,GAAKpO,GAAK+N,EAAIE,EAAID,CAAE,CAAC,EAC1BK,EAAKD,GAAKpO,GAAK+N,EAAIE,EAAIC,CAAE,CAAC,EAC1BI,EAAKF,GAAKpO,GAAKgO,EAAIE,EAAIH,CAAE,CAAC,EAC1BQ,EAAKH,GAAKpO,GAAKgO,EAAIE,EAAID,CAAE,CAAC,EAO9B,MALI,GAAAE,IAAOE,GAAMC,IAAOC,GAEpBJ,IAAO,GAAKK,GAAUT,EAAIC,EAAIC,CAAE,GAChCI,IAAO,GAAKG,GAAUT,EAAIG,EAAID,CAAE,GAChCK,IAAO,GAAKE,GAAUR,EAAID,EAAIG,CAAE,GAChCK,IAAO,GAAKC,GAAUR,EAAIC,EAAIC,CAAE,EAGxC,CAGA,SAASM,GAAU9M,EAAGwL,EAAGY,EAAG,CACxB,OAAOZ,EAAE,GAAK,KAAK,IAAIxL,EAAE,EAAGoM,EAAE,CAAC,GAAKZ,EAAE,GAAK,KAAK,IAAIxL,EAAE,EAAGoM,EAAE,CAAC,GAAKZ,EAAE,GAAK,KAAK,IAAIxL,EAAE,EAAGoM,EAAE,CAAC,GAAKZ,EAAE,GAAK,KAAK,IAAIxL,EAAE,EAAGoM,EAAE,CAAC,CAC1H,CAEA,SAASM,GAAKK,EAAK,CACf,OAAOA,EAAM,EAAI,EAAIA,EAAM,EAAI,GAAK,CACxC,CAGA,SAASb,GAAkBzM,EAAGC,EAAG,CAC7B,IAAIM,EAAIP,EACR,EAAG,CACC,GAAIO,EAAE,IAAMP,EAAE,GAAKO,EAAE,KAAK,IAAMP,EAAE,GAAKO,EAAE,IAAMN,EAAE,GAAKM,EAAE,KAAK,IAAMN,EAAE,GAC7DuK,GAAWjK,EAAGA,EAAE,KAAMP,EAAGC,CAAC,EAAG,MAAO,GAC5CM,EAAIA,EAAE,IACd,OAAaA,IAAMP,GAEf,MAAO,EACX,CAGA,SAASyK,GAAczK,EAAGC,EAAG,CACzB,OAAOpB,GAAKmB,EAAE,KAAMA,EAAGA,EAAE,IAAI,EAAI,EAC7BnB,GAAKmB,EAAGC,EAAGD,EAAE,IAAI,GAAK,GAAKnB,GAAKmB,EAAGA,EAAE,KAAMC,CAAC,GAAK,EACjDpB,GAAKmB,EAAGC,EAAGD,EAAE,IAAI,EAAI,GAAKnB,GAAKmB,EAAGA,EAAE,KAAMC,CAAC,EAAI,CACvD,CAGA,SAASyM,GAAa1M,EAAGC,EAAG,CACxB,IAAIM,EAAIP,EACJuN,EAAS,GACThB,GAAMvM,EAAE,EAAIC,EAAE,GAAK,EACnBuM,GAAMxM,EAAE,EAAIC,EAAE,GAAK,EACvB,GACUM,EAAE,EAAIiM,GAASjM,EAAE,KAAK,EAAIiM,GAAQjM,EAAE,KAAK,IAAMA,EAAE,GAC9CgM,GAAMhM,EAAE,KAAK,EAAIA,EAAE,IAAMiM,EAAKjM,EAAE,IAAMA,EAAE,KAAK,EAAIA,EAAE,GAAKA,EAAE,IAC/DgN,EAAS,CAACA,GACdhN,EAAIA,EAAE,WACDA,IAAMP,GAEf,OAAOuN,CACX,CAIA,SAAS5C,GAAa3K,EAAGC,EAAG,CACxB,IAAIuN,EAAK,IAAIC,GAAKzN,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAC3BZ,EAAK,IAAIqO,GAAKxN,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAC3ByN,EAAK1N,EAAE,KACP2N,EAAK1N,EAAE,KAEX,OAAAD,EAAE,KAAOC,EACTA,EAAE,KAAOD,EAETwN,EAAG,KAAOE,EACVA,EAAG,KAAOF,EAEVpO,EAAG,KAAOoO,EACVA,EAAG,KAAOpO,EAEVuO,EAAG,KAAOvO,EACVA,EAAG,KAAOuO,EAEHvO,CACX,CAGA,SAASsJ,GAAW5J,EAAGnI,EAAG8M,EAAG+E,EAAM,CAC/B,IAAIjI,EAAI,IAAIkN,GAAK3O,EAAGnI,EAAG8M,CAAC,EAExB,OAAK+E,GAKDjI,EAAE,KAAOiI,EAAK,KACdjI,EAAE,KAAOiI,EACTA,EAAK,KAAK,KAAOjI,EACjBiI,EAAK,KAAOjI,IAPZA,EAAE,KAAOA,EACTA,EAAE,KAAOA,GAQNA,CACX,CAEA,SAASqI,GAAWrI,EAAG,CACnBA,EAAE,KAAK,KAAOA,EAAE,KAChBA,EAAE,KAAK,KAAOA,EAAE,KAEZA,EAAE,QAAOA,EAAE,MAAM,MAAQA,EAAE,OAC3BA,EAAE,QAAOA,EAAE,MAAM,MAAQA,EAAE,MACnC,CAEA,SAASkN,GAAK3O,EAAGnI,EAAG8M,EAAG,CAEnB,KAAK,EAAI3E,EAGT,KAAK,EAAInI,EACT,KAAK,EAAI8M,EAGT,KAAK,KAAO,KACZ,KAAK,KAAO,KAGZ,KAAK,EAAI,EAGT,KAAK,MAAQ,KACb,KAAK,MAAQ,KAGb,KAAK,QAAU,EACnB,CAIAqE,GAAO,UAAY,SAAUxQ,EAAMsK,EAAahD,EAAKuJ,EAAW,CAC5D,IAAIJ,EAAWnG,GAAeA,EAAY,OACtCoG,EAAWD,EAAWnG,EAAY,CAAC,EAAIhD,EAAMtH,EAAK,OAElDsW,EAAc,KAAK,IAAInF,GAAWnR,EAAM,EAAG0Q,EAAUpJ,CAAG,CAAC,EAC7D,GAAImJ,EACA,QAASjJ,EAAI,EAAG8L,EAAMhJ,EAAY,OAAQ9C,EAAI8L,EAAK9L,IAAK,CACpD,IAAIJ,EAAQkD,EAAY9C,CAAC,EAAIF,EACzBD,EAAMG,EAAI8L,EAAM,EAAIhJ,EAAY9C,EAAI,CAAC,EAAIF,EAAMtH,EAAK,OACxDsW,GAAe,KAAK,IAAInF,GAAWnR,EAAMoH,EAAOC,EAAKC,CAAG,CAAC,CAC5D,CAGL,IAAIiP,EAAgB,EACpB,IAAK/O,EAAI,EAAGA,EAAIqJ,EAAU,OAAQrJ,GAAK,EAAG,CACtC,IAAIkB,EAAImI,EAAUrJ,CAAC,EAAIF,EACnBqB,EAAIkI,EAAUrJ,EAAI,CAAC,EAAIF,EACvB4K,EAAIrB,EAAUrJ,EAAI,CAAC,EAAIF,EAC3BiP,GAAiB,KAAK,KACjBvW,EAAK0I,CAAC,EAAI1I,EAAKkS,CAAC,IAAMlS,EAAK2I,EAAI,CAAC,EAAI3I,EAAK0I,EAAI,CAAC,IAC9C1I,EAAK0I,CAAC,EAAI1I,EAAK2I,CAAC,IAAM3I,EAAKkS,EAAI,CAAC,EAAIlS,EAAK0I,EAAI,CAAC,EAAE,CACxD,CAED,OAAO4N,IAAgB,GAAKC,IAAkB,EAAI,EAC9C,KAAK,KAAKA,EAAgBD,GAAeA,CAAW,CAC5D,EAEA,SAASnF,GAAWnR,EAAMoH,EAAOC,EAAKC,EAAK,CAEvC,QADIkP,EAAM,EACDhP,EAAIJ,EAAOK,EAAIJ,EAAMC,EAAKE,EAAIH,EAAKG,GAAKF,EAC7CkP,IAAQxW,EAAKyH,CAAC,EAAIzH,EAAKwH,CAAC,IAAMxH,EAAKwH,EAAI,CAAC,EAAIxH,EAAKyH,EAAI,CAAC,GACtDA,EAAID,EAER,OAAOgP,CACX,CAGAhG,GAAO,QAAU,SAAUxQ,EAAM,CAK7B,QAJIsH,EAAMtH,EAAK,CAAC,EAAE,CAAC,EAAE,OACjByJ,EAAS,CAAC,SAAU,CAAE,EAAE,MAAO,CAAE,EAAE,WAAYnC,CAAG,EAClDmP,EAAY,EAEP,EAAI,EAAG,EAAIzW,EAAK,OAAQ,IAAK,CAClC,QAASyH,EAAI,EAAGA,EAAIzH,EAAK,CAAC,EAAE,OAAQyH,IAChC,QAASkI,EAAI,EAAGA,EAAIrI,EAAKqI,IAAKlG,EAAO,SAAS,KAAKzJ,EAAK,CAAC,EAAEyH,CAAC,EAAEkI,CAAC,CAAC,EAEhE,EAAI,IACJ8G,GAAazW,EAAK,EAAI,CAAC,EAAE,OACzByJ,EAAO,MAAM,KAAKgN,CAAS,EAElC,CACD,OAAOhN,CACX,oCCtqBMiN,GAAwB9P,GAAQ,UAChC+P,GAAuB/P,GAAQ,kBAC/BgQ,GAAiB,CACrB,SAAU,EACZ,EAEA,SAASC,GAAS5L,EAAS,CAGzB,GAFAA,EAAUA,GAAWA,EAAQ,WAAaA,EAEtC,CAAC,MAAM,QAAQA,CAAO,GAAK,CAAC,YAAY,OAAOA,CAAO,EACxD,MAAM,IAAI,MAAM,iBAAiB,CAErC,CAEO,SAAS6L,GAAa7L,EAAS,CACpC,MAAO,cAAeA,EAAUA,EAAQ,UAAYA,CACtD,CACO,SAAS8L,GAAe9L,EAAS,CACtC,MAAO,gBAAiBA,EAAUA,EAAQ,YAAc,IAC1D,CAEA,SAAS+L,GAAS/L,EAAS,CACzB,OAAO,MAAM,QAAQA,EAAQ,CAAC,CAAC,CACjC,CAEA,SAASgM,GAAShM,EAAS,CACzB,OAAOA,EAAQ,QAAU,GAAKA,EAAQ,CAAC,EAAE,QAAU,GAAK,OAAO,SAASA,EAAQ,CAAC,EAAE,CAAC,CAAC,CACvF,CAEA,SAASiM,GAAmBC,EAAe,CACzC,MAAMC,EAAKD,EAAc,CAAC,EACpB7B,EAAK6B,EAAcA,EAAc,OAAS,CAAC,EACjD,OAAOC,EAAG,CAAC,IAAM9B,EAAG,CAAC,GAAK8B,EAAG,CAAC,IAAM9B,EAAG,CAAC,GAAK8B,EAAG,CAAC,IAAM9B,EAAG,CAAC,CAC7D,CAEA,SAAS+B,GAAiB5Q,EAAWiB,EAAMS,EAAYoB,EAAU,CAC/D,QAAS,EAAI,EAAG,EAAI7B,EAAM,IACxB,GAAIjB,EAAU0B,EAAa,CAAC,IAAM1B,EAAU8C,EAAW7B,EAAO,CAAC,EAC7D,MAAO,GAIX,MAAO,EACT,CAEA,SAAS4P,GAAerP,EAAQ8E,EAAkBoK,EAAezP,EAAM6P,EAAkB,CACvF,IAAI3K,EAAcG,EAClB,MAAMuG,EAAM6D,EAAc,OAE1B,QAAS3P,EAAI,EAAGA,EAAI8L,EAAK9L,IACvB,QAASC,EAAI,EAAGA,EAAIC,EAAMD,IACxBQ,EAAO2E,GAAa,EAAIuK,EAAc3P,CAAC,EAAEC,CAAC,GAAK,EAInD,GAAI,CAACyP,GAAmBC,CAAa,EACnC,QAAS1P,EAAI,EAAGA,EAAIC,EAAMD,IACxBQ,EAAO2E,GAAa,EAAIuK,EAAc,CAAC,EAAE1P,CAAC,GAAK,EAInD,OAAAmP,GAAe,MAAQ7J,EACvB6J,GAAe,IAAMhK,EACrBgK,GAAe,KAAOlP,EACtBb,GAA8BoB,EAAQsP,EAAkBX,EAAc,EAC/DhK,CACT,CAEA,SAAS4K,GAAavP,EAAQ8E,EAAkBtG,EAAWiB,EAAMiF,EAAgB,EAAGG,EAAayK,EAAkB,CACjHzK,EAAcA,GAAerG,EAAU,OACvC,MAAMgR,EAAY3K,EAAcH,EAEhC,GAAI8K,GAAa,EACf,OAAO1K,EAGT,IAAIH,EAAcG,EAElB,QAASvF,EAAI,EAAGA,EAAIiQ,EAAWjQ,IAC7BS,EAAO2E,GAAa,EAAInG,EAAUkG,EAAgBnF,CAAC,EAGrD,GAAI,CAAC6P,GAAiB5Q,EAAWiB,EAAMiF,EAAeG,CAAW,EAC/D,QAAStF,EAAI,EAAGA,EAAIE,EAAMF,IACxBS,EAAO2E,GAAa,EAAInG,EAAUkG,EAAgBnF,CAAC,EAIvD,OAAAoP,GAAe,MAAQ7J,EACvB6J,GAAe,IAAMhK,EACrBgK,GAAe,KAAOlP,EACtBb,GAA8BoB,EAAQsP,EAAkBX,EAAc,EAC/DhK,CACT,CAEO,SAASxJ,GAAU6H,EAAS8D,EAAc,CAC/C8H,GAAS5L,CAAO,EAChB,MAAMxE,EAAY,CAAA,EACZ6D,EAAc,CAAA,EAEpB,GAAI,cAAeW,EAAS,CAC1B,KAAM,CACJ,UAAWyM,EACX,YAAaC,CACd,EAAG1M,EAEJ,GAAI0M,EAAgB,CAClB,IAAI/K,EAAc,EAElB,QAASpF,EAAI,EAAGA,GAAKmQ,EAAe,OAAQnQ,IAC1CoF,EAAc4K,GAAa/Q,EAAWmG,EAAa8K,EAAc3I,EAAc4I,EAAenQ,EAAI,CAAC,EAAGmQ,EAAenQ,CAAC,EAAGA,IAAM,EAAIkP,GAAwBC,EAAoB,EAC/KrM,EAAY,KAAKsC,CAAW,EAG9B,OAAAtC,EAAY,IAAG,EACR,CACL,UAAA7D,EACA,YAAA6D,CACR,CACK,CAEDW,EAAUyM,CACX,CAED,GAAI,CAACV,GAAS/L,CAAO,EACnB,OAAAuM,GAAa/Q,EAAW,EAAGwE,EAAS8D,EAAc,EAAGtI,EAAU,OAAQiQ,EAAqB,EACrFjQ,EAGT,GAAI,CAACwQ,GAAShM,CAAO,EAAG,CACtB,IAAI2B,EAAc,EAElB,SAAW,CAACgL,EAAcT,CAAa,IAAKlM,EAAQ,QAAO,EACzD2B,EAAc0K,GAAe7Q,EAAWmG,EAAauK,EAAepI,EAAc6I,IAAiB,EAAIlB,GAAwBC,EAAoB,EACnJrM,EAAY,KAAKsC,CAAW,EAG9B,OAAAtC,EAAY,IAAG,EACR,CACL,UAAA7D,EACA,YAAA6D,CACN,CACG,CAED,OAAAgN,GAAe7Q,EAAW,EAAGwE,EAAS8D,EAAc2H,EAAqB,EAClEjQ,CACT,CAEA,SAASoR,GAAapR,EAAWqR,EAAQC,EAAQ,CAC/C,MAAMC,EAAWvR,EAAU,OAAS,EACpC,IAAIc,EAAO,EAEX,QAASC,EAAI,EAAGA,EAAIwQ,EAAUxQ,IAAK,CACjC,MAAMC,GAAKD,EAAI,GAAKwQ,EACpBzQ,GAAQd,EAAUe,EAAI,EAAIsQ,CAAM,EAAIrR,EAAUgB,EAAI,EAAIsQ,CAAM,EAC5DxQ,GAAQd,EAAUgB,EAAI,EAAIqQ,CAAM,EAAIrR,EAAUe,EAAI,EAAIuQ,CAAM,CAC7D,CAED,OAAO,KAAK,IAAIxQ,EAAO,CAAC,CAC1B,CAEA,SAAS0Q,GAAiBxR,EAAWqR,EAAQC,EAAQG,EAAQ,CAC3D,MAAMF,EAAWvR,EAAU,OAAS,EAEpC,QAASe,EAAI,EAAGA,EAAIwQ,EAAUxQ,IAAK,CACjC,MAAM2Q,EAAI3Q,EAAI,EACRnI,EAAIoH,EAAU0R,EAAI,CAAC,EACnBhM,EAAI1F,EAAU0R,EAAI,CAAC,EACnBC,EAAI3R,EAAU0R,EAAI,CAAC,EACzB1R,EAAU0R,EAAIL,CAAM,EAAIzY,EACxBoH,EAAU0R,EAAIJ,CAAM,EAAI5L,EACxB1F,EAAU0R,EAAID,CAAM,EAAIE,CACzB,CACH,CAEO,SAASC,GAAkBpN,EAAS8D,EAAcuJ,EAAYC,EAAQ,CAC3E,IAAIjO,EAAcyM,GAAe9L,CAAO,EAEpCX,IACFA,EAAcA,EAAY,IAAIkO,GAAiBA,EAAgBzJ,CAAY,GAG7E,IAAItI,EAAYqQ,GAAa7L,CAAO,EACpC,MAAMwN,EAAOF,GAAUxJ,IAAiB,EAExC,GAAIuJ,EAAY,CACd,MAAMrF,EAAIxM,EAAU,OACpBA,EAAYA,EAAU,QACtB,MAAMwC,EAAI,CAAA,EAEV,QAASzB,EAAI,EAAGA,EAAIyL,EAAGzL,GAAKuH,EAAc,CACxC9F,EAAE,CAAC,EAAIxC,EAAUe,CAAC,EAClByB,EAAE,CAAC,EAAIxC,EAAUe,EAAI,CAAC,EAElBiR,IACFxP,EAAE,CAAC,EAAIxC,EAAUe,EAAI,CAAC,GAGxB,MAAMkR,EAAKJ,EAAWrP,CAAC,EACvBxC,EAAUe,CAAC,EAAIkR,EAAG,CAAC,EACnBjS,EAAUe,EAAI,CAAC,EAAIkR,EAAG,CAAC,EAEnBD,IACFhS,EAAUe,EAAI,CAAC,EAAIkR,EAAG,CAAC,EAE1B,CACF,CAED,GAAID,EAAM,CACR,MAAME,EAASd,GAAapR,EAAW,EAAG,CAAC,EACrCmS,EAASf,GAAapR,EAAW,EAAG,CAAC,EACrCoS,EAAShB,GAAapR,EAAW,EAAG,CAAC,EAE3C,GAAI,CAACkS,GAAU,CAACC,GAAU,CAACC,EACzB,MAAO,GAGLF,EAASC,GAAUD,EAASE,IAAoBD,EAASC,GACtDP,IACH7R,EAAYA,EAAU,SAGxBwR,GAAiBxR,EAAW,EAAG,EAAG,CAAC,IAE9B6R,IACH7R,EAAYA,EAAU,SAGxBwR,GAAiBxR,EAAW,EAAG,EAAG,CAAC,GAEtC,CAED,OAAO+J,GAAO/J,EAAW6D,EAAayE,CAAY,CACpD,CCxOe,MAAM+J,WAA0BjW,EAAW,CACxD,YAAYnE,EAAM,CAChB,KAAM,CACJ,KAAAqa,EACA,UAAAC,EAAY,WACb,EAAGta,EACJ,MAAM,CAAE,GAAGA,EACT,WAAY,CACV,UAAW,CACT,KAAM,EACN,KAAMqa,EAAO,aAAe,YAC7B,EACD,YAAa,CACX,KAAM,kBACN,KAAM,CACP,EACD,QAAS,CACP,KAAMC,EACN,KAAM,CACP,CACF,CACP,CAAK,CACF,CAED,IAAI1K,EAAe,CACjB,KAAM,CACJ,WAAAxL,CACD,EAAG,KAEJ,OAAIwL,IAAkB,UACbxL,EAAW,SAAWA,EAAW,QAAQ,SAAS,EAAG,KAAK,WAAW,EAGvEA,EAAWwL,CAAa,CAChC,CAED,eAAe5P,EAAM,CACnB,MAAM,eAAeA,CAAI,EACzB,MAAMua,EAAkB,KAAK,QAAQ,QAErC,GAAIA,EACF,KAAK,aAAeA,EAAgB,OAASA,GAAiB,eACrD,KAAK,MAAQ,CAAC,KAAK,YAC5B,MAAM,IAAI,MAAM,wBAAwB,CAE3C,CAED,kBAAkBhO,EAAS,CACzB,GAAI,KAAK,UAAW,CAClB,MAAMiO,EAAoBC,GAAkBlO,EAAS,KAAK,YAAY,EAEtE,OAAI,KAAK,KAAK,WACLZ,GAAiB+O,GAAqBF,CAAiB,EAAGG,GAAuBH,CAAiB,EAAG,CAC1G,KAAM,KAAK,aACX,eAAgB,KAAK,KAAK,WAC1B,UAAW,EACrB,CAAS,EAGC,KAAK,KAAK,cACLzM,GAA2B2M,GAAqBF,CAAiB,EAAGG,GAAuBH,CAAiB,EAAG,CACpH,KAAM,KAAK,aACX,YAAa,GACb,UAAW,EACrB,CAAS,EAGIA,CACR,CAED,OAAOjO,CACR,CAED,gBAAgBA,EAAS,CACvB,GAAIuD,GAAMvD,CAAO,EAAG,CAClB,IAAIvD,EAAO,EAEX,UAAW4R,KAAcrO,EACvBvD,GAAQ,KAAK,gBAAgB4R,CAAU,EAGzC,OAAO5R,CACR,CAED,OAAO0R,GAAqBnO,CAAO,EAAE,OAAS,KAAK,YACpD,CAED,sBAAsBsD,EAAQ,CAC5B,OAAI,KAAK,WAAa,CAAC,KAAK,QAAQ,QAC3B,MAAM,sBAAsBA,CAAM,EAGpC,IACR,CAED,yBAAyBtD,EAAStL,EAAS,CACzC,GAAIsL,GAAWuD,GAAMvD,CAAO,EAC1B,UAAWqO,KAAcrO,EAAS,CAChC,MAAMyD,EAAe,KAAK,gBAAgB4K,CAAU,EACpD3Z,EAAQ,aAAe+O,EACvB,KAAK,yBAAyB4K,EAAY3Z,CAAO,EACjDA,EAAQ,aAAe+O,EACvB/O,EAAQ,WAAa,KAAK,YAAYA,EAAQ,cAAgB,CAAC,CAChE,MAED,KAAK,eAAesL,EAAStL,CAAO,EAEpC,KAAK,iBAAiBsL,EAAStL,CAAO,EAEtC,KAAK,mBAAmBsL,EAAStL,CAAO,CAE3C,CAED,eAAesL,EAAS,CACtB,cAAAsO,EACA,YAAajR,EACb,WAAAkR,CACJ,EAAK,CACD,KAAM,CACJ,WAAA1W,EACA,YAAAuB,EACA,kBAAAP,CACD,EAAG,KACJ,IAAImE,EAASnF,EAAW,QAExB,GAAI,CAACmF,GAAU,CAACgD,EACd,OAGF,IAAIzD,EAAIgS,EACR,MAAMC,EAAUC,GAA0BzO,EAAS,KAAK,aAAc,KAAK,KAAK,WAAY,KAAK,KAAK,MAAM,EAC5GhD,EAASnE,EAAkB,SAASmE,EAAQuR,EAAaC,EAAQ,OAAQ,CACvE,KAAM,EACZ,CAAK,EAED,QAAShS,EAAI,EAAGA,EAAIgS,EAAQ,OAAQhS,IAClCQ,EAAOT,GAAG,EAAIiS,EAAQhS,CAAC,EAAIa,EAG7BjE,EAAYkV,EAAgB,CAAC,EAAIC,EAAaC,EAAQ,OACtD3W,EAAW,QAAUmF,CACtB,CAED,iBAAiBgD,EAAS,CACxB,YAAA4D,EACA,aAAAH,CACJ,EAAK,CACD,KAAM,CACJ,WAAY,CACV,UAAAjI,CACD,EACD,aAAAsI,CACD,EAAG,KAEJ,GAAI,CAACtI,GAAa,CAACwE,EACjB,OAGF,MAAM0O,EAAmBP,GAAqBnO,CAAO,EAErD,QAASzD,EAAIqH,EAAapH,EAAI,EAAGA,EAAIiH,EAAclH,IAAKC,IAAK,CAC3D,MAAMpI,EAAIsa,EAAiBlS,EAAIsH,CAAY,EACrC5C,EAAIwN,EAAiBlS,EAAIsH,EAAe,CAAC,EACzCqJ,EAAIrJ,EAAe,EAAI4K,EAAiBlS,EAAIsH,EAAe,CAAC,EAAI,EACtEtI,EAAUe,EAAI,CAAC,EAAInI,EACnBoH,EAAUe,EAAI,EAAI,CAAC,EAAI2E,EACvB1F,EAAUe,EAAI,EAAI,CAAC,EAAI4Q,CACxB,CACF,CAED,mBAAmBnN,EAAS,CAC1B,YAAA4D,EACA,aAAAH,CACJ,EAAK,CACD,KAAM,CACJ,aAAAK,CACD,EAAG,KACE6K,EAAc,KAAK,WAAW,YAC9BtP,EAAcW,GAAWoO,GAAuBpO,CAAO,EAQ7D,GANIA,GAAWA,EAAQ,UACrB2O,EAAY,IAAI3O,EAAQ,UAAW4D,CAAW,EAE9C+K,EAAY,KAAK,EAAG/K,EAAaA,EAAcH,CAAY,EAGzDpE,EACF,QAAS7C,EAAI,EAAGA,EAAI6C,EAAY,OAAQ7C,IACtCmS,EAAY/K,EAAcvE,EAAY7C,CAAC,EAAIsH,EAAe,CAAC,EAAI,EAInE6K,EAAY/K,EAAcH,EAAe,CAAC,EAAI,CAC/C,CAEH,CAEA,SAASF,GAAMvD,EAAS,CACtB,OAAO,MAAM,QAAQA,CAAO,GAAKA,EAAQ,OAAS,GAAK,CAAC,OAAO,SAASA,EAAQ,CAAC,CAAC,CACpF,CC1MA,MAAA4O,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECCfC,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA6O,OAAOD,GAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAA4S,ECArjBE,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA+X,OAAOF,GAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAA+qB,ECD1kCG,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECOT/U,GAAgB,CAAC,EAAG,EAAG,EAAG,GAAG,EAC7BC,GAAe,CACnB,OAAQ,GACR,SAAU,GACV,UAAW,GACX,WAAY,GACZ,cAAe,KACf,QAAS,GACT,eAAgB,CACd,KAAM,SACN,IAAK,EACL,MAAO,CACR,EACD,WAAY,CACV,KAAM,WACN,MAAO+U,GAAKA,EAAE,OACf,EACD,aAAc,CACZ,KAAM,WACN,MAAO,GACR,EACD,aAAc,CACZ,KAAM,WACN,MAAOhV,EACR,EACD,aAAc,CACZ,KAAM,WACN,MAAOA,EACR,EACD,SAAU,EACZ,EACMkK,GAAuB,CAC3B,MAAO,CAAC1L,EAAO2L,IACNA,EAAM,OAASA,EAAM,SAASA,EAAM,OAAS3L,EAAM,MAAM,EAAIA,CAExE,EACe,MAAMyW,WAA0Bza,EAAM,CACnD,eAAe6P,EAAM,CACnB,MAAM,GAAGA,CAAI,EAEb1M,EAAgB,KAAM,QAAS,MAAM,CACtC,CAED,WAAW2I,EAAM,CACf,OAAO,MAAM,WAAW,CACtB,GAAIA,IAAS,MAAQuO,GAAQC,GACnC,GAAM1U,GACA,QAAS,CACP,sBAAuB,CAAC,KAAK,MAAM,YAAc,KAAK,MAAM,gBAAkB,MAAQ,EAAI,CAC3F,EACD,QAAS,CAACC,GAAWhG,GAAiBiG,EAAO,CACnD,CAAK,CACF,CAED,IAAI,eAAgB,CAClB,MAAO,EACR,CAED,iBAAkB,CAChB,KAAM,CACJ,GAAAG,EACA,SAAAyU,CACN,EAAQ,KAAK,QACT,GAAI,CACF,iBAAAjZ,CACN,EAAQ,KAAK,MACT,KAAM,CACJ,QAAAkZ,CACN,EAAQ,KAAK,MAELD,EAAS,cAAgBjZ,IAAqBmZ,GAAkB,UAClEnZ,EAAmBmZ,GAAkB,QAGvC,IAAI/B,EAEApX,IAAqBmZ,GAAkB,SACrCD,EACF9B,EAAa6B,EAAS,gBAAgB,KAAKA,CAAQ,EAEnD7B,EAAa6B,EAAS,YAAY,KAAKA,CAAQ,GAInD,KAAK,SAAS,CACZ,aAAc,EACd,kBAAmB,IAAIrB,GAAkB,CACvC,WAAAR,EACA,KAAM,KAAK,kBAAmB,EAC9B,UAAW,CAAC5S,GAAM4U,GAAY5U,EAAI6U,GAAS,oBAAoB,EAAI,YAAc,WACzF,CAAO,CACP,CAAK,EACD,MAAM9K,EAAmB,KAAK,sBACxB+K,EAAU,GAChB/K,EAAiB,OAAO,CAAC,uBAAuB,CAAC,EACjDA,EAAiB,IAAI,CACnB,QAAS,CACP,KAAM,EACN,UAAW,GACX,OAAQ,KAAK,iBACb,QAAA+K,CACD,EACD,UAAW,CACT,KAAM,EACN,KAAM,KACN,KAAM,KAAK,kBAAmB,EAC9B,WAAYrL,GACZ,SAAU,aACV,OAAQ,KAAK,mBACb,QAAAqL,EACA,iBAAkB,CAChB,UAAW,CACT,aAAc,EACd,QAAS,CACV,EACD,kBAAmB,CACjB,aAAc,EACd,QAAS,CACV,EACD,cAAe,CACb,aAAc,EACd,QAAS,CACV,CACF,CACF,EACD,YAAa,CACX,KAAM,EACN,QAAS,EACT,KAAM,KACN,OAAQ,KAAK,qBACb,QAAAA,CACD,EACD,WAAY,CACV,KAAM,EACN,WAAYrL,GACZ,SAAU,eACV,iBAAkB,CAChB,WAAY,CACV,QAAS,CACV,EACD,mBAAoB,CAClB,QAAS,CACV,CACF,CACF,EACD,WAAY,CACV,KAAM,KAAK,MAAM,YAAY,OAC7B,KAAM,KACN,WAAY,GACZ,WAAYA,GACZ,SAAU,eACV,aAAclK,GACd,iBAAkB,CAChB,WAAY,CACV,QAAS,CACV,EACD,mBAAoB,CAClB,QAAS,CACV,CACF,CACF,EACD,WAAY,CACV,KAAM,KAAK,MAAM,YAAY,OAC7B,KAAM,KACN,WAAY,GACZ,WAAYkK,GACZ,SAAU,eACV,aAAclK,GACd,iBAAkB,CAChB,WAAY,CACV,QAAS,CACV,EACD,mBAAoB,CAClB,QAAS,CACV,CACF,CACF,EACD,cAAe,CACb,KAAM,EACN,KAAM,KACN,SAAU,CAACnF,EAAQ,CACjB,MAAAvB,EACA,OAAQkF,CACT,IAAK,KAAK,mBAAmB3D,GAAUA,EAAO,SAAWA,EAAO,SAAS,MAAQvB,EAAOkF,CAAK,EAC9F,iBAAkB,CAChB,cAAe,CACb,QAAS,CACV,EACD,sBAAuB,CACrB,QAAS,CACV,CACF,CACF,CACP,CAAK,CACF,CAED,eAAe+B,EAAQ,CACrB,MAAM3F,EAAO,MAAM,eAAe2F,CAAM,EAClC,CACJ,MAAAjH,CACD,EAAGsB,EACE,CACJ,KAAAG,CACN,EAAQ,KAAK,MAET,OAAIA,EAAK,CAAC,GAAKA,EAAK,CAAC,EAAE,WACrBH,EAAK,OAASG,EAAK,KAAK2P,GAAKA,EAAE,SAAS,QAAUpR,CAAK,GAGlDsB,CACR,CAED,oBAAoB+P,EAAa,CAC/B,KAAM,CACJ,KAAA5P,CACN,EAAQ,KAAK,MAET,GAAIA,EAAK,CAAC,GAAKA,EAAK,CAAC,EAAE,SACrB,QAASwH,EAAI,EAAGA,EAAIxH,EAAK,OAAQwH,IAC3BxH,EAAKwH,CAAC,EAAE,SAAS,QAAUoI,GAC7B,KAAK,qBAAqBpI,CAAC,OAI/B,MAAM,oBAAoBoI,CAAW,CAExC,CAED,KAAK,CACH,SAAAjK,CACJ,EAAK,CACD,KAAM,CACJ,SAAA8U,EACA,OAAAxU,EACA,UAAAyU,EACA,eAAAC,CACN,EAAQ,KAAK,MACH,CACJ,SAAAC,EACA,UAAAC,EACA,kBAAAC,CACN,EAAQ,KAAK,MACHC,EAAiB,CAAE,GAAGpV,EAC1B,SAAU,EAAQ8U,EAClB,eAAAE,CACN,EAEQE,IACFA,EAAU,iBAAiBC,EAAkB,cAAgB,CAAC,EAC9DD,EAAU,YAAYE,CAAc,EAEhCL,IACFG,EAAU,YAAY,CAAC,EACvBA,EAAU,YAAY,CACpB,YAAa,EACvB,CAAS,EAAE,KAAI,GAGL5U,IACF4U,EAAU,YAAY,CAAC,EACvBA,EAAU,YAAY,CACpB,YAAa,EACvB,CAAS,EAAE,KAAI,IAIPD,IACFA,EAAS,eAAeE,EAAkB,WAAW,EACrDF,EAAS,YAAYG,CAAc,EAAE,KAAI,EAE5C,CAED,YAAY1Y,EAAc,CACxB,MAAM,YAAYA,CAAY,EAC9B,KAAK,eAAeA,CAAY,EAChC,KAAM,CACJ,MAAAkN,EACA,SAAAyL,EACA,YAAAxL,CACD,EAAGnN,EACEoN,EAAmB,KAAK,sBAG9B,GAFyBD,EAAY,mBAAqBD,EAAM,SAAWyL,EAAS,QAAUzL,EAAM,WAAayL,EAAS,SAEpG,CACpB,IAAIC,GAEHA,EAAqB,KAAK,MAAM,UAAY,MAAQA,IAAuB,QAAkBA,EAAmB,QAAQC,GAASA,EAAM,OAAM,CAAE,EAChJ,KAAK,SAAS,KAAK,WAAW,KAAK,QAAQ,EAAE,CAAC,EAC9CzL,EAAiB,cAAa,CAC/B,CACF,CAED,eAAe,CACb,MAAAF,EACA,SAAAyL,EACA,YAAAxL,CACJ,EAAK,CAGD,GAF8BA,EAAY,aAAeA,EAAY,wBAA0BA,EAAY,sBAAsB,KAAOA,EAAY,sBAAsB,YAE/I,CACzB,KAAM,CACJ,kBAAAsL,CACR,EAAU,KAAK,MACH9X,EAAUuM,EAAM,KAAK,YAAc,CAAA,EACzCuL,EAAkB,eAAe,CAC/B,KAAMvL,EAAM,KACZ,UAAWA,EAAM,WACjB,eAAgBvM,EAAQ,WACxB,QAAAA,EACA,YAAauM,EAAM,WACnB,eAAgBA,EAAM,eACtB,cAAeA,EAAM,cACrB,WAAY,KAAK,QAAQ,SAAS,WAClC,KAAM,KAAK,kBAAmB,EAC9B,YAAaC,EAAY,YACzB,OAAQD,EAAM,OACtB,CAAO,EACD,KAAK,SAAS,CACZ,aAAcuL,EAAkB,cAChC,aAAcA,EAAkB,YACxC,CAAO,EAEItL,EAAY,aACf,KAAK,sBAAsB,eAE9B,CACF,CAED,WAAW9J,EAAI,CACb,KAAM,CACJ,GAAAyV,EACA,OAAAlV,EACA,SAAAwU,CACN,EAAQ,KAAK,MACT,IAAIG,EACAC,EAEJ,GAAI5U,EAAQ,CACV,MAAMmV,EAAU,KAAK,WAAW,KAAK,EACrCA,EAAQ,QAAQ,oBAAsB,EACtCR,EAAW,IAAIlU,GAAMhB,EAAI,CAAE,GAAG0V,EAC5B,GAAI,GAAG,OAAOD,EAAI,MAAM,EACxB,SAAU,EACV,WAAY,CACV,gBAAiB,IAAI,aAAa,CAAC,EAAG,CAAC,CAAC,CACzC,EACD,SAAU,CACR,YAAa,GACb,aAAc,EACf,EACD,YAAa,EACb,UAAW,EACnB,CAAO,CACF,CAED,OAAIV,IACFI,EAAY,IAAInU,GAAMhB,EAAI,CAAE,GAAG,KAAK,WAAW,MAAM,EACnD,GAAI,GAAG,OAAOyV,EAAI,OAAO,EACzB,SAAU,IAAIxU,GAAS,CACrB,SAAU,EACV,YAAa,EACb,WAAY,CACV,gBAAiB,CACf,KAAM,EACN,MAAO,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,CACjD,CACF,CACX,CAAS,EACD,cAAe,EACf,YAAa,CACrB,CAAO,EACDkU,EAAU,SAAS,kBAAoB,CACrC,QAAS,EACjB,GAGW,CACL,OAAQ,CAACA,EAAWD,CAAQ,EAAE,OAAO,OAAO,EAC5C,SAAAA,EACA,UAAAC,CACN,CACG,CAED,iBAAiBvK,EAAW,CAC1B,KAAM,CACJ,kBAAAwK,CACN,EAAQ,KAAK,MACTxK,EAAU,aAAewK,EAAkB,YAC3CxK,EAAU,MAAQwK,EAAkB,IAAI,SAAS,CAClD,CAED,mBAAmBxK,EAAW,CAC5B,KAAM,CACJ,kBAAAwK,CACN,EAAQ,KAAK,MACTxK,EAAU,aAAewK,EAAkB,aAC3CxK,EAAU,MAAQwK,EAAkB,IAAI,WAAW,CACpD,CAED,qBAAqBxK,EAAW,CAC9BA,EAAU,MAAQ,KAAK,MAAM,kBAAkB,IAAI,aAAa,CACjE,CAEH,CAEA1N,EAAgBsX,GAAmB,eAAgBhV,EAAY,EAE/DtC,EAAgBsX,GAAmB,YAAa,mBAAmB,EC9Z5D,SAASmB,GAAe,CAC7B,KAAArb,EACA,SAAAsb,EACA,UAAAhY,EACA,QAAAiY,CACF,EAAG,CACD,KAAM,CACJ,SAAAhY,EAAW,EACX,OAAAC,EAAS,GACV,EAAGF,EACEkY,EAAQxb,EAAK,OACnB,IAAIyb,EAAeD,EACfE,EAAaF,EAEjB,QAAShU,EAAI,EAAGA,EAAIgU,EAAOhU,IAAK,CAC9B,MAAMrH,EAAMmb,EAAStb,EAAKwH,CAAC,CAAC,EAM5B,GAJIiU,EAAejU,GAAKrH,GAAOoD,IAC7BkY,EAAejU,GAGbrH,GAAOqD,EAAQ,CACjBkY,EAAalU,EACb,KACD,CACF,CAED,IAAIjJ,EAAQkd,EAEZ,MAAME,EADoBD,EAAaD,IAAiBF,EAAQ,OAC3Bvb,EAAK,MAAM0b,CAAU,EAAI,OAE9D,QAASlU,EAAI,EAAGA,EAAI+T,EAAQ,OAAQ/T,IAClCxH,EAAKzB,GAAO,EAAIgd,EAAQ/T,CAAC,EAG3B,GAAImU,EAAU,CACZ,QAASnU,EAAI,EAAGA,EAAImU,EAAS,OAAQnU,IACnCxH,EAAKzB,GAAO,EAAIod,EAASnU,CAAC,EAG5BxH,EAAK,OAASzB,CACf,CAED,MAAO,CACL,SAAUkd,EACV,OAAQA,EAAeF,EAAQ,MACnC,CACA,CC/CO,SAASK,GAA0B5b,EAAMzB,EAAO,CACrD,GAAI,CAACyB,EACH,OAAO,KAGT,MAAM6b,EAAe,iBAAkB7b,EAAOA,EAAK,aAAazB,CAAK,EAAIA,EACnEgb,EAAgBvZ,EAAK,WAAW,MAAM6b,CAAY,EAExD,OAAIA,IAAiB,GACZC,GAAsB9b,EAAMuZ,EAAesC,CAAY,EAGzD,IACT,CAEA,SAASC,GAAsB9b,EAAM+b,EAAiBC,EAAmB,CACvE,MAAMC,EAAU,CACd,WAAY,CAAE,GAAGjc,EAAK,WAAW+b,CAAe,CAC/C,CACL,EAEE,UAAWG,KAAQlc,EAAK,aACtBic,EAAQ,WAAWC,CAAI,EAAIlc,EAAK,aAAakc,CAAI,EAAE,MAAMF,CAAiB,EAG5E,OAAOC,CACT,CAEO,SAASE,GAAuBC,EAAeC,EAAoB,CACxE,MAAMC,EAAgB,CACpB,OAAQ,KACR,MAAO,KACP,SAAU,IACd,EAEE,UAAWra,KAAOqa,EAAe,CAC/B,MAAMC,EAAaH,EAAcna,CAAG,EAAE,iBAAiB,MACvDqa,EAAcra,CAAG,EAAI,IAAI,kBAAkBsa,EAAW,OAAS,CAAC,EAChE,MAAMC,EAAe,CAAA,EAErB,QAAShV,EAAI,EAAGA,EAAI+U,EAAW,OAAQ/U,IACrC6U,EAAmBE,EAAW/U,CAAC,EAAGgV,CAAY,EAC9CF,EAAcra,CAAG,EAAEuF,EAAI,EAAI,CAAC,EAAIgV,EAAa,CAAC,EAC9CF,EAAcra,CAAG,EAAEuF,EAAI,EAAI,CAAC,EAAIgV,EAAa,CAAC,EAC9CF,EAAcra,CAAG,EAAEuF,EAAI,EAAI,CAAC,EAAIgV,EAAa,CAAC,CAEjD,CAED,OAAOF,CACT,CCjDA,MAAAG,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECITC,GAAiB,IAAQ,IACzBC,GAAc,CAAA,EACdzX,GAAe,CACnB,eAAgB,CACd,KAAM,WACN,MAAO7F,GAAKA,EAAE,OACf,EACD,YAAa,KACb,UAAW,GACX,aAAc,EACd,aAAc,CACZ,KAAM,QACN,MAAO,CAAC,EAAG,EAAG,EAAG,GAAG,CACrB,CACH,EACe,MAAMud,WAAuBC,EAAU,CACpD,eAAevN,EAAM,CACnB,MAAM,GAAGA,CAAI,EAEb1M,EAAgB,KAAM,QAAS,MAAM,CACtC,CAED,YAAa,CACX,MAAO,CAAE,GAAG,MAAM,WAAY,EAClC,GAAMyC,EACN,CACG,CAED,iBAAkB,CAChB,MAAM,gBAAe,EACI,KAAK,sBACb,aAAa,CAC5B,gBAAiB,CACf,KAAM,EACN,SAAU,gBACX,EACD,sBAAuB,CACrB,KAAM,KACN,KAAM,EACN,SAAU,CAACvF,EAAQ,CACjB,MAAAvB,EACA,OAAQkF,CACT,IAAK,KAAK,mBAAmBlF,EAAOkF,CAAK,CAC3C,CACP,CAAK,CACF,CAED,YAAY+B,EAAQ,CAClB,MAAM,YAAYA,CAAM,EACxB,KAAM,CACJ,MAAA+J,EACA,SAAAyL,CACD,EAAGxV,EACJ,GAAI,CACF,aAAAsX,CACD,EAAGvN,EAEAuN,IAAiB9B,EAAS,eAC5B8B,EAAeA,EAAa,IAAIzd,GAAKA,EAAI,GAAG,EAC5Cyd,EAAa,CAAC,EAAI,OAAO,SAASA,EAAa,CAAC,CAAC,EAAIA,EAAa,CAAC,EAAI,EACvE,KAAK,SAAS,CACZ,aAAAA,CACR,CAAO,GAGC,CAACvN,EAAM,KAAOA,EAAM,cACtBwN,GAAI,KAAK,GAAG,OAAO,KAAK,GAAI,kDAAkD,CAAC,GAElF,CAED,KAAKvX,EAAQ,CACX,KAAM,CACJ,IAAAwX,EACA,UAAAC,EACA,aAAAC,CACN,EAAQ,KAAK,MACH,CACJ,aAAAJ,CACN,EAAQ,KAAK,MACHK,EAAgBD,EAAe,KAAK,IAAID,EAAWP,IAAkB,EAAIQ,EAAa,EAAI,GAUhG,GATA1X,EAAO,SAAW,CAAE,GAAGA,EAAO,SAC5B,UAAWkX,GACX,cAAAS,EACA,MAAOF,EACP,IAAK,EAAQD,EACb,aAAAF,CACN,EACI,MAAM,KAAKtX,CAAM,EAEbwX,GAAOE,EAAc,CACvB,KAAM,CACJ,YAAAE,CACR,EAAU,KAAK,MACYA,EAAY,cAG/B,KAAK,MAAM,MAAM,KAAK,CACpB,SAAU,CACR,cAAeV,EAChB,CACX,CAAS,CAEJ,CACF,CAED,kBAAkBW,EAAO,CACvB,OAAOA,EAAQ,MAAM,KAAKA,CAAK,EAAE,QAAQC,GAAQ,MAAM,kBAAkBA,CAAI,CAAC,EAAIX,EACnF,CAED,qBAAqBU,EAAO,CAC1B,MAAO,EACR,CAED,qBAAqBA,EAAO,CAC1B,OAAOA,EAAQ,MAAM,KAAKA,CAAK,EAAE,QAAQC,GAAQ,MAAM,qBAAqBA,CAAI,CAAC,EAAIX,EACtF,CAEH,CAEA/Z,EAAgBga,GAAgB,eAAgB1X,EAAY,EAE5DtC,EAAgBga,GAAgB,YAAa,gBAAgB,EC7H7D,MAAMW,GAAM,KAEG,MAAMC,EAAQ,CACzB,YAAY,CACR,SAAAC,EAAW,GACX,OAAAlP,EAAS,EACT,OAAAmP,EAAS,EACT,OAAAC,EAAS,IACT,WAAAC,EAAa,aACb,WAAAC,EAAa,SACb,UAAAC,EAAY,QACf,EAAG,GAAI,CACJ,KAAK,OAASvP,EACd,KAAK,OAASoP,EACd,KAAK,OAASD,EAId,MAAMhW,EAAO,KAAK,KAAO+V,EAAWlP,EAAS,EAEvCwP,EAAS,KAAK,cAAcrW,CAAI,EAChCsW,EAAM,KAAK,IAAMD,EAAO,WAAW,KAAM,CAAC,mBAAoB,EAAI,CAAC,EACzEC,EAAI,KAAO,GAAGF,CAAS,IAAID,CAAU,IAAIJ,CAAQ,MAAMG,CAAU,GAEjEI,EAAI,aAAe,aACnBA,EAAI,UAAY,OAChBA,EAAI,UAAY,QAGhB,KAAK,UAAY,IAAI,aAAatW,EAAOA,CAAI,EAC7C,KAAK,UAAY,IAAI,aAAaA,EAAOA,CAAI,EAC7C,KAAK,EAAI,IAAI,aAAaA,CAAI,EAC9B,KAAK,EAAI,IAAI,aAAaA,EAAO,CAAC,EAClC,KAAK,EAAI,IAAI,YAAYA,CAAI,CAChC,CAED,cAAcA,EAAM,CAChB,MAAMqW,EAAS,SAAS,cAAc,QAAQ,EAC9C,OAAAA,EAAO,MAAQA,EAAO,OAASrW,EACxBqW,CACV,CAED,KAAKE,EAAM,CACP,KAAM,CACF,MAAOC,EACP,wBAAAC,EACA,yBAAAC,EACA,sBAAAC,EACA,uBAAAC,CACH,EAAG,KAAK,IAAI,YAAYL,CAAI,EAIvBM,EAAW,KAAK,KAAKJ,CAAuB,EAC5CK,EAAY,EAGZC,EAAa,KAAK,IAAI,EAAG,KAAK,IAAI,KAAK,KAAO,KAAK,OAAQ,KAAK,KAAKH,EAAyBD,CAAqB,CAAC,CAAC,EACrHK,EAAc,KAAK,IAAI,KAAK,KAAO,KAAK,OAAQH,EAAW,KAAK,KAAKH,CAAwB,CAAC,EAE9FO,EAAQF,EAAa,EAAI,KAAK,OAC9BG,EAASF,EAAc,EAAI,KAAK,OAEhCpL,EAAM,KAAK,IAAIqL,EAAQC,EAAQ,CAAC,EAChC5e,EAAO,IAAI,kBAAkBsT,CAAG,EAChCuL,EAAQ,CAAC,KAAA7e,EAAM,MAAA2e,EAAO,OAAAC,EAAQ,WAAAH,EAAY,YAAAC,EAAa,SAAAH,EAAU,UAAAC,EAAW,aAAAN,CAAY,EAC9F,GAAIO,IAAe,GAAKC,IAAgB,EAAG,OAAOG,EAElD,KAAM,CAAC,IAAAb,EAAK,OAAAzP,EAAQ,UAAAuQ,EAAW,UAAAC,CAAS,EAAI,KAC5Cf,EAAI,UAAUzP,EAAQA,EAAQkQ,EAAYC,CAAW,EACrDV,EAAI,SAASC,EAAM1P,EAAQA,EAASgQ,CAAQ,EAC5C,MAAMS,EAAUhB,EAAI,aAAazP,EAAQA,EAAQkQ,EAAYC,CAAW,EAGxEK,EAAU,KAAKxB,GAAK,EAAGjK,CAAG,EAC1BwL,EAAU,KAAK,EAAG,EAAGxL,CAAG,EAExB,QAASnH,EAAI,EAAGA,EAAIuS,EAAavS,IAC7B,QAAS9M,EAAI,EAAGA,EAAIof,EAAYpf,IAAK,CACjC,MAAMqJ,EAAIsW,EAAQ,KAAK,GAAK7S,EAAIsS,EAAapf,GAAK,CAAC,EAAI,IACvD,GAAIqJ,IAAM,EAAG,SAEb,MAAMjB,GAAK0E,EAAIoC,GAAUoQ,EAAQtf,EAAIkP,EAErC,GAAI7F,IAAM,EACNqW,EAAUtX,CAAC,EAAI,EACfqX,EAAUrX,CAAC,EAAI8V,OAEZ,CACH,MAAM5N,EAAI,GAAMjH,EAChBqW,EAAUtX,CAAC,EAAIkI,EAAI,EAAIA,EAAIA,EAAI,EAC/BmP,EAAUrX,CAAC,EAAIkI,EAAI,EAAIA,EAAIA,EAAI,CAClC,CACJ,CAGLsP,GAAIF,EAAW,EAAG,EAAGJ,EAAOC,EAAQD,EAAO,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,EACjEM,GAAIH,EAAWvQ,EAAQA,EAAQkQ,EAAYC,EAAaC,EAAO,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,EAErF,QAASnX,EAAI,EAAGA,EAAI8L,EAAK9L,IAAK,CAC1B,MAAMmI,EAAI,KAAK,KAAKoP,EAAUvX,CAAC,CAAC,EAAI,KAAK,KAAKsX,EAAUtX,CAAC,CAAC,EAC1DxH,EAAKwH,CAAC,EAAI,KAAK,MAAM,IAAM,KAAOmI,EAAI,KAAK,OAAS,KAAK,OAAO,CACnE,CAED,OAAOkP,CACV,CACL,CAGA,SAASI,GAAIjf,EAAMyS,EAAIC,EAAIiM,EAAOC,EAAQM,EAAUjF,EAAGkF,EAAG/G,EAAG,CACzD,QAAS/Y,EAAIoT,EAAIpT,EAAIoT,EAAKkM,EAAOtf,IAAK+f,GAAMpf,EAAM0S,EAAKwM,EAAW7f,EAAG6f,EAAUN,EAAQ3E,EAAGkF,EAAG/G,CAAC,EAC9F,QAASjM,EAAIuG,EAAIvG,EAAIuG,EAAKkM,EAAQzS,IAAKiT,GAAMpf,EAAMmM,EAAI+S,EAAWzM,EAAI,EAAGkM,EAAO1E,EAAGkF,EAAG/G,CAAC,CAC3F,CAGA,SAASgH,GAAMC,EAAM/W,EAAQgX,EAAQrR,EAAQgM,EAAGkF,EAAG/G,EAAG,CAClD+G,EAAE,CAAC,EAAI,EACP/G,EAAE,CAAC,EAAI,CAACmF,GACRnF,EAAE,CAAC,EAAImF,GACPtD,EAAE,CAAC,EAAIoF,EAAK/W,CAAM,EAElB,QAASmM,EAAI,EAAG8K,EAAI,EAAGC,EAAI,EAAG/K,EAAIxG,EAAQwG,IAAK,CAC3CwF,EAAExF,CAAC,EAAI4K,EAAK/W,EAASmM,EAAI6K,CAAM,EAC/B,MAAM7J,EAAKhB,EAAIA,EACf,EAAG,CACC,MAAMY,EAAI8J,EAAEI,CAAC,EACbC,GAAKvF,EAAExF,CAAC,EAAIwF,EAAE5E,CAAC,EAAII,EAAKJ,EAAIA,IAAMZ,EAAIY,GAAK,CACvD,OAAiBmK,GAAKpH,EAAEmH,CAAC,GAAK,EAAEA,EAAI,IAE5BA,IACAJ,EAAEI,CAAC,EAAI9K,EACP2D,EAAEmH,CAAC,EAAIC,EACPpH,EAAEmH,EAAI,CAAC,EAAIhC,EACd,CAED,QAAS9I,EAAI,EAAG8K,EAAI,EAAG9K,EAAIxG,EAAQwG,IAAK,CACpC,KAAO2D,EAAEmH,EAAI,CAAC,EAAI9K,GAAG8K,IACrB,MAAMlK,EAAI8J,EAAEI,CAAC,EACPE,EAAKhL,EAAIY,EACfgK,EAAK/W,EAASmM,EAAI6K,CAAM,EAAIrF,EAAE5E,CAAC,EAAIoK,EAAKA,CAC3C,CACL,CC5IA,MAAMC,GAAqB,GACrBC,GAAc,CAAA,EACb,SAASC,GAAaC,EAAQ,CACnC,OAAO,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,KAAKA,CAAM,CAAC,CAAC,CACjD,CACO,SAASC,GAAa,CAC3B,aAAAC,EACA,aAAAC,EACA,WAAAC,EACA,OAAA1R,EACA,eAAA2R,EACA,QAAAC,EAAU,CAAE,EACZ,QAAAC,EAAU,EACV,QAAAC,EAAU,CACZ,EAAG,CACD,IAAIlgB,EAAM,EACNd,EAAI+gB,EACR,MAAME,EAAYL,EAAa1R,EAAS,EAExC,UAAW0P,KAAQ8B,EACjB,GAAI,CAACI,EAAQlC,CAAI,EAAG,CAClB,MAAMU,EAAQqB,EAAa/B,CAAI,EAE3B5e,EAAIsf,EAAQpQ,EAAS,EAAI2R,IAC3B7gB,EAAI,EACJc,KAGFggB,EAAQlC,CAAI,EAAI,CACd,EAAG5e,EAAIkP,EACP,EAAG8R,EAAUlgB,EAAMmgB,EAAY/R,EAC/B,MAAAoQ,EACA,OAAQ2B,EACR,YAAa3B,EACb,aAAcsB,CACtB,EACM5gB,GAAKsf,EAAQpQ,EAAS,CACvB,CAGH,MAAO,CACL,QAAA4R,EACA,QAAS9gB,EACT,QAASghB,EAAUlgB,EAAMmgB,EACzB,aAAcV,GAAaS,GAAWlgB,EAAM,GAAKmgB,CAAS,CAC9D,CACA,CAEA,SAASC,GAAaC,EAAMrY,EAAYoB,EAAU4W,EAAS,CACzD,IAAIxB,EAAQ,EAEZ,QAASnX,EAAIW,EAAYX,EAAI+B,EAAU/B,IAAK,CAC1C,IAAIiZ,EAEJ,MAAMC,EAAYF,EAAKhZ,CAAC,EACxBmX,KAAW8B,EAAqBN,EAAQO,CAAS,KAAO,MAAQD,IAAuB,OAAS,OAASA,EAAmB,cAAgB,CAC7I,CAED,OAAO9B,CACT,CAEA,SAASgC,GAASH,EAAMrY,EAAYoB,EAAUqX,EAAUC,EAAa5Y,EAAQ,CAC3E,IAAI6Y,EAAoB3Y,EACpB4Y,EAAgB,EAEpB,QAASvZ,EAAIW,EAAYX,EAAI+B,EAAU/B,IAAK,CAC1C,MAAMwZ,EAAYT,GAAaC,EAAMhZ,EAAGA,EAAI,EAAGqZ,CAAW,EAEtDE,EAAgBC,EAAYJ,IAC1BE,EAAoBtZ,GACtBS,EAAO,KAAKT,CAAC,EAGfsZ,EAAoBtZ,EACpBuZ,EAAgB,GAGlBA,GAAiBC,CAClB,CAED,OAAOD,CACT,CAEA,SAASE,GAAUT,EAAMrY,EAAYoB,EAAUqX,EAAUC,EAAa5Y,EAAQ,CAC5E,IAAI6Y,EAAoB3Y,EACpB+Y,EAAsB/Y,EACtBgZ,EAAoBhZ,EACpB4Y,EAAgB,EAEpB,QAASvZ,EAAIW,EAAYX,EAAI+B,EAAU/B,IAOrC,IANIgZ,EAAKhZ,CAAC,IAAM,KAELgZ,EAAKhZ,EAAI,CAAC,IAAM,KAAOA,EAAI,IAAM+B,KAC1C4X,EAAoB3Z,EAAI,GAGtB2Z,EAAoBD,EAAqB,CAC3C,IAAIE,EAAab,GAAaC,EAAMU,EAAqBC,EAAmBN,CAAW,EAEnFE,EAAgBK,EAAaR,IAC3BE,EAAoBI,IACtBjZ,EAAO,KAAKiZ,CAAmB,EAC/BJ,EAAoBI,EACpBH,EAAgB,GAGdK,EAAaR,IACfQ,EAAaT,GAASH,EAAMU,EAAqBC,EAAmBP,EAAUC,EAAa5Y,CAAM,EACjG6Y,EAAoB7Y,EAAOA,EAAO,OAAS,CAAC,IAIhDiZ,EAAsBC,EACtBJ,GAAiBK,CAClB,CAGH,OAAOL,CACT,CAEO,SAASM,GAAab,EAAMc,EAAWV,EAAUC,EAAa1Y,EAAa,EAAGoB,EAAU,CACzFA,IAAa,SACfA,EAAWiX,EAAK,QAGlB,MAAM/W,EAAS,CAAA,EAEf,OAAI6X,IAAc,YAChBX,GAASH,EAAMrY,EAAYoB,EAAUqX,EAAUC,EAAapX,CAAM,EAElEwX,GAAUT,EAAMrY,EAAYoB,EAAUqX,EAAUC,EAAapX,CAAM,EAG9DA,CACT,CAEA,SAAS8X,GAAaC,EAAMrZ,EAAYoB,EAAUsX,EAAaY,EAAaC,EAAS,CACnF,IAAIriB,EAAI,EACJihB,EAAY,EAEhB,QAAS9Y,EAAIW,EAAYX,EAAI+B,EAAU/B,IAAK,CAC1C,MAAMkZ,EAAYc,EAAKha,CAAC,EAClBma,EAAQd,EAAYH,CAAS,EAE/BiB,GACGrB,IACHA,EAAYqB,EAAM,cAGpBF,EAAYja,CAAC,EAAInI,EAAIsiB,EAAM,YAAc,EACzCtiB,GAAKsiB,EAAM,cAEX5E,GAAI,KAAK,sBAAsB,OAAO2D,EAAW,IAAI,EAAE,OAAOA,EAAU,YAAY,CAAC,EAAG,GAAG,CAAC,EAAC,EAC7Fe,EAAYja,CAAC,EAAInI,EACjBA,GAAKqgB,GAER,CAEDgC,EAAQ,CAAC,EAAIriB,EACbqiB,EAAQ,CAAC,EAAIpB,CACf,CAEO,SAASsB,GAAmBC,EAAWC,EAAYR,EAAWV,EAAUC,EAAa,CAC1F,MAAMkB,EAAa,MAAM,KAAKF,CAAS,EACjCG,EAAgBD,EAAW,OAC3B1iB,EAAI,IAAI,MAAM2iB,CAAa,EAC3B7V,EAAI,IAAI,MAAM6V,CAAa,EAC3BC,EAAW,IAAI,MAAMD,CAAa,EAClCE,GAAuBZ,IAAc,cAAgBA,IAAc,cAAgB,SAASV,CAAQ,GAAKA,EAAW,EACpHlZ,EAAO,CAAC,EAAG,CAAC,EACZga,EAAU,CAAC,EAAG,CAAC,EACrB,IAAIS,EAAe,EACfC,EAAiB,EACjBC,EAAe,EAEnB,QAAS7a,EAAI,EAAGA,GAAKwa,EAAexa,IAAK,CACvC,MAAMyW,EAAO8D,EAAWva,CAAC,EAMzB,IAJIyW,IAAS;AAAA,GAAQzW,IAAMwa,KACzBK,EAAe7a,GAGb6a,EAAeD,EAAgB,CACjC,MAAME,EAAOJ,EAAsBb,GAAaU,EAAYT,EAAWV,EAAUC,EAAauB,EAAgBC,CAAY,EAAI1C,GAE9H,QAAS4C,EAAW,EAAGA,GAAYD,EAAK,OAAQC,IAAY,CAC1D,MAAMC,EAAWD,IAAa,EAAIH,EAAiBE,EAAKC,EAAW,CAAC,EAC9DE,EAASF,EAAWD,EAAK,OAASA,EAAKC,CAAQ,EAAIF,EACzDd,GAAaQ,EAAYS,EAAUC,EAAQ5B,EAAaxhB,EAAGqiB,CAAO,EAElE,QAASja,EAAI+a,EAAU/a,EAAIgb,EAAQhb,IAAK,CACtC,IAAIib,EAEJ,MAAMzE,EAAO8D,EAAWta,CAAC,EACnBkb,IAAkBD,EAAoB7B,EAAY5C,CAAI,KAAO,MAAQyE,IAAsB,OAAS,OAASA,EAAkB,gBAAkB,EACvJvW,EAAE1E,CAAC,EAAI0a,EAAeT,EAAQ,CAAC,EAAI,EAAIiB,EACvCV,EAASxa,CAAC,EAAIia,EAAQ,CAAC,CACxB,CAEDS,EAAeA,EAAeT,EAAQ,CAAC,EAAII,EAC3Cpa,EAAK,CAAC,EAAI,KAAK,IAAIA,EAAK,CAAC,EAAGga,EAAQ,CAAC,CAAC,CACvC,CAEDU,EAAiBC,CAClB,CAEGpE,IAAS;AAAA,IACX5e,EAAE+iB,CAAc,EAAI,EACpBjW,EAAEiW,CAAc,EAAI,EACpBH,EAASG,CAAc,EAAI,EAC3BA,IAEH,CAED,OAAA1a,EAAK,CAAC,EAAIya,EACH,CACL,EAAA9iB,EACA,EAAA8M,EACA,SAAA8V,EACA,KAAAva,CACJ,CACA,CACO,SAASkb,GAAkB,CAChC,MAAAnf,EACA,OAAAwK,EACA,OAAAqR,EACA,OAAAhX,EACA,aAAAua,EACA,aAAA9C,CACF,EAAG,CACD,MAAM+C,EAAkBrf,EAAM,kBACxBoB,EAAgBya,EAASA,EAASwD,EAAkB,EACpDC,EAAgBza,EAASA,EAASwa,EAAkB,EACpDE,EAAiBH,EAAa5U,CAAM,GAAK,KAAK,MAAMxK,EAAM,OAASsf,GAAiBle,CAAa,EACjGoe,EAAmBlD,GAAgB,IAAI,IACvCmD,EAAQ,IAAI,MAAMjV,CAAM,EAC9B,IAAIkV,EAAQ1f,EAEZ,GAAIoB,EAAgB,GAAKke,EAAgB,EAAG,CAC1C,MAAMK,EAAY3f,EAAM,YACxB0f,EAAQ,IAAIC,EAAUJ,CAAc,EAEpC,QAASxb,EAAI,EAAGA,EAAIwb,EAAgBxb,IAClC2b,EAAM3b,CAAC,EAAI/D,EAAM+D,EAAI3C,EAAgBke,CAAa,CAErD,CAED,QAASxkB,EAAQ,EAAGA,EAAQ0P,EAAQ1P,IAAS,CAC3C,MAAM4J,EAAa0a,EAAatkB,CAAK,EAC/BgL,EAAWsZ,EAAatkB,EAAQ,CAAC,GAAKykB,EACtCK,EAAeF,EAAM,SAAShb,EAAYoB,CAAQ,EACxD2Z,EAAM3kB,CAAK,EAAI,OAAO,cAAc,MAAM,KAAM8kB,CAAY,EAExDJ,GACFI,EAAa,QAAQJ,EAAiB,IAAKA,CAAgB,CAE9D,CAED,GAAIA,EACF,UAAWK,KAAYL,EACrBlD,EAAa,IAAI,OAAO,cAAcuD,CAAQ,CAAC,EAInD,MAAO,CACL,MAAAJ,EACA,eAAAF,CACJ,CACA,CC5Qe,MAAMO,EAAS,CAC5B,YAAYC,EAAQ,EAAG,CACrB5gB,EAAgB,KAAM,QAAS,MAAM,EAErCA,EAAgB,KAAM,SAAU,CAAA,CAAE,EAElCA,EAAgB,KAAM,SAAU,CAAA,CAAE,EAElC,KAAK,MAAQ4gB,CACd,CAED,IAAIvhB,EAAK,CACP,MAAMwB,EAAQ,KAAK,OAAOxB,CAAG,EAE7B,OAAIwB,IACF,KAAK,aAAaxB,CAAG,EAErB,KAAK,aAAaA,CAAG,GAGhBwB,CACR,CAED,IAAIxB,EAAKwB,EAAO,CACT,KAAK,OAAOxB,CAAG,GASlB,KAAK,OAAOA,CAAG,EACf,KAAK,OAAOA,CAAG,EAAIwB,EAEnB,KAAK,aAAaxB,CAAG,IAXjB,OAAO,KAAK,KAAK,MAAM,EAAE,SAAW,KAAK,OAC3C,KAAK,OAAO,KAAK,OAAO,CAAC,CAAC,EAG5B,KAAK,OAAOA,CAAG,EAAIwB,EAEnB,KAAK,aAAaxB,CAAG,EAOxB,CAED,OAAOA,EAAK,CACI,KAAK,OAAOA,CAAG,IAG3B,OAAO,KAAK,OAAOA,CAAG,EAEtB,KAAK,aAAaA,CAAG,EAExB,CAED,aAAaA,EAAK,CAChB,MAAM1D,EAAQ,KAAK,OAAO,QAAQ0D,CAAG,EAEjC1D,GAAS,GACX,KAAK,OAAO,OAAOA,EAAO,CAAC,CAE9B,CAED,aAAa0D,EAAK,CAChB,KAAK,OAAO,KAAKA,CAAG,CACrB,CAEH,CCzDA,SAASwhB,IAAyB,CAChC,MAAMC,EAAU,CAAA,EAEhB,QAASlc,EAAI,GAAIA,EAAI,IAAKA,IACxBkc,EAAQ,KAAK,OAAO,aAAalc,CAAC,CAAC,EAGrC,OAAOkc,CACT,CAEO,MAAMC,GAAwB,CACnC,WAAY,oBACZ,WAAY,SACZ,aAAcF,GAAwB,EACtC,SAAU,GACV,OAAQ,EACR,IAAK,GACL,OAAQ,IACR,OAAQ,GACR,UAAW,EACb,EACMG,GAAmB,KACnBC,GAAiB,GACjBC,GAAe,IACfC,GAAc,EACpB,IAAIC,GAAQ,IAAIT,GAASQ,EAAW,EAEpC,SAASE,GAAYC,EAAUnE,EAAc,CAC3C,IAAIoE,EAEA,OAAOpE,GAAiB,SAC1BoE,EAAa,IAAI,IAAI,MAAM,KAAKpE,CAAY,CAAC,EAE7CoE,EAAa,IAAI,IAAIpE,CAAY,EAGnC,MAAMqE,EAAkBJ,GAAM,IAAIE,CAAQ,EAE1C,GAAI,CAACE,EACH,OAAOD,EAGT,UAAWlG,KAAQmG,EAAgB,QAC7BD,EAAW,IAAIlG,CAAI,GACrBkG,EAAW,OAAOlG,CAAI,EAI1B,OAAOkG,CACT,CAEA,SAASE,GAAqBC,EAAcC,EAAW,CACrD,QAAS/c,EAAI,EAAGA,EAAI8c,EAAa,OAAQ9c,IACvC+c,EAAU,KAAK,EAAI/c,EAAI,CAAC,EAAI8c,EAAa9c,CAAC,CAE9C,CAEA,SAASgd,GAAaxG,EAAKJ,EAAYH,EAAUI,EAAY,CAC3DG,EAAI,KAAO,GAAG,OAAOH,EAAY,GAAG,EAAE,OAAOJ,EAAU,KAAK,EAAE,OAAOG,CAAU,EAC/EI,EAAI,UAAY,OAChBA,EAAI,aAAe,aACnBA,EAAI,UAAY,MAClB,CAEO,SAASyG,GAAuBjB,EAAO,CAC5CzG,GAAI,OAAO,OAAO,SAASyG,CAAK,GAAKA,GAASO,GAAa,qBAAqB,EAChFC,GAAQ,IAAIT,GAASC,CAAK,CAC5B,CACe,MAAMkB,EAAiB,CACpC,aAAc,CACZ9hB,EAAgB,KAAM,QAAS,CAAE,GAAG+gB,EACxC,CAAK,EAED/gB,EAAgB,KAAM,OAAQ,MAAM,EAEpCA,EAAgB,KAAM,SAAU,MAAM,CACvC,CAED,IAAI,SAAU,CACZ,OAAO,KAAK,MACb,CAED,IAAI,SAAU,CACZ,OAAO,KAAK,QAAU,KAAK,OAAO,OACnC,CAED,IAAI,OAAQ,CACV,KAAM,CACJ,SAAA6a,EACA,OAAAlP,CACN,EAAQ,KAAK,MACT,OAAQkP,EAAWqG,GAAevV,EAAS,GAAKkP,CACjD,CAED,SAASlO,EAAQ,GAAI,CACnB,OAAO,OAAO,KAAK,MAAOA,CAAK,EAC/B,KAAK,KAAO,KAAK,UACjB,MAAMmU,EAAUO,GAAY,KAAK,KAAM,KAAK,MAAM,YAAY,EACxDG,EAAkBJ,GAAM,IAAI,KAAK,IAAI,EAE3C,GAAII,GAAmBV,EAAQ,OAAS,EAAG,CACrC,KAAK,SAAWU,IAClB,KAAK,OAASA,GAGhB,MACD,CAED,MAAMO,EAAY,KAAK,mBAAmBjB,EAASU,CAAe,EAElE,KAAK,OAASO,EACdX,GAAM,IAAI,KAAK,KAAMW,CAAS,CAC/B,CAED,mBAAmB5E,EAAcqE,EAAiB,CAChD,KAAM,CACJ,WAAAxG,EACA,WAAAC,EACA,SAAAJ,EACA,OAAAlP,EACA,IAAAyO,EACA,OAAAU,EACA,OAAAC,CACN,EAAQ,KAAK,MACT,IAAII,EAASqG,GAAmBA,EAAgB,KAE3CrG,IACHA,EAAS,SAAS,cAAc,QAAQ,EACxCA,EAAO,MAAQ6F,IAGjB,MAAM5F,EAAMD,EAAO,WAAW,KAAM,CAClC,mBAAoB,EAC1B,CAAK,EACDyG,GAAaxG,EAAKJ,EAAYH,EAAUI,CAAU,EAClD,KAAM,CACJ,QAAAsC,EACA,aAAAyE,EACA,QAAAxE,EACA,QAAAC,CACD,EAAGP,GAAa,CACf,aAAc7B,GAAQD,EAAI,YAAYC,CAAI,EAAE,MAC5C,WAAYR,EAAWqG,GACvB,OAAAvV,EACA,aAAAwR,EACA,eAAgB6D,GAChB,GAAIQ,GAAmB,CACrB,QAASA,EAAgB,QACzB,QAASA,EAAgB,QACzB,QAASA,EAAgB,OACjC,CACA,CAAK,EAED,GAAIrG,EAAO,SAAW6G,EAAc,CAClC,MAAML,EAAYvG,EAAI,aAAa,EAAG,EAAGD,EAAO,MAAOA,EAAO,MAAM,EACpEA,EAAO,OAAS6G,EAChB5G,EAAI,aAAauG,EAAW,EAAG,CAAC,CACjC,CAID,GAFAC,GAAaxG,EAAKJ,EAAYH,EAAUI,CAAU,EAE9Cb,EAAK,CACP,MAAM6H,EAAU,IAAIrH,GAAQ,CAC1B,SAAAC,EACA,OAAAlP,EACA,OAAAmP,EACA,OAAAC,EACA,WAAAC,EACA,WAAY,GAAG,OAAOC,CAAU,CACxC,CAAO,EAED,UAAWI,KAAQ8B,EAAc,CAC/B,KAAM,CACJ,KAAA/f,EACA,MAAA2e,EACA,OAAAC,EACA,SAAAL,CACV,EAAYsG,EAAQ,KAAK5G,CAAI,EACrBkC,EAAQlC,CAAI,EAAE,MAAQU,EACtBwB,EAAQlC,CAAI,EAAE,cAAgBR,EAAWoG,GAAiBtF,EAC1D,MAAMgG,EAAYvG,EAAI,gBAAgBW,EAAOC,CAAM,EACnDyF,GAAqBrkB,EAAMukB,CAAS,EACpCvG,EAAI,aAAauG,EAAWpE,EAAQlC,CAAI,EAAE,EAAGkC,EAAQlC,CAAI,EAAE,CAAC,CAC7D,CACP,KACM,WAAWA,KAAQ8B,EACjB/B,EAAI,SAASC,EAAMkC,EAAQlC,CAAI,EAAE,EAAGkC,EAAQlC,CAAI,EAAE,EAAI1P,EAASkP,EAAWoG,EAAc,EAI5F,MAAO,CACL,QAAAzD,EACA,QAAAC,EACA,QAAAF,EACA,KAAMpC,EACN,MAAOA,EAAO,MACd,OAAQA,EAAO,MACrB,CACG,CAED,SAAU,CACR,KAAM,CACJ,WAAAH,EACA,WAAAC,EACA,SAAAJ,EACA,OAAAlP,EACA,IAAAyO,EACA,OAAAU,EACA,OAAAC,CACN,EAAQ,KAAK,MAET,OAAIX,EACK,GAAG,OAAOY,EAAY,GAAG,EAAE,OAAOC,EAAY,GAAG,EAAE,OAAOJ,EAAU,GAAG,EAAE,OAAOlP,EAAQ,GAAG,EAAE,OAAOmP,EAAQ,GAAG,EAAE,OAAOC,CAAM,EAGhI,GAAG,OAAOC,EAAY,GAAG,EAAE,OAAOC,EAAY,GAAG,EAAE,OAAOJ,EAAU,GAAG,EAAE,OAAOlP,CAAM,CAC9F,CAEH,CChOA,MAAAnJ,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECAfC,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECKTH,GAAe,CACnB,UAAW,GACX,UAAW,EACX,UAAW,SACX,cAAe,EACf,cAAe,OAAO,iBACtB,QAAS,CACP,KAAM,QACN,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,CACnB,EACD,YAAa,CACX,KAAM,WACN,MAAO7F,GAAKA,EAAE,QACf,EACD,QAAS,CACP,KAAM,WACN,MAAO,CACR,EACD,SAAU,CACR,KAAM,WACN,MAAO,CACR,EACD,eAAgB,CACd,KAAM,WACN,MAAO,CAAC,EAAG,CAAC,CACb,EACD,gBAAiB,CACf,KAAM,WACN,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,CACnB,EACD,aAAc,CACZ,KAAM,WACN,MAAO,CAAC,EAAG,EAAG,EAAG,GAAG,CACrB,EACD,aAAc,CACZ,KAAM,WACN,MAAO,CAAC,EAAG,EAAG,EAAG,GAAG,CACrB,EACD,aAAc,CACZ,KAAM,WACN,MAAO,CACR,CACH,EACe,MAAMylB,WAA4BrlB,EAAM,CACrD,eAAe6P,EAAM,CACnB,MAAM,GAAGA,CAAI,EAEb1M,EAAgB,KAAM,QAAS,MAAM,CACtC,CAED,YAAa,CACX,OAAO,MAAM,WAAW,CACtB,GAAAwC,GACA,GAAAC,GACA,QAAS,CAACC,GAAWC,EAAO,CAClC,CAAK,CACF,CAED,iBAAkB,CAChB,KAAK,oBAAqB,EAAC,aAAa,CACtC,kBAAmB,CACjB,KAAM,EACN,KAAM,KACN,KAAM,KAAK,kBAAmB,EAC9B,WAAY,GACZ,SAAU,aACX,EACD,cAAe,CACb,KAAM,EACN,WAAY,GACZ,SAAU,UACV,aAAc,CACf,EACD,eAAgB,CACd,KAAM,EACN,WAAY,GACZ,SAAU,UACX,EACD,cAAe,CACb,KAAM,EACN,SAAU,iBACX,EACD,qBAAsB,CACpB,KAAM,EACN,WAAY,GACZ,SAAU,gBACX,EACD,mBAAoB,CAClB,KAAM,EACN,WAAY,GACZ,WAAY,GACZ,KAAM,KACN,SAAU,eACV,aAAc,CAAC,EAAG,EAAG,EAAG,GAAG,CAC5B,EACD,mBAAoB,CAClB,KAAM,EACN,WAAY,GACZ,WAAY,GACZ,KAAM,KACN,SAAU,eACV,aAAc,CAAC,EAAG,EAAG,EAAG,GAAG,CAC5B,EACD,mBAAoB,CAClB,KAAM,EACN,WAAY,GACZ,SAAU,eACV,aAAc,CACf,CACP,CAAK,CACF,CAED,YAAYC,EAAQ,CAClB,MAAM,YAAYA,CAAM,EACxB,KAAM,CACJ,YAAAgK,CACD,EAAGhK,EAEJ,GAAIgK,EAAY,kBAAmB,CACjC,IAAI/J,EAEJ,KAAM,CACJ,GAAAC,CACR,EAAU,KAAK,SACRD,EAAoB,KAAK,MAAM,SAAW,MAAQA,IAAsB,QAAkBA,EAAkB,OAAM,EACnH,KAAK,MAAM,MAAQ,KAAK,UAAUC,CAAE,EACpC,KAAK,sBAAsB,eAC5B,CACF,CAED,KAAK,CACH,SAAAC,CACJ,EAAK,CACD,KAAM,CACJ,UAAAO,EACA,UAAA6e,EACA,UAAAC,EACA,cAAAC,EACA,cAAAC,EACA,aAAAC,CACN,EAAQ,KAAK,MACT,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MAELA,EAAQ,OAAS,IACnBA,EAAU,CAACA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGA,EAAQ,CAAC,CAAC,GAG3D,KAAK,MAAM,MAAM,YAAYzf,CAAQ,EAAE,YAAY,CACjD,UAAAO,EACA,QAAS,EAAQif,EACjB,QAAAC,EACA,UAAW5e,GAAKwe,CAAS,EACzB,UAAAD,EACA,cAAAE,EACA,cAAAC,CACN,CAAK,EAAE,KAAI,CACR,CAED,UAAUxf,EAAI,CACZ,MAAMe,EAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACzC,OAAO,IAAIC,GAAMhB,EAAI,CAAE,GAAG,KAAK,WAAY,EACzC,GAAI,KAAK,MAAM,GACf,SAAU,IAAIiB,GAAS,CACrB,SAAU,EACV,YAAa,EACb,WAAY,CACV,UAAW,CACT,KAAM,EACN,MAAO,IAAI,aAAaF,CAAS,CAClC,CACF,CACT,CAAO,EACD,YAAa,EACnB,CAAK,CACF,CAEH,CAEA7D,EAAgBkiB,GAAqB,eAAgB5f,EAAY,EAEjEtC,EAAgBkiB,GAAqB,YAAa,qBAAqB,ECrLvE,MAAMO,GAAc,CAClB,MAAO,EACP,OAAQ,EACR,IAAK,EACP,EACMC,GAAqB,CACzB,IAAK,EACL,OAAQ,EACR,OAAQ,EACV,EACMrgB,GAAgB,CAAC,EAAG,EAAG,EAAG,GAAG,EAC7BsgB,GAAsB,EACtBrgB,GAAe,CACnB,UAAW,GACX,UAAW,EACX,UAAW,SACX,cAAe,EACf,cAAe,OAAO,iBACtB,WAAY,GACZ,mBAAoB,CAClB,KAAM,WACN,MAAO,CAAC,IAAK,IAAK,IAAK,GAAG,CAC3B,EACD,eAAgB,CACd,KAAM,WACN,MAAOD,EACR,EACD,eAAgB,CACd,KAAM,WACN,MAAO,CACR,EACD,kBAAmB,CACjB,KAAM,QACN,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,CACnB,EACD,aAAc,CACZ,KAAM,SACN,MAAO0e,GAAsB,YAC9B,EACD,WAAYA,GAAsB,WAClC,WAAYA,GAAsB,WAClC,WAAY4B,GACZ,aAAc,CACZ,KAAM,SACN,MAAO,EACP,IAAK,CACN,EACD,aAAc,CACZ,KAAM,QACN,MAAOtgB,EACR,EACD,aAAc,CACZ,KAAM,SACN,MAAO,CAAE,EACT,QAAS,CACV,EACD,UAAW,aACX,SAAU,CACR,KAAM,SACN,MAAO,EACR,EACD,QAAS,CACP,KAAM,WACN,MAAO5F,GAAKA,EAAE,IACf,EACD,YAAa,CACX,KAAM,WACN,MAAOA,GAAKA,EAAE,QACf,EACD,SAAU,CACR,KAAM,WACN,MAAO4F,EACR,EACD,QAAS,CACP,KAAM,WACN,MAAO,EACR,EACD,SAAU,CACR,KAAM,WACN,MAAO,CACR,EACD,cAAe,CACb,KAAM,WACN,MAAO,QACR,EACD,qBAAsB,CACpB,KAAM,WACN,MAAO,QACR,EACD,eAAgB,CACd,KAAM,WACN,MAAO,CAAC,EAAG,CAAC,CACb,EACD,gBAAiB,CACf,cAAe,CAAC,aAAc,oBAAoB,CACnD,CACH,EACe,MAAMugB,WAAkBhmB,EAAe,CACpD,eAAe8P,EAAM,CACnB,MAAM,GAAGA,CAAI,EAEb1M,EAAgB,KAAM,QAAS,MAAM,EAErCA,EAAgB,KAAM,kBAAmB,CAAC9C,EAAQS,IAAe,CAC/D,GAAI,CACF,KAAM,CAACoe,EAAOC,CAAM,CACrB,EAAG,KAAK,mBAAmB9e,EAAQS,CAAU,EAC9C,KAAM,CACJ,SAAAkd,CACD,EAAG,KAAK,MAAM,iBAAiB,MAChCkB,GAASlB,EACTmB,GAAUnB,EACV,KAAM,CACJ,cAAAgI,EACA,qBAAAC,CACR,EAAU,KAAK,MACHC,EAAUN,GAAY,OAAOI,GAAkB,WAAaA,EAAc3lB,EAAQS,CAAU,EAAIklB,CAAa,EAC7GG,EAAUN,GAAmB,OAAOI,GAAyB,WAAaA,EAAqB5lB,EAAQS,CAAU,EAAImlB,CAAoB,EAC/I,MAAO,EAAEC,EAAU,GAAKhH,EAAQ,GAAIiH,EAAU,GAAKhH,EAAS,EAAGD,EAAOC,CAAM,CAClF,CAAK,EAEDhc,EAAgB,KAAM,iBAAkB,CAAC9C,EAAQS,IAAe,CAC9D,KAAM,CACJ,cAAAklB,EACA,qBAAAC,CACR,EAAU,KAAK,MACH,CACJ,EAAArmB,EACA,EAAA8M,EACA,SAAA8V,EACA,KAAM,CAACtD,EAAOC,CAAM,CACrB,EAAG,KAAK,mBAAmB9e,EAAQS,CAAU,EACxColB,EAAUN,GAAY,OAAOI,GAAkB,WAAaA,EAAc3lB,EAAQS,CAAU,EAAIklB,CAAa,EAC7GG,EAAUN,GAAmB,OAAOI,GAAyB,WAAaA,EAAqB5lB,EAAQS,CAAU,EAAImlB,CAAoB,EACzI1D,EAAgB3iB,EAAE,OAClBwmB,EAAU,IAAI,MAAM7D,EAAgB,CAAC,EAC3C,IAAIzjB,EAAQ,EAEZ,QAASiJ,EAAI,EAAGA,EAAIwa,EAAexa,IAAK,CACtC,MAAMse,GAAa,EAAIH,IAAYhH,EAAQsD,EAASza,CAAC,GAAK,EAC1Dqe,EAAQtnB,GAAO,GAAKonB,EAAU,GAAKhH,EAAQ,EAAImH,EAAYzmB,EAAEmI,CAAC,EAC9Dqe,EAAQtnB,GAAO,GAAKqnB,EAAU,GAAKhH,EAAS,EAAIzS,EAAE3E,CAAC,CACpD,CAED,OAAOqe,CACb,CAAK,CACF,CAED,iBAAkB,CAChB,KAAK,MAAQ,CACX,aAAc,EACd,iBAAkB,IAAInB,EAC5B,EAEQ,KAAK,MAAM,SAAW,GACxB3H,GAAI,KAAK,uEAAuE,GAEnF,CAED,YAAYvX,EAAQ,CAClB,KAAM,CACJ,MAAA+J,EACA,SAAAyL,EACA,YAAAxL,CACD,EAAGhK,GACgBgK,EAAY,aAAeA,EAAY,wBAA0BA,EAAY,sBAAsB,KAAOA,EAAY,sBAAsB,WAG9J,KAAK,YAAW,GAGE,KAAK,oBAEWD,EAAM,aAAeyL,EAAS,YAAczL,EAAM,YAAcyL,EAAS,WAAazL,EAAM,WAAayL,EAAS,WAGpJ,KAAK,SAAS,CACZ,aAAc,KAAK,MAAM,aAAe,CAChD,CAAO,CAEJ,CAED,eAAe,CACb,KAAAnb,CACJ,EAAK,CACD,OAAAA,EAAK,OAASA,EAAK,OAAS,EAAI,KAAK,MAAM,KAAKA,EAAK,KAAK,EAAI,KACvDA,CACR,CAED,kBAAmB,CACjB,KAAM,CACJ,aAAAkmB,EACA,WAAAnI,EACA,WAAAC,CACN,EAAQ,KAAK,MACH,CACJ,iBAAAmI,EACA,aAAAjG,CACN,EAAQ,KAAK,MACHkG,EAAY,CAAE,GAAGF,EACrB,aAAAhG,EACA,WAAAnC,EACA,WAAAC,CACN,EAEI,GAAI,CAACmI,EAAiB,QACpB,OAAAA,EAAiB,SAASC,CAAS,EAC5B,GAGT,UAAWhkB,KAAOgkB,EAChB,GAAIA,EAAUhkB,CAAG,IAAM+jB,EAAiB,MAAM/jB,CAAG,EAC/C,OAAA+jB,EAAiB,SAASC,CAAS,EAC5B,GAIX,MAAO,EACR,CAED,aAAc,CACZ,IAAIC,EAEJ,KAAM,CACJ,KAAAlmB,EACA,aAAA+f,CACN,EAAQ,KAAK,MACHoG,GAAcD,EAAclmB,EAAK,cAAgB,MAAQkmB,IAAgB,OAAS,OAASA,EAAY,QAC7G,GAAI,CACF,QAAAE,CACN,EAAQ,KAAK,MACLvD,EAAe7iB,EAAK,aACpBqmB,EACJ,MAAMpD,EAAmBlD,IAAiB,QAAU,IAAI,IAExD,GAAIoG,GAActD,EAAc,CAC9B,KAAM,CACJ,MAAAK,EACA,eAAAF,CACD,EAAGJ,GAAkB,CAAE,GAAI,YAAY,OAAOuD,CAAU,EAAI,CACzD,MAAOA,CACR,EAAGA,EACJ,OAAQnmB,EAAK,OACb,aAAA6iB,EACA,aAAcI,CACtB,CAAO,EACDoD,EAAerD,EAEfoD,EAAU,CAACE,EAAG,CACZ,MAAA/nB,CACR,IAAY2kB,EAAM3kB,CAAK,CACvB,KAAW,CACL,KAAM,CACJ,SAAA2F,EACA,WAAA3D,CACR,EAAU4D,GAAenE,CAAI,EACvB6iB,EAAe,CAAC,CAAC,EACjBwD,EAAe,EAEf,UAAWvmB,KAAUoE,EAAU,CAC7B3D,EAAW,QACX,MAAMigB,EAAO,MAAM,KAAK4F,EAAQtmB,EAAQS,CAAU,GAAK,EAAE,EAErD0iB,GACFzC,EAAK,QAAQyC,EAAiB,IAAKA,CAAgB,EAGrDoD,GAAgB7F,EAAK,OACrBqC,EAAa,KAAKwD,CAAY,CAC/B,CACF,CAED,KAAK,SAAS,CACZ,QAAAD,EACA,aAAAvD,EACA,aAAAwD,EACA,aAAcpD,GAAoBlD,CACxC,CAAK,CACF,CAED,mBAAmBjgB,EAAQS,EAAY,CACrC,KAAM,CACJ,iBAAAylB,CACN,EAAQ,KAAK,MACHnF,EAAcmF,EAAiB,QAC/BI,EAAU,KAAK,MAAM,QACrB,CACJ,UAAA9E,EACA,WAAAQ,EACA,SAAAlB,CACN,EAAQ,KAAK,MACHiB,EAAYuE,EAAQtmB,EAAQS,CAAU,GAAK,GACjD,OAAOqhB,GAAmBC,EAAWC,EAAYR,EAAWV,EAAWoF,EAAiB,MAAM,SAAUnF,CAAW,CACpH,CAED,cAAe,CACb,KAAM,CACJ,aAAAgC,EACA,aAAAwD,EACA,QAAAD,EACA,iBAAkB,CAChB,MAAAG,EACA,QAAAC,EACA,QAAArG,CACD,EACD,aAAAsG,CACN,EAAQ,KAAK,MACH,CACJ,KAAAzmB,EACA,UAAA0mB,EACA,YAAAC,EACA,SAAAC,EACA,QAAAC,EACA,SAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,eAAAC,EACA,eAAAC,EACA,kBAAAC,EACA,WAAAC,EACA,UAAAlhB,EACA,aAAA6f,EACA,aAAA7I,EACA,aAAAJ,EACA,UAAAiI,EACA,UAAAC,EACA,cAAAC,EACA,cAAAC,EACA,YAAAmC,EACA,eAAAC,CACN,EAAQ,KAAK,MACHC,EAAuB,KAAK,iBAAiB,aAAc3K,EAAc,EACzE4K,GAAuB,KAAK,iBAAiB,aAAc1C,EAAmB,EACpF,MAAO,CAACsC,GAAc,IAAII,GAAqB,CAC7C,aAAcR,EACd,aAAcC,EACd,aAAcC,EACd,QAASC,EACT,YAAAR,EACA,QAAAE,EACA,SAAAC,EACA,eAAAC,EACA,UAAA7gB,EACA,UAAA6e,EACA,UAAAC,EACA,cAAAC,EACA,cAAAC,EACA,YAAamC,GAAe,CAC1B,YAAaA,EAAY,YACzB,SAAUA,EAAY,SACtB,QAASA,EAAY,QACrB,aAAcA,EAAY,mBAC1B,aAAcA,EAAY,eAC1B,aAAcA,EAAY,eAC1B,eAAgBA,EAAY,cAC7B,CACP,EAAO,KAAK,iBAAiB,CACvB,GAAI,aACJ,eAAgB,CACd,YAAaC,EAAe,YAC5B,SAAUA,EAAe,SACzB,QAASA,EAAe,QACxB,aAAcA,EAAe,mBAC7B,aAAcA,EAAe,eAC7B,aAAcA,EAAe,eAC7B,eAAgBA,EAAe,eAC/B,gBAAiB,CACf,QAASA,EAAe,QACxB,cAAeA,EAAe,cAC9B,qBAAsBA,EAAe,qBACrC,aAAAb,CACD,CACF,CACP,CAAK,EAAG,CACF,KAAMzmB,EAAK,YAAcA,EAAK,WAAW,WAAa,CACpD,OAAQA,EAAK,OACb,WAAYA,EAAK,WAAW,UACpC,EAAUA,EACJ,UAAA0mB,EACA,cAAe,GACf,gBAAiB,KAAK,eAC5B,CAAK,EAAG,IAAIa,EAAqB,CAC3B,IAAKxB,EAAa,IAClB,UAAW,OAAO,SAASA,EAAa,SAAS,EAAIA,EAAa,UAAYpC,GAAsB,UACpG,aAAczG,GAAgB6I,EAAa,QAAUpC,GAAsB,QAC3E,aAAA7G,EACA,UAAW0J,EACX,YAAarG,EACb,YAAAwG,EACA,SAAAC,EACA,QAAAC,EACA,SAAAC,EACA,eAAAC,EACA,UAAA7gB,EACA,UAAW6e,EAAYwB,EACvB,UAAAvB,EACA,cAAeC,EAAgBsB,EAC/B,cAAerB,EAAgBqB,EAC/B,YAAac,GAAe,CAC1B,YAAaA,EAAY,YACzB,SAAUA,EAAY,SACtB,SAAUA,EAAY,SACtB,QAASA,EAAY,QACrB,eAAgBA,EAAY,cAC7B,CACP,EAAO,KAAK,iBAAiB,CACvB,GAAI,aACJ,eAAgB,CACd,IAAKC,EAAe,QACpB,YAAaA,EAAe,YAC5B,SAAUA,EAAe,SACzB,SAAUA,EAAe,SACzB,QAASA,EAAe,QACxB,eAAgBA,EAAe,eAC/B,eAAgB,CACd,cAAeA,EAAe,cAC9B,qBAAsBA,EAAe,qBACrC,aAAAb,CACD,CACF,CACP,CAAK,EAAG,CACF,KAAAzmB,EACA,UAAA0mB,EACA,aAAA7D,EACA,aAAAwD,EACA,eAAgB,KAAK,eACrB,QAASD,CACV,CAAA,CAAC,CACH,CAED,WAAW,oBAAoB5C,EAAO,CACpCiB,GAAuBjB,CAAK,CAC7B,CAEH,CAEA5gB,EAAgB4iB,GAAW,eAAgBtgB,EAAY,EAEvDtC,EAAgB4iB,GAAW,YAAa,WAAW,ECvb5C,MAAMiC,GAAc,CACzB,OAAQ,CACN,KAAMtiB,GACN,MAAO,CACL,OAAQ,SACR,QAAS,UACT,mBAAoB,qBACpB,mBAAoB,qBACpB,eAAgB,iBAChB,eAAgB,iBAChB,qBAAsB,kBACtB,qBAAsB,kBACtB,iBAAkB,cAClB,iBAAkB,cAClB,kBAAmB,eACnB,eAAgB,YAChB,aAAc,eACd,aAAc,eACd,aAAc,eACd,eAAgB,WACjB,CACF,EACD,KAAM,CACJ,KAAM0X,GACN,MAAO,CACL,UAAW,YACX,YAAa,cACb,kBAAmB,gBACnB,kBAAmB,gBACnB,cAAe,YACf,cAAe,YACf,gBAAiB,cACjB,cAAe,YACf,QAAS,UACT,aAAc,WACd,aAAc,WACd,mBAAoB,iBACpB,YAAa,SACd,CACF,EACD,KAAM,CACJ,KAAM2I,GACN,MAAO,CACL,kBAAmB,gBACnB,kBAAmB,gBACnB,cAAe,YACf,cAAe,YACf,eAAgB,aAChB,sBAAuB,oBACvB,eAAgB,aAChB,eAAgB,aAChB,eAAgB,aAChB,aAAc,WACd,iBAAkB,eAClB,iBAAkB,eAClB,cAAe,YACf,iBAAkB,eAClB,cAAe,YACf,iBAAkB,eAClB,QAAS,UACT,aAAc,WACd,aAAc,WACd,mBAAoB,iBACpB,YAAa,UACb,cAAe,gBACf,yBAA0B,uBAC1B,uBAAwB,qBACxB,mBAAoB,iBACpB,mBAAoB,gBACrB,CACF,CACH,EACakC,GAAa,CACxB,KAAMrY,GACN,MAAO,CACL,eAAgB,aAChB,eAAgB,aAChB,mBAAoB,iBACpB,mBAAoB,iBACpB,iBAAkB,eAClB,eAAgB,aAChB,eAAgB,aAChB,cAAe,YACf,aAAc,WACd,aAAc,UACf,CACH,EACasY,GAAgB,CAC3B,KAAMzN,GACN,MAAO,CACL,SAAU,WACV,OAAQ,SACR,UAAW,YACX,eAAgB,iBAChB,SAAU,WACV,QAAS,UACT,aAAc,eACd,aAAc,eACd,aAAc,cACf,CACH,EACO,SAAS0N,GAAgB,CAC9B,KAAArc,EACA,MAAAgE,CACF,EAAG,CACD,MAAM9F,EAAS,CAAA,EAEf,UAAWxH,KAAOsN,EAChB9F,EAAOxH,CAAG,EAAIsJ,EAAK,aAAagE,EAAMtN,CAAG,CAAC,EAG5C,OAAOwH,CACT,CACO,SAASoe,GAAanoB,EAAOygB,EAAS,CAC3C,KAAM,CACJ,YAAAkH,EACA,eAAAC,CACJ,EAAM5nB,EAAM,MACJ+J,EAAS,CACb,eAAgB,CAAE,EAClB,YAAa4d,GAAe,CAC1B,YAAaA,EAAY,QAC1B,CACL,EAEE,UAAWS,KAAa3H,EAAS,CAC/B,MAAM4H,EAAY5H,EAAQ2H,CAAS,EACnC,IAAIrkB,EAAQ/D,EAAM,MAAMooB,CAAS,EAE7BA,EAAU,WAAW,KAAK,IAC5BrkB,EAAQ/D,EAAM,oBAAoB+D,CAAK,EACvCgG,EAAO,eAAese,CAAS,EAAIT,EAAeQ,CAAS,EAEvDT,IACF5d,EAAO,YAAYse,CAAS,EAAIV,EAAYS,CAAS,IAIzDre,EAAOse,CAAS,EAAItkB,CACrB,CAED,OAAOgG,CACT,CClJO,SAASue,GAAmBC,EAAS,CAC1C,GAAI,MAAM,QAAQA,CAAO,EACvB,OAAOA,EAKT,OAFAlL,GAAI,OAAOkL,EAAQ,KAAM,4BAA4B,EAE7CA,EAAQ,KAAI,CAClB,IAAK,UACH,MAAO,CAACA,CAAO,EAEjB,IAAK,oBACH,OAAAlL,GAAI,OAAO,MAAM,QAAQkL,EAAQ,QAAQ,EAAG,sCAAsC,EAC3EA,EAAQ,SAEjB,QACE,MAAO,CAAC,CACN,SAAUA,CAClB,CAAO,CACJ,CACH,CACO,SAASC,GAAwBC,EAAUC,EAAa9kB,EAAY,CAAA,EAAI,CAC7E,MAAM+kB,EAAY,CAChB,cAAe,CAAE,EACjB,aAAc,CAAE,EAChB,gBAAiB,CAAE,EACnB,uBAAwB,CAAE,CAC9B,EACQ,CACJ,SAAA9kB,EAAW,EACX,OAAAC,EAAS2kB,EAAS,MACnB,EAAG7kB,EAEJ,QAASuY,EAAetY,EAAUsY,EAAerY,EAAQqY,IAAgB,CACvE,MAAMI,EAAUkM,EAAStM,CAAY,EAC/B,CACJ,SAAAzX,CACD,EAAG6X,EAEJ,GAAK7X,EAIL,GAAIA,EAAS,OAAS,qBAAsB,CAC1C2Y,GAAI,OAAO,MAAM,QAAQ3Y,EAAS,UAAU,EAAG,wCAAwC,EACvF,KAAM,CACJ,WAAAkkB,CACD,EAAGlkB,EAEJ,QAASoD,EAAI,EAAGA,EAAI8gB,EAAW,OAAQ9gB,IAAK,CAC1C,MAAM+gB,EAAcD,EAAW9gB,CAAC,EAChCghB,GAAiBD,EAAaF,EAAWD,EAAanM,EAASJ,CAAY,CAC5E,CACP,MACM2M,GAAiBpkB,EAAUikB,EAAWD,EAAanM,EAASJ,CAAY,CAE3E,CAED,OAAOwM,CACT,CAEA,SAASG,GAAiBpkB,EAAUikB,EAAWD,EAAaK,EAAeC,EAAoB,CAC7F,KAAM,CACJ,KAAAnd,EACA,YAAAod,CACD,EAAGvkB,EACE,CACJ,cAAAwkB,EACA,aAAAC,EACA,gBAAAC,EACA,uBAAAC,CACD,EAAGV,EAEJ,GAAI,CAACW,GAAiBzd,EAAMod,CAAW,EAAG,CACxC5L,GAAI,KAAK,GAAG,OAAOxR,EAAM,4BAA4B,CAAC,IACtD,MACD,CAED,OAAQA,EAAI,CACV,IAAK,QACHqd,EAAc,KAAKR,EAAY,CAC7B,SAAAhkB,CACR,EAASqkB,EAAeC,CAAkB,CAAC,EACrC,MAEF,IAAK,aACHC,EAAY,QAAQM,GAAS,CAC3BL,EAAc,KAAKR,EAAY,CAC7B,SAAU,CACR,KAAM,QACN,YAAaa,CACd,CACX,EAAWR,EAAeC,CAAkB,CAAC,CAC7C,CAAO,EACD,MAEF,IAAK,aACHG,EAAa,KAAKT,EAAY,CAC5B,SAAAhkB,CACR,EAASqkB,EAAeC,CAAkB,CAAC,EACrC,MAEF,IAAK,kBACHC,EAAY,QAAQ5a,GAAQ,CAC1B8a,EAAa,KAAKT,EAAY,CAC5B,SAAU,CACR,KAAM,aACN,YAAara,CACd,CACX,EAAW0a,EAAeC,CAAkB,CAAC,CAC7C,CAAO,EACD,MAEF,IAAK,UACHI,EAAgB,KAAKV,EAAY,CAC/B,SAAAhkB,CACR,EAASqkB,EAAeC,CAAkB,CAAC,EACrCC,EAAY,QAAQ5a,GAAQ,CAC1Bgb,EAAuB,KAAKX,EAAY,CACtC,SAAU,CACR,KAAM,aACN,YAAara,CACd,CACX,EAAW0a,EAAeC,CAAkB,CAAC,CAC7C,CAAO,EACD,MAEF,IAAK,eACHC,EAAY,QAAQ1d,GAAW,CAC7B6d,EAAgB,KAAKV,EAAY,CAC/B,SAAU,CACR,KAAM,UACN,YAAand,CACd,CACX,EAAWwd,EAAeC,CAAkB,CAAC,EACrCzd,EAAQ,QAAQ8C,GAAQ,CACtBgb,EAAuB,KAAKX,EAAY,CACtC,SAAU,CACR,KAAM,aACN,YAAara,CACd,CACb,EAAa0a,EAAeC,CAAkB,CAAC,CAC/C,CAAS,CACT,CAAO,EACD,KAGH,CACH,CAEA,MAAMQ,GAAwB,CAC5B,MAAO,EACP,WAAY,EACZ,WAAY,EACZ,gBAAiB,EACjB,QAAS,EACT,aAAc,CAChB,EACO,SAASF,GAAiBzd,EAAMod,EAAa,CAClD,IAAIQ,EAAYD,GAAsB3d,CAAI,EAG1C,IAFAwR,GAAI,OAAOoM,EAAW,wBAAwB,OAAO5d,CAAI,CAAC,EAEnDod,GAAe,EAAEQ,EAAY,GAClCR,EAAcA,EAAY,CAAC,EAG7B,OAAOA,GAAe,OAAO,SAASA,EAAY,CAAC,CAAC,CACtD,CCtKA,SAASS,IAAwB,CAC/B,MAAO,CACL,OAAQ,CAAE,EACV,MAAO,CAAE,EACT,SAAU,CAAE,EACZ,gBAAiB,CAAE,CACvB,CACA,CAEA,SAASC,GAAepP,EAAG,CACzB,OAAOA,EAAE,SAAS,WACpB,CAEO,SAASqP,GAA6BnB,EAAUoB,EAAc,CACnE,MAAMC,EAAaJ,KACb,CACJ,cAAAR,EACA,aAAAC,EACA,gBAAAC,EACA,uBAAAC,CACD,EAAGZ,EACJ,OAAAqB,EAAW,OAAO,KAAOZ,EAEzBY,EAAW,OAAO,UAAYD,EAAa,gBAAkB,IAAMA,EAAa,eAEhFC,EAAW,OAAO,YAAcH,GAChCG,EAAW,MAAM,KAAOX,EAExBW,EAAW,MAAM,UAAYD,EAAa,eAAiB,IAAMA,EAAa,cAE9EC,EAAW,MAAM,QAAUH,GAC3BG,EAAW,SAAS,KAAOV,EAE3BU,EAAW,SAAS,UAAYD,EAAa,kBAAoB,IAAMA,EAAa,iBAEpFC,EAAW,SAAS,WAAaH,GACjCG,EAAW,gBAAgB,KAAOT,EAElCS,EAAW,gBAAgB,UAAYD,EAAa,yBAA2B,IAAMA,EAAa,wBAElGC,EAAW,gBAAgB,QAAUH,GAC9BG,CACT,CACO,SAASC,GAA2BrN,EAAeC,EAAoB,CAC5E,MAAMmN,EAAaJ,KACb,CACJ,OAAAtiB,EACA,MAAA4iB,EACA,SAAAC,CACD,EAAGvN,EACEwN,EAAsBzN,GAAuBC,EAAeC,CAAkB,EACpF,OAAAmN,EAAW,OAAO,KAAO,CACvB,OAAQ1iB,EAAO,UAAU,MAAM,OAASA,EAAO,UAAU,KACzD,WAAY,CAAE,GAAGA,EAAO,WACtB,YAAaA,EAAO,UACpB,sBAAuB,CACrB,KAAM,EACN,MAAO8iB,EAAoB,MAC5B,CACF,EACD,WAAY9iB,EAAO,WACnB,aAAcA,EAAO,aACrB,WAAYA,EAAO,UACvB,EACE0iB,EAAW,MAAM,KAAO,CACtB,OAAQE,EAAM,YAAY,MAAM,OAAS,EACzC,aAAcA,EAAM,YAAY,MAChC,WAAY,CAAE,GAAGA,EAAM,WACrB,QAASA,EAAM,UACf,sBAAuB,CACrB,KAAM,EACN,MAAOE,EAAoB,KAC5B,CACF,EACD,WAAYF,EAAM,WAClB,aAAcA,EAAM,aACpB,WAAYA,EAAM,UACtB,EACEF,EAAW,MAAM,UAAY,OAC7BA,EAAW,SAAS,KAAO,CACzB,OAAQG,EAAS,eAAe,MAAM,OAAS,EAC/C,aAAcA,EAAS,eAAe,MACtC,WAAY,CAAE,GAAGA,EAAS,WACxB,WAAYA,EAAS,UACrB,cAAe,CACb,KAAM,EACN,MAAOC,EAAoB,QAC5B,CACF,EACD,WAAYD,EAAS,WACrB,aAAcA,EAAS,aACvB,WAAYA,EAAS,UACzB,EACEH,EAAW,SAAS,WAAa,GAE7BG,EAAS,YACXH,EAAW,SAAS,KAAK,WAAW,QAAUG,EAAS,UAAU,OAGnEH,EAAW,gBAAgB,KAAO,CAChC,OAAQG,EAAS,wBAAwB,MAAM,OAAS,EACxD,aAAcA,EAAS,wBAAwB,MAC/C,WAAY,CAAE,GAAGA,EAAS,WACxB,QAASA,EAAS,UAClB,sBAAuB,CACrB,KAAM,EACN,MAAOC,EAAoB,QAC5B,CACF,EACD,WAAYD,EAAS,WACrB,aAAcA,EAAS,aACvB,WAAYA,EAAS,UACzB,EACEH,EAAW,gBAAgB,UAAY,OAChCA,CACT,CC9GA,MAAMK,GAAgB,CAAC,SAAU,cAAe,UAAU,EACpD3kB,GAAe,CAAE,GAAG0iB,GAAgBH,GAAY,MAAM,EAC1D,GAAGG,GAAgBH,GAAY,IAAI,EACnC,GAAGG,GAAgBH,GAAY,IAAI,EACnC,GAAGG,GAAgBF,EAAU,EAC7B,GAAGE,GAAgBD,EAAa,EAChC,QAAS,GACT,OAAQ,GACR,SAAU,GACV,UAAW,GACX,QAAS,GACT,UAAW,CACT,KAAM,SACN,MAAO,IACR,EACD,YAAa,CACX,KAAM,SACN,MAAO,CAAE,CACV,EACD,QAAS,CACP,KAAM,WACN,MAAO1N,GAAKA,EAAE,WAAW,IAC1B,EACD,QAAS,CACP,KAAM,WACN,MAAOA,GAAKA,EAAE,WAAW,IAC1B,EACD,UAAW,SACX,UAAW,CACT,cAAe,gBAChB,CACH,EACe,MAAM6P,WAAqBtqB,EAAe,CACvD,iBAAkB,CAChB,KAAK,MAAQ,CACX,WAAY,CAAE,EACd,SAAU,CAAE,CAClB,CACG,CAED,YAAY,CACV,MAAA+P,EACA,YAAAC,CACJ,EAAK,CACD,GAAI,CAACA,EAAY,YACf,OAGF,KAAM,CACJ,KAAAxP,CACN,EAAQ,KAAK,MACH+pB,EAAS/pB,GAAQ,WAAYA,GAAQ,aAAcA,GAAQ,UAAWA,EAC5E,KAAK,SAAS,CACZ,OAAA+pB,CACN,CAAK,EAEGA,EACF,KAAK,mBAAmB,CACtB,MAAAxa,EACA,YAAAC,CACR,CAAO,EAED,KAAK,iBAAiB,CACpB,MAAAD,EACA,YAAAC,CACR,CAAO,CAEJ,CAED,mBAAmB,CACjB,MAAAD,EACA,YAAAC,CACJ,EAAK,CACD,MAAMga,EAAaC,GAA2Bla,EAAM,KAAM,KAAK,kBAAkB,EACjF,KAAK,SAAS,CACZ,WAAAia,CACN,CAAK,CACF,CAED,iBAAiB,CACf,MAAAja,EACA,YAAAC,CACJ,EAAK,CACD,MAAM2Y,EAAWH,GAAmBzY,EAAM,IAAI,EACxC6Y,EAAc,KAAK,eAAe,KAAK,IAAI,EACjD,IAAI4B,EAAc,CAAA,EAClB,MAAMT,EAAe,CAAA,EAErB,GAAI,MAAM,QAAQ/Z,EAAY,WAAW,EAAG,CAC1C,MAAMya,EAAc,KAAK,MAAM,SAE/B,UAAWhoB,KAAOgoB,EAChBD,EAAY/nB,CAAG,EAAIgoB,EAAYhoB,CAAG,EAAE,MAAK,EACzCsnB,EAAatnB,CAAG,EAAI,GAGtB,UAAWqB,KAAakM,EAAY,YAAa,CAC/C,MAAM0a,EAAkBhC,GAAwBC,EAAUC,EAAa9kB,CAAS,EAEhF,UAAWrB,KAAOgoB,EAChBV,EAAatnB,CAAG,EAAE,KAAKoZ,GAAe,CACpC,KAAM2O,EAAY/nB,CAAG,EACrB,SAAUgY,GAAKA,EAAE,SAAS,MAC1B,UAAA3W,EACA,QAAS4mB,EAAgBjoB,CAAG,CAC7B,CAAA,CAAC,CAEL,CACP,MACM+nB,EAAc9B,GAAwBC,EAAUC,CAAW,EAG7D,MAAMoB,EAAaF,GAA6BU,EAAaT,CAAY,EACzE,KAAK,SAAS,CACZ,SAAUS,EACV,aAAAT,EACA,WAAAC,CACN,CAAK,CACF,CAED,eAAehkB,EAAQ,CACrB,MAAM3F,EAAO,MAAM,eAAe2F,CAAM,EAClC,CACJ,MAAAjH,EACA,YAAA4rB,CACD,EAAGtqB,EACJ,OAAAA,EAAK,YAAcgqB,GAAc,KAAKO,GAAMD,EAAY,GAAG,WAAW,GAAG,OAAO,KAAK,GAAI,GAAG,EAAE,OAAOC,EAAI,GAAG,CAAC,CAAC,EAE1G7rB,GAAS,GAAK4rB,EAAY,GAAG,WAAW,GAAG,OAAO,KAAK,GAAI,cAAc,CAAC,GAAK,KAAK,MAAM,SAC5FtqB,EAAK,MAAQ,KAAK,MAAM,KAAK,OAAO,iBAAiB,MAAMtB,CAAK,GAG3DsB,CACR,CAED,qBAAqBA,EAAM,CACzB,MAAMwqB,EAAqB,GAAG,OAAO,KAAK,GAAI,UAAU,EAClDC,EAAiBzqB,EAAK,cAAgB,SAE5C,UAAWH,KAAS,KAAK,eACnBA,EAAM,GAAG,WAAW2qB,CAAkB,IAAMC,GAC9C5qB,EAAM,oBAAoBG,CAAI,CAGnC,CAED,qBAAsB,CACpB,KAAM,CACJ,SAAA4a,EACA,UAAAC,CACN,EAAQ,KAAK,MACH,CACJ,WAAA8O,CACN,EAAQ,KAAK,MACHrO,EAAK,gBACLoP,EAAmB,KAAK,qBAAqBpP,EAAIqO,EAAW,SAAS,IAAI,GAAK,KAAK,iBAAiBrO,EAAIwM,GAAc,IAAI,EAEhI,GAAI4C,EAAkB,CACpB,MAAMC,EAAiB3C,GAAa,KAAMF,GAAc,KAAK,EACvD8C,EAAehQ,GAAYC,EAEjC,OAAK+P,GACH,OAAOD,EAAe,aAGxBA,EAAe,eAAe,WAAaC,EACpC,IAAIF,EAAiBC,EAAgB,KAAK,iBAAiB,CAChE,GAAArP,EACA,eAAgBqP,EAAe,cACvC,CAAO,EAAGhB,EAAW,QAAQ,CACxB,CAED,OAAO,IACR,CAED,mBAAoB,CAClB,KAAM,CACJ,SAAA/O,EACA,QAAAzU,CACN,EAAQ,KAAK,MACH,CACJ,WAAAwjB,CACN,EAAQ,KAAK,MACHkB,EAAuB,kBACvBC,EAAqB,cACrBC,EAAqB,CAACnQ,GAAYzU,GAAW,KAAK,qBAAqB0kB,EAAsBlB,EAAW,gBAAgB,IAAI,GAAK,KAAK,iBAAiBkB,EAAsBhD,GAAW,IAAI,EAC5LmD,EAAmB,KAAK,qBAAqBF,EAAoBnB,EAAW,MAAM,IAAI,GAAK,KAAK,iBAAiBmB,EAAoBjD,GAAW,IAAI,EAE1J,GAAIkD,GAAsBC,EAAkB,CAC1C,MAAML,EAAiB3C,GAAa,KAAMH,GAAW,KAAK,EAC1D,MAAO,CAACkD,GAAsB,IAAIA,EAAmBJ,EAAgB,KAAK,iBAAiB,CACzF,GAAIE,EACJ,eAAgBF,EAAe,cACvC,CAAO,EAAGhB,EAAW,eAAe,EAAGqB,GAAoB,IAAIA,EAAiBL,EAAgB,KAAK,iBAAiB,CAC9G,GAAIG,EACJ,eAAgBH,EAAe,cACvC,CAAO,EAAGhB,EAAW,KAAK,CAAC,CACtB,CAED,OAAO,IACR,CAED,oBAAqB,CACnB,KAAM,CACJ,UAAAsB,CACN,EAAQ,KAAK,MACH,CACJ,WAAAtB,EACA,OAAAO,CACN,EAAQ,KAAK,MACT,GAAI,CACF,uBAAAhpB,CACN,EAAQ,KAAK,MAEL,CAACgpB,GAAU,OAAO,SAAShpB,CAAsB,IACnDA,EAAyByoB,EAAW,OAAO,KAAK,UAAU7Z,GAAKA,EAAE,SAAS,QAAU5O,CAAsB,GAG5G,MAAM2J,EAAQ,IAAI,IAAIogB,EAAU,MAAM,GAAG,CAAC,EACpCC,EAAc,CAAA,EAEpB,UAAWxf,KAAQb,EAAO,CACxB,MAAMyQ,EAAK,UAAU,OAAO5P,CAAI,EAC1Byf,EAAoBvD,GAAYlc,CAAI,EACpC0f,EAAcD,GAAqB,KAAK,qBAAqB7P,EAAIqO,EAAW,OAAO,IAAI,GAAK,KAAK,iBAAiBrO,EAAI6P,EAAkB,IAAI,EAElJ,GAAIC,EAAa,CACf,MAAMT,EAAiB3C,GAAa,KAAMmD,EAAkB,KAAK,EACjE,IAAIE,EAAmB1B,EAAW,OAElC,GAAIje,IAAS,QAAUwe,EAAQ,CAC7B,KAAM,CACJ,sBAAAoB,EACA,GAAGC,CACf,EAAcF,EAAiB,KAAK,WAC1BA,EAAmB,CAAE,GAAGA,EACtB,KAAM,CAAE,GAAGA,EAAiB,KAC1B,WAAYE,CACb,CACb,CACS,CAEDL,EAAY,KAAK,IAAIE,EAAYT,EAAgB,KAAK,iBAAiB,CACrE,GAAArP,EACA,eAAgBqP,EAAe,eAC/B,uBAAAzpB,CACV,CAAS,EAAGmqB,CAAgB,CAAC,CACtB,CACF,CAED,OAAOH,CACR,CAED,cAAe,CACb,KAAM,CACJ,SAAAtQ,CACN,EAAQ,KAAK,MAEH4Q,EAAmB,KAAK,sBAExBC,EAAa,KAAK,oBAElBP,EAAc,KAAK,qBAEzB,MAAO,CAAC,CAACtQ,GAAY4Q,EAAkBC,EAAYP,EAAatQ,GAAY4Q,CAAgB,CAC7F,CAED,oBAAoB/qB,EAAU,CAC5B,KAAM,CACJ,OAAAypB,CACN,EAAQ,KAAK,MAET,MAAI,CAACA,GAAU,OAAOzpB,GAAa,WAC1B,MAAM,oBAAoBA,CAAQ,EAGpC,CAACR,EAAQD,IAAS,CACvB,KAAM,CACJ,KAAAG,EACA,MAAAzB,CACD,EAAGsB,EACEoc,EAAUL,GAA0B5b,EAAMzB,CAAK,EACrD,OAAO+B,EAAS2b,EAASpc,CAAI,CACnC,CACG,CAEH,CAEA+C,EAAgBknB,GAAc,YAAa,cAAc,EAEzDlnB,EAAgBknB,GAAc,eAAgB5kB,EAAY,sCCzSzD,SAASqmB,EAAQC,EAAS,CACsCA,EAAQC,CAAO,CAChF,GAAGC,GAAM,SAASD,EAAS,CAEzB,SAASE,EAAqBC,EAAIC,EAAQ,CACxC,OAAOA,EAAS,CACd,QAAS,CAAE,CACjB,EAAOD,EAAGC,EAAQA,EAAO,OAAO,EAAGA,EAAO,OACvC,CACD,IAAIC,EAAWH,EAAqB,SAASE,EAAQJ,EAAS,EAC3D,SAASD,EAAS,CAEfK,EAAO,QAAUL,GAEpB,GAAE,SAASO,EAAW,CACrB,IAAIC,EAAU,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC3F,SAASC,EAAS5sB,EAAGkgB,EAAG,CACtB,IAAI7W,EAAIrJ,EAAE,CAAC,EAAGsJ,EAAItJ,EAAE,CAAC,EAAG6S,EAAI7S,EAAE,CAAC,EAAGsQ,EAAItQ,EAAE,CAAC,EACzCqJ,IAAMC,EAAIuJ,EAAI,CAACvJ,EAAIgH,GAAK4P,EAAE,CAAC,EAAI,UAAY,EAC3C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIC,EAAI,CAACD,EAAIwJ,GAAKqN,EAAE,CAAC,EAAI,UAAY,EAC3C5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMvC,EAAIjH,EAAI,CAACiH,EAAIhH,GAAK4W,EAAE,CAAC,EAAI,UAAY,EAC3CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIvC,EAAI,CAACuC,EAAIxJ,GAAK6W,EAAE,CAAC,EAAI,WAAa,EAC5C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMC,EAAIuJ,EAAI,CAACvJ,EAAIgH,GAAK4P,EAAE,CAAC,EAAI,UAAY,EAC3C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIC,EAAI,CAACD,EAAIwJ,GAAKqN,EAAE,CAAC,EAAI,WAAa,EAC5C5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMvC,EAAIjH,EAAI,CAACiH,EAAIhH,GAAK4W,EAAE,CAAC,EAAI,WAAa,EAC5CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIvC,EAAI,CAACuC,EAAIxJ,GAAK6W,EAAE,CAAC,EAAI,SAAW,EAC1C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMC,EAAIuJ,EAAI,CAACvJ,EAAIgH,GAAK4P,EAAE,CAAC,EAAI,WAAa,EAC5C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIC,EAAI,CAACD,EAAIwJ,GAAKqN,EAAE,CAAC,EAAI,WAAa,EAC5C5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMvC,EAAIjH,EAAI,CAACiH,EAAIhH,GAAK4W,EAAE,EAAE,EAAI,MAAQ,EACxCrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIvC,EAAI,CAACuC,EAAIxJ,GAAK6W,EAAE,EAAE,EAAI,WAAa,EAC7C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMC,EAAIuJ,EAAI,CAACvJ,EAAIgH,GAAK4P,EAAE,EAAE,EAAI,WAAa,EAC7C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIC,EAAI,CAACD,EAAIwJ,GAAKqN,EAAE,EAAE,EAAI,SAAW,EAC3C5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMvC,EAAIjH,EAAI,CAACiH,EAAIhH,GAAK4W,EAAE,EAAE,EAAI,WAAa,EAC7CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIvC,EAAI,CAACuC,EAAIxJ,GAAK6W,EAAE,EAAE,EAAI,WAAa,EAC7C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMC,EAAIgH,EAAIuC,EAAI,CAACvC,GAAK4P,EAAE,CAAC,EAAI,UAAY,EAC3C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIwJ,EAAIvJ,EAAI,CAACuJ,GAAKqN,EAAE,CAAC,EAAI,WAAa,EAC5C5P,GAAKA,GAAK,EAAIA,IAAM,IAAMjH,EAAI,EAC9BwJ,IAAMvC,EAAIhH,EAAID,EAAI,CAACC,GAAK4W,EAAE,EAAE,EAAI,UAAY,EAC5CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIxJ,EAAIiH,EAAI,CAACjH,GAAK6W,EAAE,CAAC,EAAI,UAAY,EAC3C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMC,EAAIgH,EAAIuC,EAAI,CAACvC,GAAK4P,EAAE,CAAC,EAAI,UAAY,EAC3C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIwJ,EAAIvJ,EAAI,CAACuJ,GAAKqN,EAAE,EAAE,EAAI,SAAW,EAC3C5P,GAAKA,GAAK,EAAIA,IAAM,IAAMjH,EAAI,EAC9BwJ,IAAMvC,EAAIhH,EAAID,EAAI,CAACC,GAAK4W,EAAE,EAAE,EAAI,UAAY,EAC5CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIxJ,EAAIiH,EAAI,CAACjH,GAAK6W,EAAE,CAAC,EAAI,UAAY,EAC3C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMC,EAAIgH,EAAIuC,EAAI,CAACvC,GAAK4P,EAAE,CAAC,EAAI,UAAY,EAC3C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIwJ,EAAIvJ,EAAI,CAACuJ,GAAKqN,EAAE,EAAE,EAAI,WAAa,EAC7C5P,GAAKA,GAAK,EAAIA,IAAM,IAAMjH,EAAI,EAC9BwJ,IAAMvC,EAAIhH,EAAID,EAAI,CAACC,GAAK4W,EAAE,CAAC,EAAI,UAAY,EAC3CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIxJ,EAAIiH,EAAI,CAACjH,GAAK6W,EAAE,CAAC,EAAI,WAAa,EAC5C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMC,EAAIgH,EAAIuC,EAAI,CAACvC,GAAK4P,EAAE,EAAE,EAAI,WAAa,EAC7C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIwJ,EAAIvJ,EAAI,CAACuJ,GAAKqN,EAAE,CAAC,EAAI,SAAW,EAC1C5P,GAAKA,GAAK,EAAIA,IAAM,IAAMjH,EAAI,EAC9BwJ,IAAMvC,EAAIhH,EAAID,EAAI,CAACC,GAAK4W,EAAE,CAAC,EAAI,WAAa,EAC5CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIxJ,EAAIiH,EAAI,CAACjH,GAAK6W,EAAE,EAAE,EAAI,WAAa,EAC7C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMC,EAAIuJ,EAAIvC,GAAK4P,EAAE,CAAC,EAAI,OAAS,EACnC7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIC,EAAIuJ,GAAKqN,EAAE,CAAC,EAAI,WAAa,EACvC5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMvC,EAAIjH,EAAIC,GAAK4W,EAAE,EAAE,EAAI,WAAa,EACxCrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIvC,EAAIjH,GAAK6W,EAAE,EAAE,EAAI,SAAW,EACtC5W,GAAKA,GAAK,GAAKA,IAAM,GAAKuJ,EAAI,EAC9BxJ,IAAMC,EAAIuJ,EAAIvC,GAAK4P,EAAE,CAAC,EAAI,WAAa,EACvC7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIC,EAAIuJ,GAAKqN,EAAE,CAAC,EAAI,WAAa,EACvC5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMvC,EAAIjH,EAAIC,GAAK4W,EAAE,CAAC,EAAI,UAAY,EACtCrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIvC,EAAIjH,GAAK6W,EAAE,EAAE,EAAI,WAAa,EACxC5W,GAAKA,GAAK,GAAKA,IAAM,GAAKuJ,EAAI,EAC9BxJ,IAAMC,EAAIuJ,EAAIvC,GAAK4P,EAAE,EAAE,EAAI,UAAY,EACvC7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIC,EAAIuJ,GAAKqN,EAAE,CAAC,EAAI,UAAY,EACtC5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMvC,EAAIjH,EAAIC,GAAK4W,EAAE,CAAC,EAAI,UAAY,EACtCrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIvC,EAAIjH,GAAK6W,EAAE,CAAC,EAAI,SAAW,EACrC5W,GAAKA,GAAK,GAAKA,IAAM,GAAKuJ,EAAI,EAC9BxJ,IAAMC,EAAIuJ,EAAIvC,GAAK4P,EAAE,CAAC,EAAI,UAAY,EACtC7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMjH,EAAIC,EAAIuJ,GAAKqN,EAAE,EAAE,EAAI,UAAY,EACvC5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMvC,EAAIjH,EAAIC,GAAK4W,EAAE,EAAE,EAAI,UAAY,EACvCrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMuJ,EAAIvC,EAAIjH,GAAK6W,EAAE,CAAC,EAAI,UAAY,EACtC5W,GAAKA,GAAK,GAAKA,IAAM,GAAKuJ,EAAI,EAC9BxJ,IAAMwJ,GAAKvJ,EAAI,CAACgH,IAAM4P,EAAE,CAAC,EAAI,UAAY,EACzC7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMhH,GAAKD,EAAI,CAACwJ,IAAMqN,EAAE,CAAC,EAAI,WAAa,EAC1C5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMxJ,GAAKiH,EAAI,CAAChH,IAAM4W,EAAE,EAAE,EAAI,WAAa,EAC3CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMgH,GAAKuC,EAAI,CAACxJ,IAAM6W,EAAE,CAAC,EAAI,SAAW,EACxC5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMwJ,GAAKvJ,EAAI,CAACgH,IAAM4P,EAAE,EAAE,EAAI,WAAa,EAC3C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMhH,GAAKD,EAAI,CAACwJ,IAAMqN,EAAE,CAAC,EAAI,WAAa,EAC1C5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMxJ,GAAKiH,EAAI,CAAChH,IAAM4W,EAAE,EAAE,EAAI,QAAU,EACxCrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMgH,GAAKuC,EAAI,CAACxJ,IAAM6W,EAAE,CAAC,EAAI,WAAa,EAC1C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMwJ,GAAKvJ,EAAI,CAACgH,IAAM4P,EAAE,CAAC,EAAI,WAAa,EAC1C7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMhH,GAAKD,EAAI,CAACwJ,IAAMqN,EAAE,EAAE,EAAI,SAAW,EACzC5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMxJ,GAAKiH,EAAI,CAAChH,IAAM4W,EAAE,CAAC,EAAI,WAAa,EAC1CrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMgH,GAAKuC,EAAI,CAACxJ,IAAM6W,EAAE,EAAE,EAAI,WAAa,EAC3C5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/BxJ,IAAMwJ,GAAKvJ,EAAI,CAACgH,IAAM4P,EAAE,CAAC,EAAI,UAAY,EACzC7W,GAAKA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC9BgH,IAAMhH,GAAKD,EAAI,CAACwJ,IAAMqN,EAAE,EAAE,EAAI,WAAa,EAC3C5P,GAAKA,GAAK,GAAKA,IAAM,IAAMjH,EAAI,EAC/BwJ,IAAMxJ,GAAKiH,EAAI,CAAChH,IAAM4W,EAAE,CAAC,EAAI,UAAY,EACzCrN,GAAKA,GAAK,GAAKA,IAAM,IAAMvC,EAAI,EAC/BhH,IAAMgH,GAAKuC,EAAI,CAACxJ,IAAM6W,EAAE,CAAC,EAAI,UAAY,EACzC5W,GAAKA,GAAK,GAAKA,IAAM,IAAMuJ,EAAI,EAC/B7S,EAAE,CAAC,EAAIqJ,EAAIrJ,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAIsJ,EAAItJ,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAI6S,EAAI7S,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAIsQ,EAAItQ,EAAE,CAAC,EAAI,CACnB,CACD,SAAS6sB,EAAO1M,EAAG,CACjB,IAAI2M,EAAU,CAAE,EAAE3kB,EAClB,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB2kB,EAAQ3kB,GAAK,CAAC,EAAIgY,EAAE,WAAWhY,CAAC,GAAKgY,EAAE,WAAWhY,EAAI,CAAC,GAAK,IAAMgY,EAAE,WAAWhY,EAAI,CAAC,GAAK,KAAOgY,EAAE,WAAWhY,EAAI,CAAC,GAAK,IAEzH,OAAO2kB,CACR,CACD,SAASC,EAAa1jB,EAAG,CACvB,IAAIyjB,EAAU,CAAE,EAAE3kB,EAClB,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB2kB,EAAQ3kB,GAAK,CAAC,EAAIkB,EAAElB,CAAC,GAAKkB,EAAElB,EAAI,CAAC,GAAK,IAAMkB,EAAElB,EAAI,CAAC,GAAK,KAAOkB,EAAElB,EAAI,CAAC,GAAK,IAE7E,OAAO2kB,CACR,CACD,SAASE,EAAK7M,EAAG,CACf,IAAIvM,EAAIuM,EAAE,OAAQ8M,EAAQ,CAAE,WAAY,WAAY,YAAa,SAAS,EAAI9kB,EAAGyG,EAAQ0G,EAAM5M,GAAKwkB,EAAIC,GACxG,IAAKhlB,EAAI,GAAIA,GAAKyL,EAAGzL,GAAK,GACxBykB,EAASK,EAAOJ,EAAO1M,EAAE,UAAUhY,EAAI,GAAIA,CAAC,CAAC,CAAC,EAKhD,IAHAgY,EAAIA,EAAE,UAAUhY,EAAI,EAAE,EACtByG,EAASuR,EAAE,OACX7K,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACjDnN,EAAI,EAAGA,EAAIyG,EAAQzG,GAAK,EAC3BmN,EAAKnN,GAAK,CAAC,GAAKgY,EAAE,WAAWhY,CAAC,IAAMA,EAAI,GAAK,GAG/C,GADAmN,EAAKnN,GAAK,CAAC,GAAK,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAykB,EAASK,EAAO3X,CAAI,EACfnN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBmN,EAAKnN,CAAC,EAAI,EAGd,OAAAO,GAAMkL,EAAI,EACVlL,GAAMA,GAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CwkB,EAAK,SAASxkB,GAAI,CAAC,EAAG,EAAE,EACxBykB,GAAK,SAASzkB,GAAI,CAAC,EAAG,EAAE,GAAK,EAC7B4M,EAAK,EAAE,EAAI4X,EACX5X,EAAK,EAAE,EAAI6X,GACXP,EAASK,EAAO3X,CAAI,EACb2X,CACR,CACD,SAASG,GAAW/jB,EAAG,CACrB,IAAIuK,EAAIvK,EAAE,OAAQ4jB,EAAQ,CAAE,WAAY,WAAY,YAAa,SAAS,EAAI9kB,EAAGyG,EAAQ0G,EAAM5M,GAAKwkB,EAAIC,GACxG,IAAKhlB,EAAI,GAAIA,GAAKyL,EAAGzL,GAAK,GACxBykB,EAASK,EAAOF,EAAa1jB,EAAE,SAASlB,EAAI,GAAIA,CAAC,CAAC,CAAC,EAKrD,IAHAkB,EAAIlB,EAAI,GAAKyL,EAAIvK,EAAE,SAASlB,EAAI,EAAE,EAAI,IAAI,WAAW,CAAC,EACtDyG,EAASvF,EAAE,OACXiM,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACjDnN,EAAI,EAAGA,EAAIyG,EAAQzG,GAAK,EAC3BmN,EAAKnN,GAAK,CAAC,GAAKkB,EAAElB,CAAC,IAAMA,EAAI,GAAK,GAGpC,GADAmN,EAAKnN,GAAK,CAAC,GAAK,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAykB,EAASK,EAAO3X,CAAI,EACfnN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBmN,EAAKnN,CAAC,EAAI,EAGd,OAAAO,GAAMkL,EAAI,EACVlL,GAAMA,GAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CwkB,EAAK,SAASxkB,GAAI,CAAC,EAAG,EAAE,EACxBykB,GAAK,SAASzkB,GAAI,CAAC,EAAG,EAAE,GAAK,EAC7B4M,EAAK,EAAE,EAAI4X,EACX5X,EAAK,EAAE,EAAI6X,GACXP,EAASK,EAAO3X,CAAI,EACb2X,CACR,CACD,SAASI,EAAKzZ,EAAG,CACf,IAAIuM,EAAI,GAAI/X,EACZ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtB+X,GAAKwM,EAAQ/Y,GAAKxL,EAAI,EAAI,EAAI,EAAE,EAAIukB,EAAQ/Y,GAAKxL,EAAI,EAAI,EAAE,EAE7D,OAAO+X,CACR,CACD,SAASmN,GAAIttB,EAAG,CACd,IAAImI,EACJ,IAAKA,EAAI,EAAGA,EAAInI,EAAE,OAAQmI,GAAK,EAC7BnI,EAAEmI,CAAC,EAAIklB,EAAKrtB,EAAEmI,CAAC,CAAC,EAElB,OAAOnI,EAAE,KAAK,EAAE,CACjB,CACGstB,GAAIN,EAAK,OAAO,CAAC,EACjB,OAAO,YAAgB,KAAe,CAAC,YAAY,UAAU,OAC9D,UAAW,CACV,SAASO,EAAMC,EAAK5e,EAAQ,CAE1B,OADA4e,EAAMA,EAAM,GAAK,EACbA,EAAM,EACD,KAAK,IAAIA,EAAM5e,EAAQ,CAAC,EAE1B,KAAK,IAAI4e,EAAK5e,CAAM,CAC5B,CACD,YAAY,UAAU,MAAQ,SAAS6e,EAAMC,EAAI,CAC/C,IAAI9e,EAAS,KAAK,WAAY+e,EAAQJ,EAAME,EAAM7e,CAAM,EAAG5G,EAAM4G,EAAQ+H,GAAK/N,EAAQglB,GAAaC,GAInG,OAHIH,IAAOhB,IACT1kB,EAAMulB,EAAMG,EAAI9e,CAAM,GAEpB+e,EAAQ3lB,EACH,IAAI,YAAY,CAAC,GAE1B2O,GAAM3O,EAAM2lB,EACZ/kB,EAAS,IAAI,YAAY+N,EAAG,EAC5BiX,GAAc,IAAI,WAAWhlB,CAAM,EACnCilB,GAAc,IAAI,WAAW,KAAMF,EAAOhX,EAAG,EAC7CiX,GAAY,IAAIC,EAAW,EACpBjlB,EACnB,CACA,IAEM,SAASklB,EAAOC,EAAK,CACnB,MAAI,kBAAkB,KAAKA,CAAG,IAC5BA,EAAM,SAAS,mBAAmBA,CAAG,CAAC,GAEjCA,CACR,CACD,SAASC,GAAoBD,EAAKE,EAAkB,CAClD,IAAIrf,EAASmf,EAAI,OAAQG,EAAO,IAAI,YAAYtf,CAAM,EAAGuf,EAAM,IAAI,WAAWD,CAAI,EAAG/lB,EACrF,IAAKA,EAAI,EAAGA,EAAIyG,EAAQzG,GAAK,EAC3BgmB,EAAIhmB,CAAC,EAAI4lB,EAAI,WAAW5lB,CAAC,EAE3B,OAAO8lB,EAAmBE,EAAMD,CACjC,CACD,SAASE,GAAoBF,EAAM,CACjC,OAAO,OAAO,aAAa,MAAM,KAAM,IAAI,WAAWA,CAAI,CAAC,CAC5D,CACD,SAASG,GAAwBC,EAAOC,EAAQN,EAAkB,CAChE,IAAI7jB,EAAS,IAAI,WAAWkkB,EAAM,WAAaC,EAAO,UAAU,EAChE,OAAAnkB,EAAO,IAAI,IAAI,WAAWkkB,CAAK,CAAC,EAChClkB,EAAO,IAAI,IAAI,WAAWmkB,CAAM,EAAGD,EAAM,UAAU,EAC5CL,EAAmB7jB,EAASA,EAAO,MAC3C,CACD,SAASokB,GAAkBlB,EAAK,CAC9B,IAAImB,EAAQ,CAAA,EAAI7f,EAAS0e,EAAI,OAAQttB,EACrC,IAAKA,EAAI,EAAGA,EAAI4O,EAAS,EAAG5O,GAAK,EAC/ByuB,EAAM,KAAK,SAASnB,EAAI,OAAOttB,EAAG,CAAC,EAAG,EAAE,CAAC,EAE3C,OAAO,OAAO,aAAa,MAAM,OAAQyuB,CAAK,CAC/C,CACD,SAASC,GAAW,CAClB,KAAK,MAAK,CACX,CACD,OAAAA,EAAS,UAAU,OAAS,SAASX,EAAK,CACxC,YAAK,aAAaD,EAAOC,CAAG,CAAC,EACtB,IACf,EACMW,EAAS,UAAU,aAAe,SAASC,EAAU,CACnD,KAAK,OAASA,EACd,KAAK,SAAWA,EAAS,OACzB,IAAI/f,EAAS,KAAK,MAAM,OAAQzG,EAChC,IAAKA,EAAI,GAAIA,GAAKyG,EAAQzG,GAAK,GAC7BykB,EAAS,KAAK,MAAOC,EAAO,KAAK,MAAM,UAAU1kB,EAAI,GAAIA,CAAC,CAAC,CAAC,EAE9D,YAAK,MAAQ,KAAK,MAAM,UAAUA,EAAI,EAAE,EACjC,IACf,EACMumB,EAAS,UAAU,IAAM,SAASE,EAAK,CACrC,IAAIV,EAAO,KAAK,MAAOtf,EAASsf,EAAK,OAAQ/lB,EAAGmN,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAIuZ,EAC3G,IAAK1mB,EAAI,EAAGA,EAAIyG,EAAQzG,GAAK,EAC3BmN,EAAKnN,GAAK,CAAC,GAAK+lB,EAAK,WAAW/lB,CAAC,IAAMA,EAAI,GAAK,GAElD,YAAK,QAAQmN,EAAM1G,CAAM,EACzBigB,EAAMvB,GAAI,KAAK,KAAK,EAChBsB,IACFC,EAAML,GAAkBK,CAAG,GAE7B,KAAK,MAAK,EACHA,CACf,EACMH,EAAS,UAAU,MAAQ,UAAW,CACpC,YAAK,MAAQ,GACb,KAAK,QAAU,EACf,KAAK,MAAQ,CAAE,WAAY,WAAY,YAAa,WAC7C,IACf,EACMA,EAAS,UAAU,SAAW,UAAW,CACvC,MAAO,CACL,KAAM,KAAK,MACX,OAAQ,KAAK,QACb,KAAM,KAAK,KACrB,CACA,EACMA,EAAS,UAAU,SAAW,SAASzB,EAAO,CAC5C,YAAK,MAAQA,EAAM,KACnB,KAAK,QAAUA,EAAM,OACrB,KAAK,MAAQA,EAAM,KACZ,IACf,EACMyB,EAAS,UAAU,QAAU,UAAW,CACtC,OAAO,KAAK,MACZ,OAAO,KAAK,MACZ,OAAO,KAAK,OACpB,EACMA,EAAS,UAAU,QAAU,SAASpZ,EAAM1G,EAAQ,CAClD,IAAIzG,EAAIyG,EAAQlG,EAAKwkB,EAAIC,EAEzB,GADA7X,EAAKnN,GAAK,CAAC,GAAK,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAykB,EAAS,KAAK,MAAOtX,CAAI,EACpBnN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBmN,EAAKnN,CAAC,EAAI,EAGdO,EAAM,KAAK,QAAU,EACrBA,EAAMA,EAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CwkB,EAAK,SAASxkB,EAAI,CAAC,EAAG,EAAE,EACxBykB,EAAK,SAASzkB,EAAI,CAAC,EAAG,EAAE,GAAK,EAC7B4M,EAAK,EAAE,EAAI4X,EACX5X,EAAK,EAAE,EAAI6X,EACXP,EAAS,KAAK,MAAOtX,CAAI,CACjC,EACMoZ,EAAS,KAAO,SAASX,EAAKa,EAAK,CACjC,OAAOF,EAAS,WAAWZ,EAAOC,CAAG,EAAGa,CAAG,CACnD,EACMF,EAAS,WAAa,SAASI,EAASF,EAAK,CAC3C,IAAIG,EAAO/B,EAAK8B,CAAO,EAAGD,EAAMvB,GAAIyB,CAAI,EACxC,OAAOH,EAAMJ,GAAkBK,CAAG,EAAIA,CAC9C,EACMH,EAAS,YAAc,UAAW,CAChC,KAAK,MAAK,CAClB,EACMA,EAAS,YAAY,UAAU,OAAS,SAASP,EAAK,CACpD,IAAID,EAAOG,GAAwB,KAAK,MAAM,OAAQF,EAAK,EAAI,EAAGvf,EAASsf,EAAK,OAAQ/lB,EAExF,IADA,KAAK,SAAWgmB,EAAI,WACfhmB,EAAI,GAAIA,GAAKyG,EAAQzG,GAAK,GAC7BykB,EAAS,KAAK,MAAOG,EAAamB,EAAK,SAAS/lB,EAAI,GAAIA,CAAC,CAAC,CAAC,EAE7D,YAAK,MAAQA,EAAI,GAAKyG,EAAS,IAAI,WAAWsf,EAAK,OAAO,MAAM/lB,EAAI,EAAE,CAAC,EAAI,IAAI,WAAW,CAAC,EACpF,IACf,EACMumB,EAAS,YAAY,UAAU,IAAM,SAASE,EAAK,CACjD,IAAIV,EAAO,KAAK,MAAOtf,EAASsf,EAAK,OAAQ5Y,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAKnN,EAAG0mB,EAC3G,IAAK1mB,EAAI,EAAGA,EAAIyG,EAAQzG,GAAK,EAC3BmN,EAAKnN,GAAK,CAAC,GAAK+lB,EAAK/lB,CAAC,IAAMA,EAAI,GAAK,GAEvC,YAAK,QAAQmN,EAAM1G,CAAM,EACzBigB,EAAMvB,GAAI,KAAK,KAAK,EAChBsB,IACFC,EAAML,GAAkBK,CAAG,GAE7B,KAAK,MAAK,EACHA,CACf,EACMH,EAAS,YAAY,UAAU,MAAQ,UAAW,CAChD,YAAK,MAAQ,IAAI,WAAW,CAAC,EAC7B,KAAK,QAAU,EACf,KAAK,MAAQ,CAAE,WAAY,WAAY,YAAa,WAC7C,IACf,EACMA,EAAS,YAAY,UAAU,SAAW,UAAW,CACnD,IAAIzB,EAAQyB,EAAS,UAAU,SAAS,KAAK,IAAI,EACjD,OAAAzB,EAAM,KAAOmB,GAAoBnB,EAAM,IAAI,EACpCA,CACf,EACMyB,EAAS,YAAY,UAAU,SAAW,SAASzB,EAAO,CACxD,OAAAA,EAAM,KAAOe,GAAoBf,EAAM,KAAM,EAAI,EAC1CyB,EAAS,UAAU,SAAS,KAAK,KAAMzB,CAAK,CAC3D,EACMyB,EAAS,YAAY,UAAU,QAAUA,EAAS,UAAU,QAC5DA,EAAS,YAAY,UAAU,QAAUA,EAAS,UAAU,QAC5DA,EAAS,YAAY,KAAO,SAASP,EAAKS,EAAK,CAC7C,IAAIG,EAAO3B,GAAW,IAAI,WAAWe,CAAG,CAAC,EAAGU,EAAMvB,GAAIyB,CAAI,EAC1D,OAAOH,EAAMJ,GAAkBK,CAAG,EAAIA,CAC9C,EACaH,CACb,CAAK,CACL,CAAG,EACGM,EAAiB,SAASC,EAAUC,EAAa,CACnD,GAAI,EAAED,aAAoBC,GACxB,MAAM,IAAI,UAAU,mCAAmC,CAE7D,EACMC,EAAc,UAAW,CAC3B,SAASC,EAAiBxmB,EAAQsH,EAAO,CACvC,QAAS/H,EAAI,EAAGA,EAAI+H,EAAM,OAAQ/H,IAAK,CACrC,IAAIknB,EAAanf,EAAM/H,CAAC,EACxBknB,EAAW,WAAaA,EAAW,YAAc,GACjDA,EAAW,aAAe,GACtB,UAAWA,IAAYA,EAAW,SAAW,IACjD,OAAO,eAAezmB,EAAQymB,EAAW,IAAKA,CAAU,CACzD,CACF,CACD,OAAO,SAASH,EAAaI,EAAYC,EAAa,CACpD,OAAID,GAAYF,EAAiBF,EAAY,UAAWI,CAAU,EAC9DC,GAAaH,EAAiBF,EAAaK,CAAW,EACnDL,CACb,CACA,IACMM,EAAY,KAAK,UAAU,OAAS,KAAK,UAAU,UAAY,KAAK,UAAU,YAC9EC,EAAe,UAAW,CAC5BN,EAAYM,EAAc,KAAM,CAAE,CAChC,IAAK,SACL,MAAO,SAAgBC,EAAMC,EAAU,CACrC,IAAIV,EAAW,IAAIQ,EAAaC,CAAI,EACpCT,EAAS,OAAOU,CAAQ,CACzB,CACF,CAAA,CAAE,EACH,SAASF,EAAaC,EAAM,CAC1BV,EAAe,KAAMS,CAAY,EACjC,KAAK,KAAOC,EACZ,KAAK,UAAY,QACjB,KAAK,WAAa,KAAK,KAAK,KAAK,KAAK,KAAO,KAAK,SAAS,EAC3D,KAAK,WAAa,CACnB,CACD,OAAAP,EAAYM,EAAc,CAAE,CAC1B,IAAK,SACL,MAAO,SAAgBE,EAAU,CAC/B,IAAIC,EAAQ,KACZ,KAAK,SAAWD,EAChB,KAAK,UAAY,IAAIlD,EAAS,YAC9B,KAAK,WAAa,IAAI,WACtB,KAAK,WAAW,iBAAiB,OAAQ,SAASoD,EAAO,CACvD,OAAOD,EAAM,kBAAkBC,CAAK,CAC9C,CAAS,EACD,KAAK,WAAW,iBAAiB,QAAS,SAASA,EAAO,CACxD,OAAOD,EAAM,mBAAmBC,CAAK,CAC/C,CAAS,EACD,KAAK,cAAa,CACnB,CACP,EAAO,CACD,IAAK,oBACL,MAAO,SAA2BA,EAAO,CAEvC,GADA,KAAK,UAAU,OAAOA,EAAM,OAAO,MAAM,EACrC,CAAC,KAAK,gBAAiB,CACzB,IAAIC,EAAe,KAAK,UAAU,IAAI,EAAI,EACtCC,EAAe,KAAKD,CAAY,EACpC,KAAK,SAAS,KAAMC,CAAY,CACjC,CACF,CACP,EAAO,CACD,IAAK,qBACL,MAAO,SAA4BF,EAAO,CACxC,KAAK,SAAS,iBAAmB,KAAK,KAAK,IAAI,CAChD,CACP,EAAO,CACD,IAAK,gBACL,MAAO,UAAyB,CAC9B,GAAI,KAAK,WAAa,KAAK,YAAc,KAAK,YAAc,GAAK,KAAK,YAAc,EAAG,CACrF,IAAI9nB,EAAQ,KAAK,WAAa,KAAK,UAC/BC,EAAM,KAAK,IAAID,EAAQ,KAAK,UAAW,KAAK,KAAK,IAAI,EACrD0mB,EAAQe,EAAU,KAAK,KAAK,KAAMznB,EAAOC,CAAG,EAChD,YAAK,WAAW,kBAAkBymB,CAAK,EACvC,KAAK,aACE,EACjB,KACU,OAAO,EAEV,CACF,CAAA,CAAE,EACIgB,CACX,IACE,SAASO,EAAatrB,EAAM,CAC1B,IAAIurB,EAAUC,EAAY,SAAS,KAAM,cAAgBxrB,EAAO,IAAI,EACpE,GAAIurB,EACF,OAAOA,EAAQ,aAAa,SAAS,CAExC,CACD,SAASE,EAAaC,EAAMC,EAAU,CAChC,OAAOD,GAAQ,WACjBC,EAAWD,EACXA,EAAO,UAET,IAAIE,EAAWF,EAAK,iBAAiBC,CAAQ,EAC7C,OAAOE,EAAUD,CAAQ,CAC1B,CACD,SAASJ,EAAYE,EAAMC,EAAU,CACnC,OAAI,OAAOD,GAAQ,WACjBC,EAAWD,EACXA,EAAO,UAEFA,EAAK,cAAcC,CAAQ,CACnC,CACD,SAASG,EAAcP,EAAS/jB,EAAM,CACpC,IAAIukB,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAChFC,EAAWT,EAAQ,SACnBU,EAAUF,EAAU,QAASG,EAAaH,EAAU,WAAYI,EAASJ,EAAU,OACnFZ,EAAQ,SAAS,YAAY,OAAO,EACxCA,EAAM,UAAU3jB,EAAMykB,GAAW,GAAMC,GAAc,EAAI,EACzDf,EAAM,OAASgB,GAAU,GACzB,GAAI,CACFZ,EAAQ,SAAW,GACnBA,EAAQ,cAAcJ,CAAK,CACjC,QAAc,CACRI,EAAQ,SAAWS,CACpB,CACD,OAAOb,CACR,CACD,SAASU,EAAUnsB,EAAO,CACxB,OAAI,MAAM,QAAQA,CAAK,EACdA,EACE,MAAM,KACR,MAAM,KAAKA,CAAK,EAEhB,GAAG,MAAM,KAAKA,CAAK,CAE7B,CACD,IAAI0sB,EAAa,UAAW,CAC1B,SAASA,EAAWpB,EAAMqB,EAAUC,EAAK,CACvC,IAAIpB,EAAQ,KACZZ,EAAe,KAAM8B,CAAU,EAC/B,KAAK,KAAOpB,EACZ,KAAK,WAAa,CAChB,SAAUA,EAAK,KACf,aAAcA,EAAK,KACnB,UAAWA,EAAK,KAChB,SAAUqB,CAClB,EACM,KAAK,IAAM,IAAI,eACf,KAAK,IAAI,KAAK,OAAQC,EAAK,EAAI,EAC/B,KAAK,IAAI,aAAe,OACxB,KAAK,IAAI,iBAAiB,eAAgB,kBAAkB,EAC5D,KAAK,IAAI,iBAAiB,SAAU,kBAAkB,EACtD,KAAK,IAAI,iBAAiB,mBAAoB,gBAAgB,EAC9D,KAAK,IAAI,iBAAiB,eAAgBhB,EAAa,YAAY,CAAC,EACpE,KAAK,IAAI,iBAAiB,OAAQ,SAASH,EAAO,CAChD,OAAOD,EAAM,eAAeC,CAAK,CACzC,CAAO,EACD,KAAK,IAAI,iBAAiB,QAAS,SAASA,EAAO,CACjD,OAAOD,EAAM,gBAAgBC,CAAK,CAC1C,CAAO,CACF,CACD,OAAAV,EAAY2B,EAAY,CAAE,CACxB,IAAK,SACL,MAAO,SAAgBnB,EAAU,CAC/B,KAAK,SAAWA,EAChB,KAAK,IAAI,KAAK,KAAK,UAAU,CAC3B,KAAM,KAAK,UACZ,CAAA,CAAC,CACH,CACP,EAAO,CACD,IAAK,iBACL,MAAO,SAAwBE,EAAO,CACpC,GAAI,KAAK,QAAU,KAAO,KAAK,OAAS,IAAK,CAC3C,IAAIoB,EAAW,KAAK,SAChBC,EAAgBD,EAAS,cAC7B,OAAOA,EAAS,cAChB,KAAK,WAAaA,EAClB,KAAK,iBAAmBC,EACxB,KAAK,SAAS,KAAM,KAAK,OAAQ,CAAA,CAC3C,MACU,KAAK,gBAAgBrB,CAAK,CAE7B,CACP,EAAO,CACD,IAAK,kBACL,MAAO,SAAyBA,EAAO,CACrC,KAAK,SAAS,4BAA8B,KAAK,KAAK,KAAO,cAAgB,KAAK,MAAM,CACzF,CACP,EAAO,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,IAAIzlB,EAAS,CAAA,EACb,QAASxH,KAAO,KAAK,WACnBwH,EAAOxH,CAAG,EAAI,KAAK,WAAWA,CAAG,EAEnC,OAAOwH,CACR,CACP,EAAO,CACD,IAAK,SACL,IAAK,UAAkB,CACrB,OAAO,KAAK,IAAI,MACjB,CACP,EAAO,CACD,IAAK,WACL,IAAK,UAAkB,CACrB,IAAI+mB,EAAO,KAAK,IAAKC,EAAeD,EAAK,aAAcF,EAAWE,EAAK,SACvE,OAAIC,GAAgB,OACXH,EAEA,KAAK,MAAMA,CAAQ,CAE7B,CACF,CAAA,CAAE,EACIH,CACX,IACMO,EAAa,UAAW,CAC1B,SAASA,EAAWC,EAAM,CACxB,IAAI1B,EAAQ,KACZZ,EAAe,KAAMqC,CAAU,EAC/B,KAAK,KAAOC,EACZ,KAAK,KAAOA,EAAK,KACjB,IAAIC,EAAwBD,EAAK,iBAAkBN,EAAMO,EAAsB,IAAKC,EAAUD,EAAsB,QACpH,KAAK,IAAM,IAAI,eACf,KAAK,IAAI,KAAK,MAAOP,EAAK,EAAI,EAC9B,KAAK,IAAI,aAAe,OACxB,QAASpuB,KAAO4uB,EACd,KAAK,IAAI,iBAAiB5uB,EAAK4uB,EAAQ5uB,CAAG,CAAC,EAE7C,KAAK,IAAI,iBAAiB,OAAQ,SAASitB,EAAO,CAChD,OAAOD,EAAM,eAAeC,CAAK,CACzC,CAAO,EACD,KAAK,IAAI,iBAAiB,QAAS,SAASA,EAAO,CACjD,OAAOD,EAAM,gBAAgBC,CAAK,CAC1C,CAAO,CACF,CACD,OAAAV,EAAYkC,EAAY,CAAE,CACxB,IAAK,SACL,MAAO,SAAgB1B,EAAU,CAC/B,KAAK,SAAWA,EAChB,KAAK,IAAI,KAAK,KAAK,KAAK,MAAK,CAAE,CAChC,CACP,EAAO,CACD,IAAK,iBACL,MAAO,SAAwBE,EAAO,CACpC,IAAIsB,EAAO,KAAK,IAAKM,EAASN,EAAK,OAAQF,EAAWE,EAAK,SACvDM,GAAU,KAAOA,EAAS,IAC5B,KAAK,SAAS,KAAMR,CAAQ,EAE5B,KAAK,gBAAgBpB,CAAK,CAE7B,CACP,EAAO,CACD,IAAK,kBACL,MAAO,SAAyBA,EAAO,CACrC,KAAK,SAAS,kBAAoB,KAAK,KAAK,KAAO,cAAgB,KAAK,IAAI,MAAM,CACnF,CACF,CAAA,CAAE,EACIwB,CACX,IACMvV,EAAK,EACL4V,EAAe,UAAW,CAC5B,SAASA,EAAahC,EAAMsB,EAAKW,EAAU,CACzC3C,EAAe,KAAM0C,CAAY,EACjC,KAAK,GAAK,EAAE5V,EACZ,KAAK,KAAO4T,EACZ,KAAK,IAAMsB,EACX,KAAK,SAAWW,CACjB,CACD,OAAAxC,EAAYuC,EAAc,CAAE,CAC1B,IAAK,SACL,MAAO,SAAgB/B,EAAU,CAC/B,IAAIC,EAAQ,KACZH,EAAa,OAAO,KAAK,KAAM,SAASmC,EAAOb,EAAU,CACvD,GAAIa,EAAO,CACTjC,EAASiC,CAAK,EACd,MACD,CACD,IAAIN,EAAO,IAAIR,EAAWlB,EAAM,KAAMmB,EAAUnB,EAAM,GAAG,EACzDiC,EAAOjC,EAAM,SAAU,oCAAqC0B,EAAK,GAAG,EACpEA,EAAK,OAAO,SAASM,EAAO,CAC1B,GAAIA,EACFjC,EAASiC,CAAK,MACT,CACL,IAAIE,GAAS,IAAIT,EAAWC,CAAI,EAChCO,EAAOjC,EAAM,SAAU,mCAAoCkC,GAAO,GAAG,EACrEA,GAAO,OAAO,SAASF,EAAO,CACxBA,EACFjC,EAASiC,CAAK,EAEdjC,EAAS,KAAM2B,EAAK,OAAQ,CAAA,CAE9C,CAAe,CACF,CACb,CAAW,CACX,CAAS,CACF,CACF,CAAA,CAAE,EACII,CACX,IACE,SAASG,EAAOpxB,EAAQsxB,EAAY,CAClC,GAAItxB,GAAU,OAAOA,EAAOsxB,CAAU,GAAK,WAAY,CACrD,QAASC,EAAO,UAAU,OAAQC,EAAW,MAAMD,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAClGD,EAASC,EAAO,CAAC,EAAI,UAAUA,CAAI,EAErC,OAAOzxB,EAAOsxB,CAAU,EAAE,MAAMtxB,EAAQwxB,CAAQ,CACjD,CACF,CACD,IAAIE,EAAyB,UAAW,CACtC,SAASA,EAAuBC,EAAO1C,EAAM,CAC3CV,EAAe,KAAMmD,CAAsB,EAC3C,KAAK,MAAQC,EACb,KAAK,KAAO1C,EACZ,KAAK,aAAe,IAAIgC,EAAa,KAAK,KAAM,KAAK,IAAK,IAAI,EAC9D,KAAK,SAAS,YAAY,CAC3B,CACD,OAAAvC,EAAYgD,EAAwB,CAAE,CACpC,IAAK,QACL,MAAO,SAAexC,EAAU,CAC9B,IAAIC,EAAQ,KACRyC,EAAc,SAAS,cAAc,OAAO,EAChDA,EAAY,KAAO,SACnBA,EAAY,KAAO,KAAK,MAAM,KAC9B,KAAK,MAAM,sBAAsB,cAAeA,CAAW,EAC3D,KAAK,SAAS,OAAO,EACrB,KAAK,aAAa,OAAO,SAAST,EAAOnuB,EAAY,CAC/CmuB,GACFS,EAAY,WAAW,YAAYA,CAAW,EAC9CzC,EAAM,cAAcgC,CAAK,GAEzBS,EAAY,MAAQ5uB,EAAW,UAEjCmsB,EAAM,SAAS,KAAK,EACpBD,EAASiC,CAAK,CACxB,CAAS,CACF,CACP,EAAO,CACD,IAAK,2BACL,MAAO,SAAkC/B,EAAO,CAC9C,IAAIyC,EAAWzC,EAAM,OAASA,EAAM,MAAQ,IACxCyC,GACF,KAAK,SAAS,WAAY,CACxB,SAAUA,CACtB,CAAW,CAEJ,CACP,EAAO,CACD,IAAK,WACL,MAAO,SAAkB5tB,EAAM,CAC7B,IAAImsB,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACjF,OAAAA,EAAO,KAAO,KAAK,KACnBA,EAAO,GAAK,KAAK,aAAa,GACvBL,EAAc,KAAK,MAAO,iBAAmB9rB,EAAM,CACxD,OAAQmsB,CAClB,CAAS,CACF,CACP,EAAO,CACD,IAAK,gBACL,MAAO,SAAuBe,EAAO,CACnC,IAAI/B,EAAQ,KAAK,SAAS,QAAS,CACjC,MAAO+B,CACjB,CAAS,EACI/B,EAAM,kBACT,MAAM+B,CAAK,CAEd,CACP,EAAO,CACD,IAAK,oCACL,MAAO,SAA2CW,EAAK,CACrD,KAAK,SAAS,sBAAuB,CACnC,IAAKA,CACf,CAAS,CACF,CACP,EAAO,CACD,IAAK,mCACL,MAAO,SAA0CA,EAAK,CACpD,IAAIC,EAAS,KACb,KAAK,SAAS,yBAA0B,CACtC,IAAKD,CACf,CAAS,EACDA,EAAI,OAAO,iBAAiB,WAAY,SAAS1C,EAAO,CACtD,OAAO2C,EAAO,yBAAyB3C,CAAK,CACtD,CAAS,CACF,CACP,EAAO,CACD,IAAK,MACL,IAAK,UAAkB,CACrB,OAAO,KAAK,MAAM,aAAa,wBAAwB,CACxD,CACF,CAAA,CAAE,EACIsC,CACX,IACMM,EAAgB,2DAChBC,EAA0B,UAAW,CACvC,SAASA,EAAwBC,EAAM,CACrC3D,EAAe,KAAM0D,CAAuB,EAC5C,KAAK,KAAOC,EACZ,KAAK,OAASxC,EAAawC,EAAMF,CAAa,EAAE,OAAO,SAASL,EAAO,CACrE,OAAOA,EAAM,MAAM,MAC3B,CAAO,CACF,CACD,OAAAjD,EAAYuD,EAAyB,CAAE,CACrC,IAAK,QACL,MAAO,SAAe/C,EAAU,CAC9B,IAAIC,EAAQ,KACRgD,EAAc,KAAK,gCACnBC,EAAsB,SAASA,GAAsB,CACvD,IAAIC,EAAaF,EAAY,QACzBE,EACFA,EAAW,MAAM,SAASlB,GAAO,CAC3BA,IACFjC,EAASiC,EAAK,EACdhC,EAAM,SAAS,KAAK,GAEpBiD,GAEhB,CAAa,GAEDlD,IACAC,EAAM,SAAS,KAAK,EAEhC,EACQ,KAAK,SAAS,OAAO,EACrBiD,GACD,CACP,EAAO,CACD,IAAK,gCACL,MAAO,UAAyC,CAC9C,IAAID,EAAc,CAAA,EAClB,YAAK,OAAO,QAAQ,SAASR,EAAO,CAClC7B,EAAU6B,EAAM,KAAK,EAAE,QAAQ,SAAS1C,EAAM,CAC5C,IAAIoD,EAAa,IAAIX,EAAuBC,EAAO1C,CAAI,EACvDkD,EAAY,KAAKE,CAAU,CACvC,CAAW,CACX,CAAS,EACMF,CACR,CACP,EAAO,CACD,IAAK,WACL,MAAO,SAAkBluB,EAAM,CAC7B,IAAImsB,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACjF,OAAOL,EAAc,KAAK,KAAM,kBAAoB9rB,EAAM,CACxD,OAAQmsB,CAClB,CAAS,CACF,CACF,CAAA,CAAE,EACI6B,CACX,IACMK,EAAsB,iCACtBC,EAAsB,IAAI,QAC1BC,EAAU,GACd,SAASlrB,GAAQ,CACVkrB,IACHA,EAAU,GACV,SAAS,iBAAiB,QAASC,EAAU,EAAI,EACjD,SAAS,iBAAiB,SAAUC,CAAa,EACjD,SAAS,iBAAiB,cAAeC,CAAsB,EAElE,CACD,SAASF,EAASrD,EAAO,CACvB,IAAIjnB,EAASinB,EAAM,QACdjnB,EAAO,SAAW,SAAWA,EAAO,SAAW,WAAaA,EAAO,MAAQ,UAAYA,EAAO,MACjGoqB,EAAoB,IAAIpqB,EAAO,KAAMA,CAAM,CAE9C,CACD,SAASuqB,EAActD,EAAO,CAC5BwD,EAA0BxD,CAAK,CAChC,CACD,SAASuD,EAAuBvD,EAAO,CACjCA,EAAM,OAAO,SAAW,QAC1BwD,EAA0BxD,CAAK,CAElC,CACD,SAASwD,EAA0BxD,EAAO,CACxC,IAAI8C,EAAO9C,EAAM,OACjB,GAAI8C,EAAK,aAAaI,CAAmB,EAAG,CAC1ClD,EAAM,eAAc,EACpB,MACD,CACD,IAAIiD,EAAa,IAAIJ,EAAwBC,CAAI,EAC7CW,EAASR,EAAW,OACpBQ,EAAO,SACTzD,EAAM,eAAc,EACpB8C,EAAK,aAAaI,EAAqB,EAAE,EACzCO,EAAO,QAAQC,EAAO,EACtBT,EAAW,MAAM,SAASlB,EAAO,CAC/Be,EAAK,gBAAgBI,CAAmB,EACpCnB,EACF0B,EAAO,QAAQE,CAAM,EAErBC,EAAWd,CAAI,CAEzB,CAAO,EAEJ,CACD,SAASc,EAAWd,EAAM,CACxB,IAAIe,EAASV,EAAoB,IAAIL,CAAI,GAAKzC,EAAYyC,EAAM,yCAAyC,EACzG,GAAIe,EAAQ,CACV,IAAIC,EAAUD,EAAQhD,EAAWiD,EAAQ,SACzCD,EAAO,SAAW,GAClBA,EAAO,MAAK,EACZA,EAAO,MAAK,EACZA,EAAO,SAAWhD,CACxB,MACMgD,EAAS,SAAS,cAAc,OAAO,EACvCA,EAAO,KAAO,SACdA,EAAO,MAAM,QAAU,OACvBf,EAAK,YAAYe,CAAM,EACvBA,EAAO,MAAK,EACZf,EAAK,YAAYe,CAAM,EAEzBV,EAAoB,OAAOL,CAAI,CAChC,CACD,SAASY,GAAQnB,EAAO,CACtBA,EAAM,SAAW,EAClB,CACD,SAASoB,EAAOpB,EAAO,CACrBA,EAAM,SAAW,EAClB,CACD,SAASwB,GAAY,CACf,OAAO,eACT7rB,GAEH,CACD,WAAW6rB,EAAW,CAAC,EACvBxH,EAAQ,MAAQrkB,EAChBqkB,EAAQ,aAAesF,EACvB,OAAO,eAAetF,EAAS,aAAc,CAC3C,MAAO,EACX,CAAG,CACH,CAAC,qCCz6BGyH,GACD,OAAO,WAAe,KAAe,YACrC,OAAO,KAAS,KAAe,MAE/B,OAAO,OAAW,KAAe,QAClC,CAAE,EAEAC,GAAU,CACZ,aAAc,oBAAqBD,GACnC,SAAU,WAAYA,IAAK,aAAc,OACzC,KACE,eAAgBA,IAChB,SAAUA,IACT,UAAW,CACV,GAAI,CACF,WAAI,KACG,EACR,MAAW,CACV,MAAO,EACR,CACP,EAAQ,EACN,SAAU,aAAcA,GACxB,YAAa,gBAAiBA,EAChC,EAEA,SAASE,GAAWC,EAAK,CACvB,OAAOA,GAAO,SAAS,UAAU,cAAcA,CAAG,CACpD,CAEA,GAAIF,GAAQ,YACV,IAAIG,GAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,uBACD,EAEGC,GACF,YAAY,QACZ,SAASF,EAAK,CACZ,OAAOA,GAAOC,GAAY,QAAQ,OAAO,UAAU,SAAS,KAAKD,CAAG,CAAC,EAAI,EAC1E,EAGL,SAASG,GAAczvB,EAAM,CAI3B,GAHI,OAAOA,GAAS,WAClBA,EAAO,OAAOA,CAAI,GAEhB,6BAA6B,KAAKA,CAAI,GAAKA,IAAS,GACtD,MAAM,IAAI,UAAU,4CAA8CA,EAAO,GAAG,EAE9E,OAAOA,EAAK,YAAa,CAC3B,CAEA,SAAS0vB,GAAehwB,EAAO,CAC7B,OAAI,OAAOA,GAAU,WACnBA,EAAQ,OAAOA,CAAK,GAEfA,CACT,CAGA,SAASiwB,GAAYC,EAAO,CAC1B,IAAIC,EAAW,CACb,KAAM,UAAW,CACf,IAAInwB,EAAQkwB,EAAM,MAAO,EACzB,MAAO,CAAC,KAAMlwB,IAAU,OAAW,MAAOA,CAAK,CAChD,CACF,EAED,OAAI0vB,GAAQ,WACVS,EAAS,OAAO,QAAQ,EAAI,UAAW,CACrC,OAAOA,CACR,GAGIA,CACT,CAEO,SAASC,GAAQhD,EAAS,CAC/B,KAAK,IAAM,CAAE,EAETA,aAAmBgD,GACrBhD,EAAQ,QAAQ,SAASptB,EAAOM,EAAM,CACpC,KAAK,OAAOA,EAAMN,CAAK,CACxB,EAAE,IAAI,EACE,MAAM,QAAQotB,CAAO,EAC9BA,EAAQ,QAAQ,SAASiD,EAAQ,CAC/B,GAAIA,EAAO,QAAU,EACnB,MAAM,IAAI,UAAU,sEAAwEA,EAAO,MAAM,EAE3G,KAAK,OAAOA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CACjC,EAAE,IAAI,EACEjD,GACT,OAAO,oBAAoBA,CAAO,EAAE,QAAQ,SAAS9sB,EAAM,CACzD,KAAK,OAAOA,EAAM8sB,EAAQ9sB,CAAI,CAAC,CAChC,EAAE,IAAI,CAEX,CAEA8vB,GAAQ,UAAU,OAAS,SAAS9vB,EAAMN,EAAO,CAC/CM,EAAOyvB,GAAczvB,CAAI,EACzBN,EAAQgwB,GAAehwB,CAAK,EAC5B,IAAIswB,EAAW,KAAK,IAAIhwB,CAAI,EAC5B,KAAK,IAAIA,CAAI,EAAIgwB,EAAWA,EAAW,KAAOtwB,EAAQA,CACxD,EAEAowB,GAAQ,UAAU,OAAY,SAAS9vB,EAAM,CAC3C,OAAO,KAAK,IAAIyvB,GAAczvB,CAAI,CAAC,CACrC,EAEA8vB,GAAQ,UAAU,IAAM,SAAS9vB,EAAM,CACrC,OAAAA,EAAOyvB,GAAczvB,CAAI,EAClB,KAAK,IAAIA,CAAI,EAAI,KAAK,IAAIA,CAAI,EAAI,IAC3C,EAEA8vB,GAAQ,UAAU,IAAM,SAAS9vB,EAAM,CACrC,OAAO,KAAK,IAAI,eAAeyvB,GAAczvB,CAAI,CAAC,CACpD,EAEA8vB,GAAQ,UAAU,IAAM,SAAS9vB,EAAMN,EAAO,CAC5C,KAAK,IAAI+vB,GAAczvB,CAAI,CAAC,EAAI0vB,GAAehwB,CAAK,CACtD,EAEAowB,GAAQ,UAAU,QAAU,SAAS7E,EAAUgF,EAAS,CACtD,QAASjwB,KAAQ,KAAK,IAChB,KAAK,IAAI,eAAeA,CAAI,GAC9BirB,EAAS,KAAKgF,EAAS,KAAK,IAAIjwB,CAAI,EAAGA,EAAM,IAAI,CAGvD,EAEA8vB,GAAQ,UAAU,KAAO,UAAW,CAClC,IAAIF,EAAQ,CAAE,EACd,YAAK,QAAQ,SAASlwB,EAAOM,EAAM,CACjC4vB,EAAM,KAAK5vB,CAAI,CACnB,CAAG,EACM2vB,GAAYC,CAAK,CAC1B,EAEAE,GAAQ,UAAU,OAAS,UAAW,CACpC,IAAIF,EAAQ,CAAE,EACd,YAAK,QAAQ,SAASlwB,EAAO,CAC3BkwB,EAAM,KAAKlwB,CAAK,CACpB,CAAG,EACMiwB,GAAYC,CAAK,CAC1B,EAEAE,GAAQ,UAAU,QAAU,UAAW,CACrC,IAAIF,EAAQ,CAAE,EACd,YAAK,QAAQ,SAASlwB,EAAOM,EAAM,CACjC4vB,EAAM,KAAK,CAAC5vB,EAAMN,CAAK,CAAC,CAC5B,CAAG,EACMiwB,GAAYC,CAAK,CAC1B,EAEIR,GAAQ,WACVU,GAAQ,UAAU,OAAO,QAAQ,EAAIA,GAAQ,UAAU,SAGzD,SAASI,GAASC,EAAM,CACtB,GAAI,CAAAA,EAAK,QACT,IAAIA,EAAK,SACP,OAAO,QAAQ,OAAO,IAAI,UAAU,cAAc,CAAC,EAErDA,EAAK,SAAW,GAClB,CAEA,SAASC,GAAgBC,EAAQ,CAC/B,OAAO,IAAI,QAAQ,SAASC,EAASC,EAAQ,CAC3CF,EAAO,OAAS,UAAW,CACzBC,EAAQD,EAAO,MAAM,CACtB,EACDA,EAAO,QAAU,UAAW,CAC1BE,EAAOF,EAAO,KAAK,CACpB,CACL,CAAG,CACH,CAEA,SAASG,GAAsB5D,EAAM,CACnC,IAAIyD,EAAS,IAAI,WACbI,EAAUL,GAAgBC,CAAM,EACpC,OAAAA,EAAO,kBAAkBzD,CAAI,EACtB6D,CACT,CAEA,SAASC,GAAe9D,EAAM,CAC5B,IAAIyD,EAAS,IAAI,WACbI,EAAUL,GAAgBC,CAAM,EAChCM,EAAQ,2BAA2B,KAAK/D,EAAK,IAAI,EACjDgE,EAAWD,EAAQA,EAAM,CAAC,EAAI,QAClC,OAAAN,EAAO,WAAWzD,EAAMgE,CAAQ,EACzBH,CACT,CAEA,SAASI,GAAsBC,EAAK,CAIlC,QAHIC,EAAO,IAAI,WAAWD,CAAG,EACzBE,EAAQ,IAAI,MAAMD,EAAK,MAAM,EAExBttB,EAAI,EAAGA,EAAIstB,EAAK,OAAQttB,IAC/ButB,EAAMvtB,CAAC,EAAI,OAAO,aAAastB,EAAKttB,CAAC,CAAC,EAExC,OAAOutB,EAAM,KAAK,EAAE,CACtB,CAEA,SAASC,GAAYH,EAAK,CACxB,GAAIA,EAAI,MACN,OAAOA,EAAI,MAAM,CAAC,EAElB,IAAIC,EAAO,IAAI,WAAWD,EAAI,UAAU,EACxC,OAAAC,EAAK,IAAI,IAAI,WAAWD,CAAG,CAAC,EACrBC,EAAK,MAEhB,CAEA,SAASG,IAAO,CACd,YAAK,SAAW,GAEhB,KAAK,UAAY,SAASf,EAAM,CAY9B,KAAK,SAAW,KAAK,SACrB,KAAK,UAAYA,EACZA,EAGM,OAAOA,GAAS,SACzB,KAAK,UAAYA,EACRf,GAAQ,MAAQ,KAAK,UAAU,cAAce,CAAI,EAC1D,KAAK,UAAYA,EACRf,GAAQ,UAAY,SAAS,UAAU,cAAce,CAAI,EAClE,KAAK,cAAgBA,EACZf,GAAQ,cAAgB,gBAAgB,UAAU,cAAce,CAAI,EAC7E,KAAK,UAAYA,EAAK,SAAU,EACvBf,GAAQ,aAAeA,GAAQ,MAAQC,GAAWc,CAAI,GAC/D,KAAK,iBAAmBc,GAAYd,EAAK,MAAM,EAE/C,KAAK,UAAY,IAAI,KAAK,CAAC,KAAK,gBAAgB,CAAC,GACxCf,GAAQ,cAAgB,YAAY,UAAU,cAAce,CAAI,GAAKX,GAAkBW,CAAI,GACpG,KAAK,iBAAmBc,GAAYd,CAAI,EAExC,KAAK,UAAYA,EAAO,OAAO,UAAU,SAAS,KAAKA,CAAI,GAjB3D,KAAK,QAAU,GACf,KAAK,UAAY,IAmBd,KAAK,QAAQ,IAAI,cAAc,IAC9B,OAAOA,GAAS,SAClB,KAAK,QAAQ,IAAI,eAAgB,0BAA0B,EAClD,KAAK,WAAa,KAAK,UAAU,KAC1C,KAAK,QAAQ,IAAI,eAAgB,KAAK,UAAU,IAAI,EAC3Cf,GAAQ,cAAgB,gBAAgB,UAAU,cAAce,CAAI,GAC7E,KAAK,QAAQ,IAAI,eAAgB,iDAAiD,EAGvF,EAEGf,GAAQ,OACV,KAAK,KAAO,UAAW,CACrB,IAAI+B,EAAWjB,GAAS,IAAI,EAC5B,GAAIiB,EACF,OAAOA,EAGT,GAAI,KAAK,UACP,OAAO,QAAQ,QAAQ,KAAK,SAAS,EAChC,GAAI,KAAK,iBACd,OAAO,QAAQ,QAAQ,IAAI,KAAK,CAAC,KAAK,gBAAgB,CAAC,CAAC,EACnD,GAAI,KAAK,cACd,MAAM,IAAI,MAAM,sCAAsC,EAEtD,OAAO,QAAQ,QAAQ,IAAI,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAEpD,GAGH,KAAK,YAAc,UAAW,CAC5B,GAAI,KAAK,iBAAkB,CACzB,IAAIC,EAAalB,GAAS,IAAI,EAC9B,OAAIkB,IAEO,YAAY,OAAO,KAAK,gBAAgB,EAC1C,QAAQ,QACb,KAAK,iBAAiB,OAAO,MAC3B,KAAK,iBAAiB,WACtB,KAAK,iBAAiB,WAAa,KAAK,iBAAiB,UAC1D,CACF,EAEM,QAAQ,QAAQ,KAAK,gBAAgB,EAEpD,KAAW,IAAIhC,GAAQ,KACjB,OAAO,KAAK,OAAO,KAAKoB,EAAqB,EAE7C,MAAM,IAAI,MAAM,+BAA+B,EAElD,EAED,KAAK,KAAO,UAAW,CACrB,IAAIW,EAAWjB,GAAS,IAAI,EAC5B,GAAIiB,EACF,OAAOA,EAGT,GAAI,KAAK,UACP,OAAOT,GAAe,KAAK,SAAS,EAC/B,GAAI,KAAK,iBACd,OAAO,QAAQ,QAAQG,GAAsB,KAAK,gBAAgB,CAAC,EAC9D,GAAI,KAAK,cACd,MAAM,IAAI,MAAM,sCAAsC,EAEtD,OAAO,QAAQ,QAAQ,KAAK,SAAS,CAExC,EAEGzB,GAAQ,WACV,KAAK,SAAW,UAAW,CACzB,OAAO,KAAK,OAAO,KAAKiC,EAAM,CAC/B,GAGH,KAAK,KAAO,UAAW,CACrB,OAAO,KAAK,KAAI,EAAG,KAAK,KAAK,KAAK,CACnC,EAEM,IACT,CAGA,IAAIC,GAAU,CAAC,UAAW,SAAU,MAAO,OAAQ,UAAW,QAAS,OAAQ,MAAO,OAAO,EAE7F,SAASC,GAAgBC,EAAQ,CAC/B,IAAIC,EAAUD,EAAO,YAAa,EAClC,OAAOF,GAAQ,QAAQG,CAAO,EAAI,GAAKA,EAAUD,CACnD,CAEO,SAASE,GAAQhE,EAAOzqB,EAAS,CACtC,GAAI,EAAE,gBAAgByuB,IACpB,MAAM,IAAI,UAAU,4FAA4F,EAGlHzuB,EAAUA,GAAW,CAAE,EACvB,IAAIktB,EAAOltB,EAAQ,KAEnB,GAAIyqB,aAAiBgE,GAAS,CAC5B,GAAIhE,EAAM,SACR,MAAM,IAAI,UAAU,cAAc,EAEpC,KAAK,IAAMA,EAAM,IACjB,KAAK,YAAcA,EAAM,YACpBzqB,EAAQ,UACX,KAAK,QAAU,IAAI6sB,GAAQpC,EAAM,OAAO,GAE1C,KAAK,OAASA,EAAM,OACpB,KAAK,KAAOA,EAAM,KAClB,KAAK,OAASA,EAAM,OAChB,CAACyC,GAAQzC,EAAM,WAAa,OAC9ByC,EAAOzC,EAAM,UACbA,EAAM,SAAW,GAEvB,MACI,KAAK,IAAM,OAAOA,CAAK,EAiBzB,GAdA,KAAK,YAAczqB,EAAQ,aAAe,KAAK,aAAe,eAC1DA,EAAQ,SAAW,CAAC,KAAK,WAC3B,KAAK,QAAU,IAAI6sB,GAAQ7sB,EAAQ,OAAO,GAE5C,KAAK,OAASsuB,GAAgBtuB,EAAQ,QAAU,KAAK,QAAU,KAAK,EACpE,KAAK,KAAOA,EAAQ,MAAQ,KAAK,MAAQ,KACzC,KAAK,OAASA,EAAQ,QAAU,KAAK,QAAW,UAAY,CAC1D,GAAI,oBAAqBksB,GAAG,CAC1B,IAAIwC,EAAO,IAAI,gBACf,OAAOA,EAAK,MACb,CACF,EAAA,EACD,KAAK,SAAW,MAEX,KAAK,SAAW,OAAS,KAAK,SAAW,SAAWxB,EACvD,MAAM,IAAI,UAAU,2CAA2C,EAIjE,GAFA,KAAK,UAAUA,CAAI,GAEf,KAAK,SAAW,OAAS,KAAK,SAAW,UACvCltB,EAAQ,QAAU,YAAcA,EAAQ,QAAU,YAAY,CAEhE,IAAI2uB,EAAgB,gBACpB,GAAIA,EAAc,KAAK,KAAK,GAAG,EAE7B,KAAK,IAAM,KAAK,IAAI,QAAQA,EAAe,OAAS,IAAI,OAAO,SAAS,MACnE,CAEL,IAAIC,EAAgB,KACpB,KAAK,MAAQA,EAAc,KAAK,KAAK,GAAG,EAAI,IAAM,KAAO,KAAO,IAAI,KAAI,EAAG,QAAS,CACrF,CACF,CAEL,CAEAH,GAAQ,UAAU,MAAQ,UAAW,CACnC,OAAO,IAAIA,GAAQ,KAAM,CAAC,KAAM,KAAK,SAAS,CAAC,CACjD,EAEA,SAASL,GAAOlB,EAAM,CACpB,IAAIlC,EAAO,IAAI,SACf,OAAAkC,EACG,KAAM,EACN,MAAM,GAAG,EACT,QAAQ,SAASpG,EAAO,CACvB,GAAIA,EAAO,CACT,IAAI+H,EAAQ/H,EAAM,MAAM,GAAG,EACvB/pB,EAAO8xB,EAAM,MAAO,EAAC,QAAQ,MAAO,GAAG,EACvCpyB,EAAQoyB,EAAM,KAAK,GAAG,EAAE,QAAQ,MAAO,GAAG,EAC9C7D,EAAK,OAAO,mBAAmBjuB,CAAI,EAAG,mBAAmBN,CAAK,CAAC,CAChE,CACP,CAAK,EACIuuB,CACT,CAEA,SAAS8D,GAAaC,EAAY,CAChC,IAAIlF,EAAU,IAAIgD,GAGdmC,EAAsBD,EAAW,QAAQ,eAAgB,GAAG,EAIhE,OAAAC,EACG,MAAM,IAAI,EACV,IAAI,SAASlC,EAAQ,CACpB,OAAOA,EAAO,QAAQ;AAAA,CAAI,IAAM,EAAIA,EAAO,OAAO,EAAGA,EAAO,MAAM,EAAIA,CAC5E,CAAK,EACA,QAAQ,SAAStS,EAAM,CACtB,IAAI3W,EAAQ2W,EAAK,MAAM,GAAG,EACtBvf,EAAM4I,EAAM,MAAK,EAAG,KAAM,EAC9B,GAAI5I,EAAK,CACP,IAAIwB,EAAQoH,EAAM,KAAK,GAAG,EAAE,KAAM,EAClC,GAAI,CACFgmB,EAAQ,OAAO5uB,EAAKwB,CAAK,CAC1B,OAAQwtB,EAAO,CACd,QAAQ,KAAK,YAAcA,EAAM,OAAO,CACzC,CACF,CACP,CAAK,EACIJ,CACT,CAEAoE,GAAK,KAAKQ,GAAQ,SAAS,EAEpB,SAASQ,GAASC,EAAUlvB,EAAS,CAC1C,GAAI,EAAE,gBAAgBivB,IACpB,MAAM,IAAI,UAAU,4FAA4F,EAQlH,GANKjvB,IACHA,EAAU,CAAE,GAGd,KAAK,KAAO,UACZ,KAAK,OAASA,EAAQ,SAAW,OAAY,IAAMA,EAAQ,OACvD,KAAK,OAAS,KAAO,KAAK,OAAS,IACrC,MAAM,IAAI,WAAW,0FAA0F,EAEjH,KAAK,GAAK,KAAK,QAAU,KAAO,KAAK,OAAS,IAC9C,KAAK,WAAaA,EAAQ,aAAe,OAAY,GAAK,GAAKA,EAAQ,WACvE,KAAK,QAAU,IAAI6sB,GAAQ7sB,EAAQ,OAAO,EAC1C,KAAK,IAAMA,EAAQ,KAAO,GAC1B,KAAK,UAAUkvB,CAAQ,CACzB,CAEAjB,GAAK,KAAKgB,GAAS,SAAS,EAE5BA,GAAS,UAAU,MAAQ,UAAW,CACpC,OAAO,IAAIA,GAAS,KAAK,UAAW,CAClC,OAAQ,KAAK,OACb,WAAY,KAAK,WACjB,QAAS,IAAIpC,GAAQ,KAAK,OAAO,EACjC,IAAK,KAAK,GACd,CAAG,CACH,EAEAoC,GAAS,MAAQ,UAAW,CAC1B,IAAI3F,EAAW,IAAI2F,GAAS,KAAM,CAAC,OAAQ,IAAK,WAAY,EAAE,CAAC,EAC/D,OAAA3F,EAAS,OAAS,EAClBA,EAAS,KAAO,QACTA,CACT,EAEA,IAAI6F,GAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,EAE/CF,GAAS,SAAW,SAAS5F,EAAKS,EAAQ,CACxC,GAAIqF,GAAiB,QAAQrF,CAAM,IAAM,GACvC,MAAM,IAAI,WAAW,qBAAqB,EAG5C,OAAO,IAAImF,GAAS,KAAM,CAAC,OAAQnF,EAAQ,QAAS,CAAC,SAAUT,CAAG,CAAC,CAAC,CACtE,EAEO,IAAI+F,GAAelD,GAAE,aAC5B,GAAI,CACF,IAAIkD,EACN,MAAc,CACZA,GAAe,SAASC,EAAStyB,EAAM,CACrC,KAAK,QAAUsyB,EACf,KAAK,KAAOtyB,EACZ,IAAIktB,EAAQ,MAAMoF,CAAO,EACzB,KAAK,MAAQpF,EAAM,KACpB,EACDmF,GAAa,UAAY,OAAO,OAAO,MAAM,SAAS,EACtDA,GAAa,UAAU,YAAcA,EACvC,CAEO,SAAS50B,GAAMiwB,EAAO6E,EAAM,CACjC,OAAO,IAAI,QAAQ,SAASjC,EAASC,EAAQ,CAC3C,IAAIiC,EAAU,IAAId,GAAQhE,EAAO6E,CAAI,EAErC,GAAIC,EAAQ,QAAUA,EAAQ,OAAO,QACnC,OAAOjC,EAAO,IAAI8B,GAAa,UAAW,YAAY,CAAC,EAGzD,IAAIxE,EAAM,IAAI,eAEd,SAAS4E,GAAW,CAClB5E,EAAI,MAAO,CACZ,CAEDA,EAAI,OAAS,UAAW,CACtB,IAAI5qB,EAAU,CACZ,WAAY4qB,EAAI,WAChB,QAASkE,GAAalE,EAAI,sBAAqB,GAAM,EAAE,CACxD,EAGG2E,EAAQ,IAAI,WAAW,SAAS,IAAM3E,EAAI,OAAS,KAAOA,EAAI,OAAS,KACzE5qB,EAAQ,OAAS,IAEjBA,EAAQ,OAAS4qB,EAAI,OAEvB5qB,EAAQ,IAAM,gBAAiB4qB,EAAMA,EAAI,YAAc5qB,EAAQ,QAAQ,IAAI,eAAe,EAC1F,IAAIktB,EAAO,aAActC,EAAMA,EAAI,SAAWA,EAAI,aAClD,WAAW,UAAW,CACpByC,EAAQ,IAAI4B,GAAS/B,EAAMltB,CAAO,CAAC,CACpC,EAAE,CAAC,CACL,EAED4qB,EAAI,QAAU,UAAW,CACvB,WAAW,UAAW,CACpB0C,EAAO,IAAI,UAAU,wBAAwB,CAAC,CAC/C,EAAE,CAAC,CACL,EAED1C,EAAI,UAAY,UAAW,CACzB,WAAW,UAAW,CACpB0C,EAAO,IAAI,UAAU,2BAA2B,CAAC,CAClD,EAAE,CAAC,CACL,EAED1C,EAAI,QAAU,UAAW,CACvB,WAAW,UAAW,CACpB0C,EAAO,IAAI8B,GAAa,UAAW,YAAY,CAAC,CACjD,EAAE,CAAC,CACL,EAED,SAASK,EAAOpG,EAAK,CACnB,GAAI,CACF,OAAOA,IAAQ,IAAM6C,GAAE,SAAS,KAAOA,GAAE,SAAS,KAAO7C,CAC1D,MAAW,CACV,OAAOA,CACR,CACF,CAoBD,GAlBAuB,EAAI,KAAK2E,EAAQ,OAAQE,EAAOF,EAAQ,GAAG,EAAG,EAAI,EAE9CA,EAAQ,cAAgB,UAC1B3E,EAAI,gBAAkB,GACb2E,EAAQ,cAAgB,SACjC3E,EAAI,gBAAkB,IAGpB,iBAAkBA,IAChBuB,GAAQ,KACVvB,EAAI,aAAe,OAEnBuB,GAAQ,cAERvB,EAAI,aAAe,gBAInB0E,GAAQ,OAAOA,EAAK,SAAY,UAAY,EAAEA,EAAK,mBAAmBzC,IAAYX,GAAE,SAAWoD,EAAK,mBAAmBpD,GAAE,SAAW,CACtI,IAAIwD,EAAQ,CAAA,EACZ,OAAO,oBAAoBJ,EAAK,OAAO,EAAE,QAAQ,SAASvyB,EAAM,CAC9D2yB,EAAM,KAAKlD,GAAczvB,CAAI,CAAC,EAC9B6tB,EAAI,iBAAiB7tB,EAAM0vB,GAAe6C,EAAK,QAAQvyB,CAAI,CAAC,CAAC,CACrE,CAAO,EACDwyB,EAAQ,QAAQ,QAAQ,SAAS9yB,EAAOM,EAAM,CACxC2yB,EAAM,QAAQ3yB,CAAI,IAAM,IAC1B6tB,EAAI,iBAAiB7tB,EAAMN,CAAK,CAE1C,CAAO,CACP,MACM8yB,EAAQ,QAAQ,QAAQ,SAAS9yB,EAAOM,EAAM,CAC5C6tB,EAAI,iBAAiB7tB,EAAMN,CAAK,CACxC,CAAO,EAGC8yB,EAAQ,SACVA,EAAQ,OAAO,iBAAiB,QAASC,CAAQ,EAEjD5E,EAAI,mBAAqB,UAAW,CAE9BA,EAAI,aAAe,GACrB2E,EAAQ,OAAO,oBAAoB,QAASC,CAAQ,CAEvD,GAGH5E,EAAI,KAAK,OAAO2E,EAAQ,UAAc,IAAc,KAAOA,EAAQ,SAAS,CAChF,CAAG,CACH,CAEA/0B,GAAM,SAAW,GAEZ0xB,GAAE,QACLA,GAAE,MAAQ1xB,GACV0xB,GAAE,QAAUW,GACZX,GAAE,QAAUuC,GACZvC,GAAE,SAAW+C,IC9nBf,MAAMU,GAAY,CAACC,EAAcpb,IAC3BA,IAAU,EACLob,EAEHA,EAAK,SAAS,GAAG,EACZ,GAAGA,EAAK,MAAM,EAAG,EAAE,CAAC,MAEpB,GAAGA,CAAI,ICJpB,MAAMC,EAAS,CACb,aAAoB,OAA2B,CAKvC,MAAAC,EAAO,MAJI,MAAMC,GAAWC,GAAc,CAC9C,OAAQ,MACR,QAAS,CAAE,eAAgB,kBAAmB,CAAA,CAC/C,GAC2B,OAErB,OAAA,IAAIH,GAASC,CAAI,CAC1B,CAiBA,YAAYG,EAAoB,CAC9B,KAAK,GAAKA,EAAI,GACd,KAAK,KAAOA,EAAI,KAChB,KAAK,eAAiB,GAEtB,KAAK,cAAgBA,EAAI,gBACzB,KAAK,eAAiB,CACpB,MAAOA,EAAI,iBAAiB,MAC5B,YAAaA,EAAI,iBAAiB,aAClC,WAAYA,EAAI,iBAAiB,YACjC,SAAUA,EAAI,iBAAiB,SAAA,EAG7BA,EAAA,gBAAgB,QAASC,GAAY,CACvC,KAAK,eAAe,KAAK,CACvB,kBAAmBA,EAAQ,oBAC3B,mBAAoBA,EAAQ,qBAC5B,QAASA,EAAQ,OAAA,CAClB,CAAA,CACF,CACH,CAEO,qBAAqBC,EAAmCC,EAAyB,CAC/E,OAAA,KAAK,WAAWD,CAAQ,GAAKC,CACtC,CAEO,WAAWD,EAA2C,CAI3D,OAHgB,KAAK,eAClB,KAAMxuB,GAAMA,EAAE,mBAAqBwuB,CAAQ,GAAK,CAAE,QAAS,CAAE,GAEjD,OACjB,CACF,CCnCA,MAAME,GAAN,MAAMA,EAAc,CAOlB,aAAoB,MAAMlc,EAAY,CAAE,cAAAmc,EAAgB,EAAM,EAAI,CAAA,EAA4B,CAMtF,MAAAR,EAAO,MALI,MAAMC,GAAWQ,GAAsBpc,EAAImc,CAAa,EAAG,CAC1E,QAAS,CACP,OAAQ,kBACV,CAAA,CACD,GAC2B,OAErB,OAAA,IAAID,GAAcP,CAAI,CAC/B,CAaA,YAAYG,EAAyB,CACnC,KAAK,GAAKA,EAAI,GACd,KAAK,MAAQA,EAAI,MACjB,KAAK,YAAc,CACjB,GAAIA,EAAI,aAAa,GACrB,MAAOA,EAAI,aAAa,MACxB,UAAWA,EAAI,aAAa,WAC5B,SAAUA,EAAI,aAAa,SAAA,EAExB,KAAA,gBAAkBA,EAAI,OAAO,aAClC,KAAK,cAAgB,KAAK,mBAAmBA,EAAI,cAAc,EAC3DA,EAAI,eACN,KAAK,YAAc,CACjB,MAAOA,EAAI,aAAa,MACxB,kBAAmBA,EAAI,aAAa,oBACpC,mBAAoBA,EAAI,aAAa,oBAAA,GAGzC,KAAK,cAAgBA,EAAI,eACzB,KAAK,WAAaA,EAAI,YACtB,KAAK,UAAY,IAAI,KAAKA,EAAI,UAAU,EACxC,KAAK,UAAY,IAAI,KAAKA,EAAI,UAAU,CAC1C,CAEO,yBAA0D,CAC3D,GAAA,KAAK,aAAe,KACf,OAAA,KAED,MAAA,IAAI,MAAM,uCAAuC,CAE3D,CAEO,cAAwB,CAC7B,OAAOI,GAAc,kBAAkB,QAAQ,KAAK,KAAK,GAAK,CAChE,CAEO,wBAAkC,CAChC,OAAA,KAAK,aAAaA,GAAc,cAAc,CACvD,CAEO,UAAoB,CAClB,OAAA,KAAK,aAAaA,GAAc,aAAa,CACtD,CAEO,WAAqB,CACnB,OAAA,KAAK,aAAaA,GAAc,cAAc,CACvD,CAEO,WAAqB,CAC1B,OAAO,OAAO,KAAK,KAAK,cAAc,IAAI,EAAE,OAAS,CACvD,CAEQ,mBAAmBG,EAAyD,CAClF,MAAO,CAAE,KAAMA,EAAO,MAAQ,CAAG,CAAA,CACnC,CAEQ,aAAaC,EAAkB,CACrC,OAAOA,EAAO,QAAQ,KAAK,KAAK,GAAK,CACvC,CACF,EAxFMJ,GACmB,kBAAoB,CAAC,UAAW,YAAY,EAD/DA,GAEmB,eAAiB,CAAC,UAAW,YAAY,EAF5DA,GAGmB,eAAiB,CAAC,WAAW,EAHhDA,GAImB,gBAAkB,CAAC,UAAU,EAJhDA,GAKmB,cAAgB,CAAC,QAAQ,EALlD,IAAMK,GAANL,GC3BA,MAAAM,GAAA,OAAA,KAUMC,GAAuB,IAAI,KAAK,aAAa,QAAS,CAC1D,sBAAuB,EACvB,sBAAuB,CACzB,CAAC,EAED,MAAMC,EAAe,CACnB,aAAoB,SAClBC,EAA2BC,EAAqBC,EACvB,CACzB,MAAM3H,EAAM,KAAK,gBAAgB4H,GAAuBH,EAAmBC,EAAaC,CAAU,EAM5FlB,EAAO,MAJI,MAAMC,GAAW1G,EAAK,CACrC,OAAQ,MACR,QAAS,CAAE,eAAgB,kBAAmB,CAAA,CAC/C,GAC2B,OAErB,OAAA,IAAIwH,GAAef,CAAI,CAChC,CAEA,OAAe,gBACbzG,EAAayH,EAA2BC,EAAqBC,EACrD,CACR,MAAME,EAAyC,CAC7C,gCAAiCJ,EACjC,yBAA0BC,EAAY,SAAS,EAC/C,+BAAgCC,GAAc,EAAA,EAE1CG,EAAc,OAAO,KAAKD,CAAU,EAAE,IAAKj2B,GAC/C,GAAG,mBAAmBA,CAAG,CAAC,IAAI,mBAAmBi2B,EAAWj2B,CAAG,CAAC,CAAC,EAClE,EAAE,KAAK,GAAG,EAEJ,MAAA,GAAGouB,CAAG,IAAI8H,CAAW,EAC9B,CAqBA,YAAYlB,EAA0B,CACpC,KAAK,YAAcA,EAAI,aACvB,KAAK,kBAAoBA,EAAI,oBAC7B,KAAK,mBAAqBA,EAAI,qBAC9B,KAAK,aAAeA,EAAI,eACxB,KAAK,iBAAmBA,EAAI,mBAC5B,KAAK,iBAAmBA,EAAI,mBAC5B,KAAK,cAAgBA,EAAI,gBACzB,KAAK,MAAQ,CACX,GAAIA,EAAI,MAAM,GACd,MAAOA,EAAI,MAAM,MACjB,KAAMA,EAAI,MAAM,KAChB,MAAOA,EAAI,MAAM,KAAA,EAEnB,KAAK,OAAS,CACZ,KAAMA,EAAI,OAAO,KACjB,QAASA,EAAI,OAAO,SACpB,MAAOA,EAAI,OAAO,KAAA,CAEtB,CAEA,MAAa,UAAW,CACtB,MAAM5G,EAAMwH,GAAe,gBACzBO,GACA,KAAK,kBACL,KAAK,YACL,KAAK,OAAO,QAAU,KAAK,OAAO,KAAO,MAAA,EAOrCtB,EAAO,MAJI,MAAMC,GAAW1G,EAAK,CACrC,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAmB,CAAA,CAC/C,GAC2B,OACtBgI,EAAW,IAAIR,GAAef,CAAI,EAClCwB,EAAQD,EAAS,MAAM,MAEzB,GAAA,CACEC,GACFX,GAAK,QAAS,WAAY,CACxB,gBAAiBU,EAAS,MAAM,IAAM,IAAI,SAAS,EACnD,YAAa,SACb,MAAO,KAAK,kBAAkBC,EAAM,MAAQ,GAAG,EAC/C,SAAU,KAAA,CACX,QAEI5jB,EAAG,CACV,QAAQ,IAAI,8BAA8B,EAC1C,QAAQ,MAAMA,CAAC,CACjB,CAEO,OAAA2jB,CACT,CAEQ,kBAAkBE,EAAyB,CAC1C,OAAAX,GAAqB,OAAOW,CAAO,CAC5C,CACF,CC5Ga,MAAAC,WAAmBC,EAAAA,SAAgC,CACvD,YAAYlpB,EAAe,CAChC,MAAMA,CAAK,EAON,KAAA,uBAAyB,MAAO2f,GAA+C,CAC9E,MAAAwJ,EAAUxJ,EAAM,OAAO,MAE7B,KAAK,SAAS,CAAE,WAAYwJ,CAAS,CAAA,CAAA,EAGvC,KAAO,wBAA0B,SAAY,CACrC,KAAA,CAAE,wBAAAC,CAAwB,EAAI,KAAK,MACnC,CAAE,WAAAX,CAAW,EAAI,KAAK,MAE5BW,EAAwBX,CAAU,CAAA,EAGpC,KAAO,aAAe,SAAY,CAC1B,KAAA,CAAE,aAAAY,CAAa,EAAI,KAAK,MAEjBA,GAAA,EArBb,KAAK,MAAQ,CACX,WAAYrpB,EAAM,eAAe,OAAO,IAAA,CAE5C,CAqBO,aAAc,CACb,KAAA,CAAE,eAAAspB,CAAe,EAAI,KAAK,MAC1B,CAAE,MAAA5H,EAAO,KAAM6H,CAAA,EAAgBD,EAAe,OAChD,GAAA,GAAC5H,GAAS,CAAC6H,GAGb,OAAAC,EAAA,cAAC,OAAI,UAAU,aAAA,kBACZ,MAAI,CAAA,UAAU,4BACZ9H,CACH,CACF,CAEJ,CAEO,QAAS,CACR,KAAA,CAAE,WAAA+G,CAAW,EAAI,KAAK,MAG1B,OAAAe,EAAA,cAAC,WACEA,EAAA,cAAA,MAAA,CAAI,UAAU,aACb,EAAAA,EAAA,cAAC,MAAI,CAAA,UAAU,aACb,EAAAA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,6CACV,YAAY,OACZ,SAAU,KAAK,uBACf,MAAOf,CAAA,CAAA,CAEX,EACCe,EAAA,cAAA,MAAA,CAAI,UAAU,aACb,EAAAA,EAAA,cAAC,SAAA,CACC,UAAU,uBACV,QAAS,KAAK,uBAAA,EACf,oBAGA,IACDA,EAAA,cAAC,SAAA,CACC,UAAW,oBACX,QAAS,KAAK,YAAA,EACf,QAGH,CAAA,CACF,EAEC,KAAK,aACR,CAEJ,CACF,CCnFa,MAAAC,WAAqBP,EAAAA,SAA4B,CACrD,QAAS,CACR,KAAA,CAAE,eAAAI,CAAe,EAAI,KAAK,MAE5B,OAAAA,EAAe,iBAAiB,QAAU,EAAY,KAGxDE,gBAAC,WACEA,gBAAA,QAAA,CAAM,UAAU,wBACd,EAAAF,EAAe,iBAAiB,UAAW,IAAI,KAC7CA,EAAe,iBAAiB,UAAU,eAAa,IAAI,KAC3DA,EAAe,cAAc,SAClC,CACF,CAEJ,CACF,CCEa,MAAAI,WAAaR,EAAAA,SAAgC,CACxD,YAAYlpB,EAAe,CACzB,MAAMA,CAAK,EASN,KAAA,qBAAwB2f,GAA+C,CACtE,KAAA,CAAE,qBAAAgK,CAAqB,EAAI,KAAK,MAEtCA,EAAqB,SAAShK,EAAM,OAAO,MAAO,EAAE,GAAK,CAAC,CAAA,EAG5D,KAAO,sBAAwB,SAAY,CACnC,KAAA,CAAE,eAAAiK,CAAe,EAAI,KAAK,MAEhC,KAAK,SAAS,CAAE,WAAY,EAAM,CAAA,EAElC,MAAMA,EAAe,EAErB,KAAK,SAAS,CAAE,WAAY,EAAO,CAAA,CAAA,EAGrC,KAAO,mBAAqB,IAAM,CAC3B,KAAA,SAAUC,IAAe,CAAE,iBAAkB,CAACA,EAAU,gBAAmB,EAAA,CAAA,EAGlF,KAAO,aAAe,IAAM,CACpB,KAAA,CAAE,eAAAC,CAAe,EAAI,KAAK,MAE5BA,GACaA,GACjB,EAGK,KAAA,iBAAoBnK,GAAiC,CACtDA,GAASA,EAAM,eAAe,EAE7B,KAAA,SAAUkK,IAAe,CAAE,eAAgB,CAACA,EAAU,cAAiB,EAAA,CAAA,EAGvE,KAAA,wBAA0B,MAAOpB,GAAuB,CACvD,KAAA,CAAE,uBAAAsB,CAAuB,EAAI,KAAK,MAExC,MAAMA,EAAuBtB,CAAU,EAEjC,KAAA,CAAE,eAAAa,CAAe,EAAI,KAAK,MAC5BA,GAAkBA,EAAe,OAAO,SAC1C,KAAK,iBAAiB,CACxB,EAjDA,KAAK,MAAQ,CACX,iBAAkB,GAClB,WAAY,GACZ,eAAgB,EAAA,CAEpB,CA+CO,mBAAmBA,EAAgC,CAClD,KAAA,CAAE,iBAAAU,CAAiB,EAAI,KAAK,MAC5B,CAAE,WAAAC,CAAW,EAAI,KAAK,MAE5B,uBACG,MACC,KAAAT,EAAA,cAAC,SAAA,CACC,QAAS,KAAK,sBACd,UAAU,kBACV,SAAUS,CAAA,EACX,YACWD,EAAiB,IAAE,KAAK,qBAAqBA,CAAgB,EAAE,OAAK,IAC7EV,EAAe,cAAc,SAAA,EAE/B,IACAE,EAAAA,cAAA,SAAA,CAAO,QAAS,KAAK,mBAAoB,UAAU,mBAAA,EAAoB,MAAI,EAE3EA,EAAA,cAAAC,GAAA,CAAa,eAAAH,CAAgC,CAAA,CAChD,CAEJ,CAEO,gBAAiB,CAChB,KAAA,CAAE,eAAAQ,CAAe,EAAI,KAAK,MAEhC,uBACG,MACC,KAAAN,EAAA,cAAC,SAAA,CACC,QAAS,KAAK,mBACd,UAAU,iBAAA,EACX,YAGA,IACDA,EAAA,cAAC,SAAA,CACC,QAAS,KAAK,aACd,UAAW,qBAAqBM,EAAiB,GAAK,QAAQ,EAAA,EAC/D,QAAA,CAGH,CAEJ,CAEO,eAAgB,CACf,KAAA,CAAE,cAAAI,CAAc,EAAI,KAAK,MAE/B,OACGV,EAAAA,cAAA,MAAA,KAAI,sBACgBA,EAAA,cAAC,cAAQU,EAAc,OAAQ,EAAU,IAC3D,KAAK,qBAAqBA,EAAc,OAAO,EAAE,GACpD,CAEJ,CAEO,kBAAmB,CAClB,KAAA,CAAE,eAAAZ,CAAe,EAAI,KAAK,MAG9B,OAAAE,EAAA,cAAC,MAAI,CAAA,UAAU,YACb,EAAAA,EAAA,cAACP,GAAA,CACC,eAAAK,EACA,wBAAyB,KAAK,wBAC9B,aAAc,KAAK,gBAAA,CAAA,CAEvB,CAEJ,CAEO,kBAAmB,CACxB,KAAM,CAAE,WAAAb,EAAY,eAAAa,GAAkB,KAAK,MAEvC,OAAAb,GAAca,EAAe,OAAO,QAEnCE,EAAAA,cAAA,MAAA,KAAI,qBACgBf,EAAW,IAAE,IAEhCe,EAAA,cAAC,IAAE,CAAA,KAAK,IAAI,QAAS,KAAK,gBAAA,EAAkB,SAE5C,CACF,kBAIC,IAAE,CAAA,KAAK,IAAI,QAAS,KAAK,kBAAkB,oBAE5C,CAGN,CAEO,aAAc,CACb,KAAA,CAAE,eAAAF,CAAe,EAAI,KAAK,MAC1B,CAAE,MAAA5H,CAAM,EAAI4H,EAAe,MACjC,GAAK5H,EAEL,OACG8H,EAAAA,cAAA,MAAA,CAAI,UAAU,0BAAA,EACZ9H,CACH,CAEJ,CAEO,QAAS,CACd,KAAM,CAAE,iBAAAsI,EAAkB,eAAAV,EAAgB,eAAAa,CAAA,EAAmB,KAAK,MAC5D,CAAE,eAAAC,EAAgB,iBAAAC,GAAqB,KAAK,MAGhD,OAAAb,EAAAA,cAAC,MACE,KAAAW,EAAiB,KAAK,gBAAkB,GAEzCX,EAAA,cAAC,MAAI,CAAA,UAAU,gBACb,EAAAA,EAAA,cAAC,OAAI,UAAU,WAAA,EACZA,EAAA,cAAA,QAAA,CAAM,QAAQ,yBAAA,EAA0B,sCAEzC,CACF,EAEAA,EAAA,cAAC,MAAI,CAAA,UAAU,UACb,EAAAA,EAAA,cAAC,QAAA,CACC,GAAG,0BACH,KAAK,SACL,UAAU,eACV,MAAOQ,EACP,SAAU,KAAK,qBACf,SAAUK,CAAA,CACZ,EACC,KAAK,cACL,KAAK,iBAAiB,CACzB,EAEAb,EAAAA,cAAC,MAAI,CAAA,UAAU,UACZ,EAAAa,EAAmB,KAAK,mBAAmBf,CAAc,EAAI,KAAK,eACrE,CAAA,CACF,EAECc,EAAiB,KAAK,iBAAiB,EAAI,EAC9C,CAEJ,CAEQ,qBAAqBne,EAAuB,CAC5C,KAAA,CAAE,cAAAie,CAAc,EAAI,KAAK,MAExB,OAAA9C,GAAU8C,EAAc,mBAAoBje,CAAK,CAC1D,CACF,CC9Ma,MAAAqe,WAAoBpB,EAAAA,SAAgC,CAiB/D,YAAYlpB,EAAe,CACzB,MAAMA,CAAK,EAaN,KAAA,qBAAuB,MAAOgqB,GAA6B,CAChE,MAAM,KAAK,SAAS,CAAE,iBAAAA,CAAkB,CAAA,EACxC,MAAM,KAAK,yBAAwB,EAG9B,KAAA,uBAAyB,MAAOvB,GAAuB,CAC5D,MAAM,KAAK,SAAS,CAAE,WAAAA,CAAY,CAAA,EAClC,MAAM,KAAK,yBAAwB,EAGrC,KAAO,wBAA0B,SAAY,CACrC,KAAA,CAAE,cAAAyB,CAAc,EAAI,KAAK,MACzB,CAAE,iBAAAF,EAAkB,WAAAvB,GAAe,KAAK,MACxCa,EAAiB,MAAMhB,GAAe,SAC1C4B,EAAc,kBACdF,EACAvB,CAAA,EAGG,KAAA,SAAS,CAAE,eAAAa,CAAA,CAAgB,CAAA,EAGlC,KAAO,eAAiB,SAAY,CAC5B,KAAA,CAAE,gBAAAiB,CAAgB,EAAI,KAAK,MAC3B,CAAE,eAAAjB,CAAe,EAAI,KAAK,MAEhC,GAAI,CAACA,EAAwB,MAAA,IAAI,MAAM,0CAA0C,GAEhE,MAAMA,EAAe,YAEzB,MAAM,MACDiB,GAClB,EAGF,KAAO,4BAA8B,IAAM,CACzC,KAAK,SAAS,CAAE,eAAgB,MAAW,CAAA,CAAA,EAG7C,KAAO,aAAe,IAAM,CACpB,KAAA,CAAE,eAAAT,CAAe,EAAI,KAAK,MAE5BA,GACaA,GACjB,EAvDA,KAAK,MAAQ,CACX,gCAAiC9pB,EAAM,wBACvC,iBAAkBA,EAAM,wBACxB,WAAYA,EAAM,UAAA,CAEtB,CAnBA,OAAc,yBAAyBwqB,EAA6BX,EAA2C,CACzG,OAAAA,EAAU,kCAAoCW,EAAU,wBACnD,CACL,gCAAiCA,EAAU,wBAC3C,iBAAkBA,EAAU,uBAAA,EAGvB,IAEX,CAYO,mBAAoB,CACzB,KAAK,wBAAwB,CAC/B,CAiDO,QAAS,CACR,KAAA,CACJ,cAAAN,EACA,eAAAJ,EACA,eAAAK,CAAA,EACE,KAAK,MACH,CACJ,iBAAAH,EACA,WAAAvB,EACA,eAAAa,CAAA,EACE,KAAK,MAET,OAAKA,EAGHE,EAAA,cAACE,GAAA,CACC,cAAAQ,EACA,eAAAC,EACA,iBAAAH,EACA,eAAAV,EACA,WAAAb,EACA,eAAgB,KAAK,eACrB,eAAAqB,EACA,qBAAsB,KAAK,qBAC3B,uBAAwB,KAAK,sBAAA,CAAA,EAZH,YAehC,CACF,CA1GaQ,GACG,aAAgC,CAC5C,wBAAyB,EACzB,eAAgB,EAClB,ECZF,MAAMG,WAAuBvB,EAAAA,SAAgC,CACpD,YAAYlpB,EAAe,CAChC,MAAMA,CAAK,EAQb,KAAO,eAAiB,IAAM,CAC5B,KAAK,UAAU,CAAA,EAGjB,KAAO,gBAAkB,SAAY,CACnC,KAAK,UAAU,EACf,KAAK,cAAc,CAAA,EAZnB,KAAK,MAAQ,EACf,CACO,mBAAoB,CACzB,KAAK,cAAc,CACrB,CAWO,eAAgB,CACf,KAAA,CAAE,SAAA0qB,CAAS,EAAI,KAAK,MAE1B,OAAKA,EAIEA,EAAS,eAAe,IAAK/C,GACjC6B,gBAAA,MAAA,CAAI,IAAK7B,EAAQ,iBAAA,kBACf,SAAQ,KAAAA,EAAQ,mBAAmB,GAAC,EAAS,IAAEA,EAAQ,QACvD+C,EAAS,cACRlB,EAAA,cAAC,SAAA,CACC,QAAS,KAAK,sBAAsB,KAAK,KAAM7B,CAAO,EACtD,UAAU,cAAA,EACX,uBAID,EAAA6B,EAAA,cAAC,MAAI,KAAA,gEAA8D,CAEvE,CACD,kBAjBS,MAAI,IAAA,CAkBhB,CAEO,QAAS,CACR,KAAA,CAAE,WAAAf,CAAW,EAAI,KAAK,MACtB,CAAE,SAAAiC,EAAU,uBAAAC,GAA2B,KAAK,MAElD,OAAIA,EAEAnB,EAAA,cAACoB,GAAA,CACC,gBAAiB,KAAK,gBACtB,eAAgB,KAAK,eACrB,cAAeD,EACf,WAAAlC,CAAA,CAAA,EAGKiC,EACF,KAAK,gBAELlB,gBAAC,WAAI,YAAU,CAE1B,CAEQ,sBAAsB7B,EAAwC,CACpE,KAAK,SAAS,CACZ,uBAAwBA,CAAA,CACzB,CACH,CAEA,MAAc,eAAgB,CACtB,MAAA+C,EAAW,MAAMpD,GAAS,QAE3B,KAAA,SAAS,CAAE,SAAAoD,CAAA,CAAU,CAC5B,CAEQ,WAAY,CAClB,KAAK,SAAS,CACZ,uBAAwB,MAAA,CACzB,CACH,CACF,CC3FA,SAASG,GAAQt6B,EAAQu6B,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKx6B,CAAM,EAE7B,GAAI,OAAO,sBAAuB,CAChC,IAAIy6B,EAAU,OAAO,sBAAsBz6B,CAAM,EAE7Cu6B,IACFE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACtC,OAAO,OAAO,yBAAyB16B,EAAQ06B,CAAG,EAAE,UAC5D,CAAO,GAGHF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAC9B,CAED,OAAOD,CACT,CAEA,SAASG,GAAexyB,EAAQ,CAC9B,QAAST,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIU,EAAS,UAAUV,CAAC,GAAK,KAAO,UAAUA,CAAC,EAAI,GAE/CA,EAAI,EACN4yB,GAAQ,OAAOlyB,CAAM,EAAG,EAAI,EAAE,QAAQ,SAAUjG,EAAK,CACnDW,GAAgBqF,EAAQhG,EAAKiG,EAAOjG,CAAG,CAAC,CAChD,CAAO,EACQ,OAAO,0BAChB,OAAO,iBAAiBgG,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAExEkyB,GAAQ,OAAOlyB,CAAM,CAAC,EAAE,QAAQ,SAAUjG,EAAK,CAC7C,OAAO,eAAegG,EAAQhG,EAAK,OAAO,yBAAyBiG,EAAQjG,CAAG,CAAC,CACvF,CAAO,CAEJ,CAED,OAAOgG,CACT,CAEA,SAASyyB,GAAQrH,EAAK,CACpB,0BAEA,OAAI,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAC7DqH,GAAU,SAAUrH,EAAK,CACvB,OAAO,OAAOA,CACpB,EAEIqH,GAAU,SAAUrH,EAAK,CACvB,OAAOA,GAAO,OAAO,QAAW,YAAcA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAC/H,EAGSqH,GAAQrH,CAAG,CACpB,CAEA,SAASzwB,GAAgBywB,EAAKpxB,EAAKwB,EAAO,CACxC,OAAIxB,KAAOoxB,EACT,OAAO,eAAeA,EAAKpxB,EAAK,CAC9B,MAAOwB,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EAChB,CAAK,EAED4vB,EAAIpxB,CAAG,EAAIwB,EAGN4vB,CACT,CAEA,SAASsH,GAAenN,EAAKhmB,EAAG,CAC9B,OAAOozB,GAAgBpN,CAAG,GAAKqN,GAAsBrN,EAAKhmB,CAAC,GAAKszB,GAA4BtN,EAAKhmB,CAAC,GAAKuzB,GAAgB,CACzH,CAEA,SAASH,GAAgBpN,EAAK,CAC5B,GAAI,MAAM,QAAQA,CAAG,EAAG,OAAOA,CACjC,CAEA,SAASqN,GAAsBrN,EAAKhmB,EAAG,CACrC,IAAIwzB,EAAKxN,IAAQ,OAAO,OAAW,KAAeA,EAAI,OAAO,QAAQ,GAAKA,EAAI,YAAY,GAE1F,GAAIwN,GAAM,KACV,KAAIC,EAAO,CAAA,EACPC,EAAK,GACLC,EAAK,GAELC,EAAIC,EAER,GAAI,CACF,IAAKL,EAAKA,EAAG,KAAKxN,CAAG,EAAG,EAAE0N,GAAME,EAAKJ,EAAG,KAAM,GAAE,QAC9CC,EAAK,KAAKG,EAAG,KAAK,EAEd,EAAA5zB,GAAKyzB,EAAK,SAAWzzB,IAH4B0zB,EAAK,GAG1D,CAEH,OAAQI,EAAK,CACZH,EAAK,GACLE,EAAKC,CACT,QAAY,CACR,GAAI,CACE,CAACJ,GAAMF,EAAG,QAAa,MAAMA,EAAG,QAC1C,QAAc,CACR,GAAIG,EAAI,MAAME,CACf,CACF,CAED,OAAOJ,EACT,CAEA,SAASH,GAA4B3iB,EAAGojB,EAAQ,CAC9C,GAAKpjB,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOqjB,GAAkBrjB,EAAGojB,CAAM,EAC7D,IAAItoB,EAAI,OAAO,UAAU,SAAS,KAAKkF,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIlF,IAAM,UAAYkF,EAAE,cAAalF,EAAIkF,EAAE,YAAY,MACnDlF,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKkF,CAAC,EACnD,GAAIlF,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOuoB,GAAkBrjB,EAAGojB,CAAM,EACjH,CAEA,SAASC,GAAkBhO,EAAKla,EAAK,EAC/BA,GAAO,MAAQA,EAAMka,EAAI,UAAQla,EAAMka,EAAI,QAE/C,QAAShmB,EAAI,EAAG4C,EAAO,IAAI,MAAMkJ,CAAG,EAAG9L,EAAI8L,EAAK9L,IAAK4C,EAAK5C,CAAC,EAAIgmB,EAAIhmB,CAAC,EAEpE,OAAO4C,CACT,CAEA,SAAS2wB,IAAmB,CAC1B,MAAM,IAAI,UAAU;AAAA,mFAA2I,CACjK,CAEA,IAAIU,GAAc,SAAqBh4B,EAAO,CAC5C,IAAIi4B,EAAMC,EAAM,OAAOl4B,CAAK,EAC5B,OAAAk4B,EAAM,UAAU,UAAY,CAC1BD,EAAI,QAAUj4B,CAClB,EAAK,CAACA,CAAK,CAAC,EACHi4B,EAAI,OACb,EAEIE,GAAkB,SAAyB3N,EAAK,CAClD,OAAOA,IAAQ,MAAQyM,GAAQzM,CAAG,IAAM,QAC1C,EACI4N,GAAY,SAAmB5N,EAAK,CACtC,OAAO2N,GAAgB3N,CAAG,GAAK,OAAOA,EAAI,MAAS,UACrD,EAII6N,GAAW,SAAkB7N,EAAK,CACpC,OAAO2N,GAAgB3N,CAAG,GAAK,OAAOA,EAAI,UAAa,YAAc,OAAOA,EAAI,aAAgB,YAAc,OAAOA,EAAI,qBAAwB,YAAc,OAAOA,EAAI,oBAAuB,UACnM,EAEI8N,GAAmB,kBACnBC,GAAU,SAASA,EAAQnwB,EAAMowB,EAAO,CAC1C,GAAI,CAACL,GAAgB/vB,CAAI,GAAK,CAAC+vB,GAAgBK,CAAK,EAClD,OAAOpwB,IAASowB,EAGlB,IAAIC,EAAY,MAAM,QAAQrwB,CAAI,EAC9BswB,EAAa,MAAM,QAAQF,CAAK,EACpC,GAAIC,IAAcC,EAAY,MAAO,GACrC,IAAIC,EAAkB,OAAO,UAAU,SAAS,KAAKvwB,CAAI,IAAMkwB,GAC3DM,EAAmB,OAAO,UAAU,SAAS,KAAKJ,CAAK,IAAMF,GACjE,GAAIK,IAAoBC,EAAkB,MAAO,GAGjD,GAAI,CAACD,GAAmB,CAACF,EAAW,OAAOrwB,IAASowB,EACpD,IAAIK,EAAW,OAAO,KAAKzwB,CAAI,EAC3B0wB,EAAY,OAAO,KAAKN,CAAK,EACjC,GAAIK,EAAS,SAAWC,EAAU,OAAQ,MAAO,GAGjD,QAFIC,EAAS,CAAA,EAEJh1B,EAAI,EAAGA,EAAI80B,EAAS,OAAQ90B,GAAK,EACxCg1B,EAAOF,EAAS90B,CAAC,CAAC,EAAI,GAGxB,QAASwzB,EAAK,EAAGA,EAAKuB,EAAU,OAAQvB,GAAM,EAC5CwB,EAAOD,EAAUvB,CAAE,CAAC,EAAI,GAG1B,IAAIyB,EAAU,OAAO,KAAKD,CAAM,EAEhC,GAAIC,EAAQ,SAAWH,EAAS,OAC9B,MAAO,GAGT,IAAII,EAAI7wB,EACJwJ,EAAI4mB,EAEJU,EAAO,SAAc16B,EAAK,CAC5B,OAAO+5B,EAAQU,EAAEz6B,CAAG,EAAGoT,EAAEpT,CAAG,CAAC,CACjC,EAEE,OAAOw6B,EAAQ,MAAME,CAAI,CAC3B,EAEIC,GAA+B,SAAsC51B,EAAS61B,EAAaC,EAAe,CAC5G,OAAKlB,GAAgB50B,CAAO,EAIrB,OAAO,KAAKA,CAAO,EAAE,OAAO,SAAU+1B,EAAY96B,EAAK,CAC5D,IAAI+6B,EAAY,CAACpB,GAAgBiB,CAAW,GAAK,CAACb,GAAQh1B,EAAQ/E,CAAG,EAAG46B,EAAY56B,CAAG,CAAC,EAExF,OAAI66B,EAAc,SAAS76B,CAAG,GACxB+6B,GACF,QAAQ,KAAK,oCAAoC,OAAO/6B,EAAK,6BAA6B,CAAC,EAGtF86B,GAGJC,EAIEvC,GAAeA,GAAe,CAAE,EAAEsC,GAAc,CAAE,CAAA,EAAG,CAAA,EAAIn6B,GAAgB,CAAE,EAAEX,EAAK+E,EAAQ/E,CAAG,CAAC,CAAC,EAH7F86B,CAIV,EAAE,IAAI,EAnBE,IAoBX,EAEIE,GAAuB,qMAIvBC,GAAiB,SAAwBC,EAAa,CACxD,GAAIA,IAAgB,MAAQrB,GAASqB,CAAW,EAC9C,OAAOA,EAGT,MAAM,IAAI,MAAMF,EAAoB,CACtC,EAEIG,GAAkB,SAAyBnP,EAAK,CAClD,GAAI4N,GAAU5N,CAAG,EACf,MAAO,CACL,IAAK,QACL,cAAe,QAAQ,QAAQA,CAAG,EAAE,KAAKiP,EAAc,CAC7D,EAGE,IAAIG,EAASH,GAAejP,CAAG,EAE/B,OAAIoP,IAAW,KACN,CACL,IAAK,OACX,EAGS,CACL,IAAK,OACL,OAAQA,CACZ,CACA,EAEIC,GAA+B3B,EAAM,cAAc,IAAI,EAC3D2B,GAAgB,YAAc,kBAC9B,IAAIC,GAAuB,SAA8Bvf,EAAKwf,EAAS,CACrE,GAAI,CAACxf,EACH,MAAM,IAAI,MAAM,+EAA+E,OAAOwf,EAAS,6BAA6B,CAAC,EAG/I,OAAOxf,CACT,EACIyf,GAAkC9B,EAAM,cAAc,IAAI,EAC9D8B,GAAmB,YAAc,qBACjC,IAAIC,GAA0B,SAAiC1f,EAAKwf,EAAS,CAC3E,GAAI,CAACxf,EACH,MAAM,IAAI,MAAM,+EAA+E,OAAOwf,EAAS,6BAA6B,CAAC,EAG/I,OAAOxf,CACT,EAYI2f,GAAW,SAAkB1/B,EAAM,CACrC,IAAI2/B,EAAgB3/B,EAAK,OACrB+I,EAAU/I,EAAK,QACf4/B,EAAW5/B,EAAK,SAChB6/B,EAASnC,EAAM,QAAQ,UAAY,CACrC,OAAOyB,GAAgBQ,CAAa,CACxC,EAAK,CAACA,CAAa,CAAC,EAEdG,EAAkBpC,EAAM,SAAS,IAAI,EACrCqC,EAAmBrD,GAAeoD,EAAiB,CAAC,EACpDE,EAAOD,EAAiB,CAAC,EACzBE,EAAUF,EAAiB,CAAC,EAE5BG,EAAmBxC,EAAM,SAAS,IAAI,EACtCyC,EAAmBzD,GAAewD,EAAkB,CAAC,EACrDE,EAAYD,EAAiB,CAAC,EAC9BE,EAAeF,EAAiB,CAAC,EAGjCG,EAAmB5C,EAAM,SAAS,UAAY,CAChD,MAAO,CACL,OAAQmC,EAAO,MAAQ,OAASA,EAAO,OAAS,KAChD,SAAUA,EAAO,MAAQ,OAASA,EAAO,OAAO,SAAS92B,CAAO,EAAI,IAC1E,CACA,CAAG,EACGw3B,EAAmB7D,GAAe4D,EAAkB,CAAC,EACrDvgB,EAAMwgB,EAAiB,CAAC,EACxBC,EAAaD,EAAiB,CAAC,EAEnC7C,EAAM,UAAU,UAAY,CAC1B,IAAI+C,EAAY,GAEZC,EAAiB,SAAwBtB,EAAQ,CACnDoB,EAAW,SAAUzgB,EAAK,CAExB,OAAIA,EAAI,OAAeA,EAChB,CACL,OAAQqf,EACR,SAAUA,EAAO,SAASr2B,CAAO,CAC3C,CACA,CAAO,CACP,EAGI,OAAI82B,EAAO,MAAQ,SAAW,CAAC9f,EAAI,OACjC8f,EAAO,cAAc,KAAK,SAAUT,EAAQ,CACtCA,GAAUqB,GAIZC,EAAetB,CAAM,CAE/B,CAAO,EACQS,EAAO,MAAQ,QAAU,CAAC9f,EAAI,QAEvC2gB,EAAeb,EAAO,MAAM,EAGvB,UAAY,CACjBY,EAAY,EAClB,CACG,EAAE,CAACZ,EAAQ9f,EAAKhX,CAAO,CAAC,EAEzB,IAAI43B,EAAanD,GAAYmC,CAAa,EAC1CjC,EAAM,UAAU,UAAY,CACtBiD,IAAe,MAAQA,IAAehB,GACxC,QAAQ,KAAK,4FAA4F,CAE/G,EAAK,CAACgB,EAAYhB,CAAa,CAAC,EAE9B,IAAIf,EAAcpB,GAAYz0B,CAAO,EACrC,OAAA20B,EAAM,UAAU,UAAY,CAC1B,GAAK3d,EAAI,SAIT,KAAI6gB,EAAUjC,GAA6B51B,EAAS61B,EAAa,CAAC,eAAgB,OAAO,CAAC,EAEtFgC,GACF7gB,EAAI,SAAS,OAAO6gB,CAAO,EAE9B,EAAE,CAAC73B,EAAS61B,EAAa7e,EAAI,QAAQ,CAAC,EAEvC2d,EAAM,UAAU,UAAY,CAC1B,IAAImD,EAAY9gB,EAAI,OAEhB,CAAC8gB,GAAa,CAACA,EAAU,kBAAoB,CAACA,EAAU,kBAI5DA,EAAU,iBAAiB,CACzB,KAAM,kBACN,QAAS,QACf,CAAK,EAEDA,EAAU,gBAAgB,CACxB,KAAM,kBACN,QAAS,SACT,IAAK,yCACX,CAAK,EACL,EAAK,CAAC9gB,EAAI,MAAM,CAAC,EACK2d,EAAM,cAAc2B,GAAgB,SAAU,CAChE,MAAOtf,CACR,EAAe2d,EAAM,cAAc8B,GAAmB,SAAU,CAC/D,MAAO,CACL,KAAMQ,EACN,QAASC,EACT,UAAWG,EACX,aAAcC,CACf,CACL,EAAKT,CAAQ,CAAC,CACd,EACAF,GAAS,UAAY,CACnB,OAAQoB,GAAU,IAClB,QAASA,GAAU,MACrB,EACA,IAAIC,GAAgC,SAAuCC,EAAgB,CACzF,IAAIjhB,EAAM2d,EAAM,WAAW2B,EAAe,EAC1C,OAAOC,GAAqBvf,EAAKihB,CAAc,CACjD,EACIC,GAAmC,SAA0CD,EAAgB,CAC/F,IAAIjhB,EAAM2d,EAAM,WAAW8B,EAAkB,EAC7C,OAAOC,GAAwB1f,EAAKihB,CAAc,CACpD,EA6CIE,GAAmB,SAA0BC,EAAO,CACtD,IAAIvB,EAAWuB,EAAM,SACjBphB,EAAMghB,GAA8B,2BAA2B,EAEnE,OAAOnB,EAAS7f,CAAG,CACrB,EACAmhB,GAAiB,UAAY,CAC3B,SAAUJ,GAAU,KAAK,UAC3B,EAEA,IAAIM,GAAiB,SAAwB/P,EAASJ,EAAOoQ,EAAI,CAC/D,IAAIC,EAAY,CAAC,CAACD,EACdE,EAAQ7D,EAAM,OAAO2D,CAAE,EAG3B3D,EAAM,UAAU,UAAY,CAC1B6D,EAAM,QAAUF,CACpB,EAAK,CAACA,CAAE,CAAC,EACP3D,EAAM,UAAU,UAAY,CAC1B,GAAI,CAAC4D,GAAa,CAACjQ,EACjB,OAAO,UAAY,CAAA,EAGrB,IAAImQ,EAAc,UAAuB,CACnCD,EAAM,SACRA,EAAM,QAAQ,MAAMA,EAAO,SAAS,CAE5C,EAEI,OAAAlQ,EAAQ,GAAGJ,EAAOuQ,CAAW,EACtB,UAAY,CACjBnQ,EAAQ,IAAIJ,EAAOuQ,CAAW,CACpC,CACG,EAAE,CAACF,EAAWrQ,EAAOI,EAASkQ,CAAK,CAAC,CACvC,EAEIE,GAAc,SAAqBtS,EAAK,CAC1C,OAAOA,EAAI,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAI,MAAM,CAAC,CAClD,EAEIuS,GAAyB,SAAgCp0B,EAAMq0B,EAAU,CAC3E,IAAIC,EAAc,GAAG,OAAOH,GAAYn0B,CAAI,EAAG,SAAS,EAEpDu0B,EAAgB,SAAuB7hC,EAAM,CAC/C,IAAIkd,EAAKld,EAAK,GACV8hC,EAAY9hC,EAAK,UACjB+hC,EAAe/hC,EAAK,QACpB+I,EAAUg5B,IAAiB,OAAS,CAAE,EAAGA,EACzCC,EAAShiC,EAAK,OACdiiC,EAAUjiC,EAAK,QACfkiC,EAAUliC,EAAK,QACfmiC,EAAWniC,EAAK,SAChBoiC,EAAWpiC,EAAK,SAChBqiC,EAAUriC,EAAK,QACfsiC,EAActiC,EAAK,YACnBuiC,EAAgBviC,EAAK,cACrBwiC,EAAmBxiC,EAAK,iBACxByiC,EAAaziC,EAAK,WAClB0iC,EAAkB1iC,EAAK,gBACvB2iC,EAAY3iC,EAAK,UACjB4iC,EAAW5iC,EAAK,SAChB6iC,EAA0B7iC,EAAK,wBAC/B8iC,EAAuB9iC,EAAK,qBAE5B+iC,EAAwBhC,GAA8B,WAAW,OAAOa,EAAa,GAAG,CAAC,EACzFlQ,EAAWqR,EAAsB,SAEjCjD,EAAkBpC,EAAM,SAAS,IAAI,EACrCqC,GAAmBrD,GAAeoD,EAAiB,CAAC,EACpDzO,EAAU0O,GAAiB,CAAC,EAC5BiD,EAAajD,GAAiB,CAAC,EAE/BkD,EAAavF,EAAM,OAAO,IAAI,EAC9BwF,EAAUxF,EAAM,OAAO,IAAI,EAE3ByF,EAAwBlC,GAAiC,WAAW,OAAOW,EAAa,GAAG,CAAC,EAC5F3B,EAAUkD,EAAsB,QAChC9C,EAAe8C,EAAsB,aAKzC/B,GAAe/P,EAAS,OAAQ2Q,CAAM,EACtCZ,GAAe/P,EAAS,QAAS4Q,CAAO,EACxCb,GAAe/P,EAAS,SAAU+Q,CAAQ,EAC1ChB,GAAe/P,EAAS,QAASgR,CAAO,EACxCjB,GAAe/P,EAAS,YAAaiR,CAAW,EAChDlB,GAAe/P,EAAS,cAAekR,CAAa,EACpDnB,GAAe/P,EAAS,iBAAkBmR,CAAgB,EAC1DpB,GAAe/P,EAAS,gBAAiBqR,CAAe,EACxDtB,GAAe/P,EAAS,UAAWsR,CAAS,EAC5CvB,GAAe/P,EAAS,SAAUuR,CAAQ,EAC1CxB,GAAe/P,EAAS,wBAAyBwR,CAAuB,EACxEzB,GAAe/P,EAAS,qBAAsByR,CAAoB,EAClE,IAAIM,EAEA91B,IAAS,OACX81B,EAAgB,SAAuBnS,GAAO,CAC5CoP,EAAapP,EAAK,EAClBiR,GAAWA,EAAQjR,EAAK,CAChC,EACeiR,IACL50B,IAAS,YAEX81B,EAAgBlB,EAGhBkB,EAAgB,UAAyB,CACvClB,EAAQ7Q,CAAO,CACzB,GAII+P,GAAe/P,EAAS,QAAS+R,CAAa,EAC9C,IAAIC,EAAiB/1B,IAAS,OAAS,SAAU2jB,EAAO,CACtDoP,EAAapP,CAAK,EAClBkR,GAAYA,EAASlR,CAAK,CAC3B,EAAGkR,EACJf,GAAe/P,EAAS,SAAUgS,CAAc,EAChD,IAAIC,EAAmBh2B,IAAS,OAAS,SAAU2jB,EAAO,CACxDoP,EAAapP,CAAK,EAClBwR,GAAcA,EAAWxR,CAAK,CAC/B,EAAGwR,EACJrB,GAAe/P,EAAS,WAAYiS,CAAgB,EACpD5F,EAAM,gBAAgB,UAAY,CAChC,GAAIuF,EAAW,UAAY,MAAQvR,GAAYwR,EAAQ,UAAY,KAAM,CACvE,IAAIK,EAAa7R,EAAS,OAAOpkB,EAAMvE,CAAO,EAE1CuE,IAAS,QAAU2yB,GAGrBA,EAAQsD,CAAU,EAIpBN,EAAW,QAAUM,EAErBP,EAAWO,CAAU,EACrBA,EAAW,MAAML,EAAQ,OAAO,CACjC,CACF,EAAE,CAACxR,EAAU3oB,EAASk3B,CAAO,CAAC,EAC/B,IAAIrB,GAAcpB,GAAYz0B,CAAO,EACrC,OAAA20B,EAAM,UAAU,UAAY,CAC1B,GAAKuF,EAAW,QAIhB,KAAIrC,EAAUjC,GAA6B51B,EAAS61B,GAAa,CAAC,gBAAgB,CAAC,EAE/EgC,GACFqC,EAAW,QAAQ,OAAOrC,CAAO,EAEzC,EAAO,CAAC73B,EAAS61B,EAAW,CAAC,EACzBlB,EAAM,gBAAgB,UAAY,CAChC,OAAO,UAAY,CACbuF,EAAW,UACbA,EAAW,QAAQ,UACnBA,EAAW,QAAU,KAE/B,CACK,EAAE,CAAE,CAAA,EACevF,EAAM,cAAc,MAAO,CAC7C,GAAIxgB,EACJ,UAAW4kB,EACX,IAAKoB,CACX,CAAK,CACL,EAGMM,EAAgB,SAAuBlyB,EAAO,CAEhDyvB,GAA8B,WAAW,OAAOa,EAAa,GAAG,CAAC,EACjEX,GAAiC,WAAW,OAAOW,EAAa,GAAG,CAAC,EACpE,IAAI1kB,EAAK5L,EAAM,GACXwwB,EAAYxwB,EAAM,UACtB,OAAoBosB,EAAM,cAAc,MAAO,CAC7C,GAAIxgB,EACJ,UAAW4kB,CACjB,CAAK,CACL,EAEM2B,EAAU9B,EAAW6B,EAAgB3B,EACzC,OAAA4B,EAAQ,UAAY,CAClB,GAAI3C,GAAU,OACd,UAAWA,GAAU,OACrB,SAAUA,GAAU,KACpB,OAAQA,GAAU,KAClB,QAASA,GAAU,KACnB,QAASA,GAAU,KACnB,SAAUA,GAAU,KACpB,QAASA,GAAU,KACnB,YAAaA,GAAU,KACvB,cAAeA,GAAU,KACzB,iBAAkBA,GAAU,KAC5B,WAAYA,GAAU,KACtB,gBAAiBA,GAAU,KAC3B,UAAWA,GAAU,KACrB,SAAUA,GAAU,KACpB,wBAAyBA,GAAU,KACnC,qBAAsBA,GAAU,KAChC,QAASA,GAAU,MACvB,EACE2C,EAAQ,YAAc7B,EACtB6B,EAAQ,cAAgBn2B,EACjBm2B,CACT,EAEI9B,GAAW,OAAO,OAAW,IAQND,GAAuB,gBAAiBC,EAAQ,EAK3E,IAAI+B,GAAchC,GAAuB,OAAQC,EAAQ,EAKjCD,GAAuB,aAAcC,EAAQ,EAK7CD,GAAuB,aAAcC,EAAQ,EAKhDD,GAAuB,UAAWC,EAAQ,EAK1CD,GAAuB,UAAWC,EAAQ,EAK7CD,GAAuB,OAAQC,EAAQ,EAKlCD,GAAuB,YAAaC,EAAQ,EAK9CD,GAAuB,UAAWC,EAAQ,EAK1CD,GAAuB,UAAWC,EAAQ,EAC1CD,GAAuB,UAAWC,EAAQ,EAQxCD,GAAuB,YAAaC,EAAQ,EAKjCD,GAAuB,uBAAwBC,EAAQ,EAQzDD,GAAuB,qBAAsBC,EAAQ,EAKhED,GAAuB,UAAWC,EAAQ,EAQlCD,GAAuB,kBAAmBC,EAAQ,EAQ7DD,GAAuB,OAAQC,EAAQ,EAKrBD,GAAuB,yBAA0BC,EAAQ,EAKlED,GAAuB,gBAAiBC,EAAQ,EAKtCD,GAAuB,0BAA2BC,EAAQ,EC7uB/F,MAAMgC,GAAsB,CAC1B,KAAM,CACJ,SAAY,OACZ,MAAS,UACT,WAAc,8IAEd,gBAAiB,CACf,MAAO,SACT,CACF,EACA,QAAS,CACP,MAAO,SACT,CACF,EAEA,MAAMC,WAAuBpJ,EAAAA,SAAgC,CAKpD,YAAYlpB,EAAe,CAChC,MAAMA,CAAK,EAOb,KAAO,aAAe,SAAY,CAC1B,KAAA,CACJ,OAAA8tB,EACA,SAAA1N,EACA,gBAAAmS,CAAA,EACE,KAAK,MAEL,GAAA,CAACzE,GAAU,CAAC1N,EACR,MAAA,IAAI,MAAM,+BAA+B,EAG3C,MAAAoS,EAAcpS,EAAS,WAAWgS,EAAW,EAEnD,GAAI,CAACI,EACG,MAAA,IAAI,MAAM,gCAAgC,EAGlD,KAAK,SAAS,CAAE,OAAQ,EAAM,CAAA,EAE9B,KAAM,CAAE,MAAAC,CAAM,EAAI,MAAM3E,EAAO,YAAY0E,CAAW,EAEtD,GAAI,CAACC,EAAO,CACV,KAAK,SAAS,CAAE,OAAQ,EAAO,CAAA,EAC/B,MACF,CAEA,MAAM1R,EAAW,MAAMyG,GAAWkL,GAA0B,CAC1D,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAmB,EAC9C,KAAM,KAAK,UAAU,CACnB,YAAa,CAAE,MAAOD,EAAM,EAAG,CAAA,CAChC,CAAA,CACF,EAED,GAAI1R,EAAS,GACKwR,QACX,CACC,MAAAhL,EAAO,MAAMxG,EAAS,OACvB,KAAA,sBAAsBwG,EAAK,KAAK,CACvC,CAAA,EAGF,KAAO,aAAe,IAAM,CACpB,KAAA,CAAE,aAAA8B,CAAa,EAAI,KAAK,MAE1BA,GAA6BA,GAAE,EAlDnC,KAAK,MAAQ,CACX,OAAQ,EAAA,CAEZ,CAkDO,QAAS,CACd,KAAM,CAAE,aAAAA,EAAc,gBAAAsJ,GAAoB,KAAK,MACzC,CAAE,OAAAC,EAAQ,aAAAC,GAAiB,KAAK,MAClC,IAAAC,EAEJ,OAAID,IACFC,EACGtJ,EAAA,cAAA,MAAA,CAAI,UAAU,0BAAA,EACZqJ,CACH,GAKDrJ,EAAA,cAAA,MAAA,KACEA,EAAAA,cAAA,MAAA,CAAI,UAAU,YACb,EAAAA,EAAA,cAAC4I,GAAA,CACC,UAAU,eACV,QAAS,CACP,MAAOC,EACT,CAAA,CAAA,EAEDS,CACH,EACAtJ,EAAA,cAAC,SAAA,CACC,UAAU,kBACV,QAAS,KAAK,aACd,SAAUoJ,CAAA,EAETD,GAEF,IACDnJ,EAAA,cAAC,SAAA,CACC,UAAW,qBAAqBH,EAAe,GAAK,QAAQ,GAC5D,QAAS,KAAK,YAAA,EACf,QAAA,CAGH,CAEJ,CAEQ,sBAAsB3H,EAAe,CACrC,KAAA,CAAE,qBAAAqR,CAAqB,EAAI,KAAK,MAEtC,KAAK,SAAS,CACZ,aAAcrR,EACd,OAAQ,EAAA,CACT,EAEGqR,GACFA,EAAqBrR,CAAK,CAE9B,CACF,CAnHM4Q,GACU,aAAgC,CAC5C,gBAAiB,WACnB,EAkHF,MAAMU,GAAyBhzB,GAC5BwpB,EAAAA,cAAAoG,GAAA,KACE,CAAC,CAAC,OAAA9B,EAAQ,SAAA1N,CAAQ,oBAChBkS,GAAe,CAAA,OAAAxE,EAAgB,SAAA1N,EAAqB,GAAGpgB,EAAO,CAEnE,EC7IF,MAAMizB,WAAsB/J,EAAAA,SAAgC,CAQ1D,YAAYlpB,EAAe,CACzB,MAAMA,CAAK,EAQN,KAAA,aAAgB2f,GAA+C,CACpE,KAAK,SAAS,CAAE,MAAOA,EAAM,OAAO,MAAO,CAAA,EAGtC,KAAA,kBAAqBA,GAAgC,CAC1DA,EAAM,eAAe,EAChB,KAAA,SAAUkK,IAAe,CAAE,MAAO,CAACA,EAAU,KAAQ,EAAA,CAAA,EAZ1D,KAAK,MAAQ,CACX,MAAO7pB,EAAM,aACb,MAAOA,EAAM,cAAA,CAEjB,CAWO,QAAS,CACd,KAAM,CAAE,KAAAxL,EAAM,eAAA0+B,EAAgB,QAAAC,EAAS,GAAAvnB,GAAO,KAAK,MAC7C,CAAE,MAAA1X,EAAO,MAAAk/B,GAAU,KAAK,MACxBC,EAAoBF,EAAU,aAAe,GAGjD,OAAA3J,EAAA,cAAC,MAAI,CAAA,UAAU,aACb,EAAAA,EAAA,cAAC,QAAA,CACC,GAAA5d,EACA,KAAApX,EACA,UAAW,CAAC0+B,EAAgBG,CAAiB,EAAE,KAAK,GAAG,EACvD,KAAMD,EAAQ,OAAS,WACvB,MAAAl/B,EACA,SAAU,KAAK,YAAA,CACjB,EACCs1B,EAAA,cAAA,MAAA,CAAI,UAAU,oBAAA,kBACZ,IAAE,CAAA,KAAK,IAAI,UAAU,4BAA4B,QAAS,KAAK,iBAC9D,EAAAA,EAAA,cAAC,IAAE,CAAA,UAAW,MAAM4J,EAAQ,SAAW,cAAc,EAAA,CAAI,CAC3D,CACF,CACF,CAEJ,CACF,CAjDMH,GACU,aAAgC,CAC5C,eAAgB,eAChB,aAAc,GACd,eAAgB,GAChB,QAAS,EACX,EClBF,MAAMK,EAAW,CACf,aAAoB,OAA6B,CAKzC,MAAA/L,EAAO,MAJI,MAAMC,GAAW+L,GAAgB,CAChD,OAAQ,MACR,QAAS,CAAE,eAAgB,kBAAmB,CAAA,CAC/C,GAC2B,OAErB,OAAA,IAAID,GAAW/L,CAAI,CAC5B,CASA,YAAYG,EAAsB,CAChC,KAAK,WAAaA,EAAI,YACtB,KAAK,cAAgBA,EAAI,gBACpB,KAAA,MAAQA,EAAI,iBAAiB,MAC7B,KAAA,YAAcA,EAAI,iBAAiB,aACnC,KAAA,WAAaA,EAAI,iBAAiB,YAClC,KAAA,SAAWA,EAAI,iBAAiB,SACvC,CAEA,MAAa,SAA4B,CAMvC,OALiB,MAAMF,GAAW+L,GAAgB,CAChD,OAAQ,SACR,QAAS,CAAE,eAAgB,kBAAmB,CAAA,CAC/C,GAEe,EAClB,CACF,CCvCA,IAAIC,GAAS,2BACTC,GAAe,4CACfC,GAA0B,mJAC1BC,GAAa,UAAsB,CAGrC,QAFIC,EAAU,SAAS,iBAAiB,gBAAiB,OAAOJ,GAAQ,IAAK,CAAC,EAErEv7B,EAAI,EAAGA,EAAI27B,EAAQ,OAAQ37B,IAAK,CACvC,IAAI47B,EAASD,EAAQ37B,CAAC,EAEtB,GAAKw7B,GAAa,KAAKI,EAAO,GAAG,EAIjC,OAAOA,CACR,CAED,OAAO,IACT,EAEIC,GAAe,SAAsB79B,EAAQ,CAC/C,IAAI2yB,EAAc3yB,GAAU,CAACA,EAAO,qBAAuB,8BAAgC,GACvF49B,EAAS,SAAS,cAAc,QAAQ,EAC5CA,EAAO,IAAM,GAAG,OAAOL,EAAM,EAAE,OAAO5K,CAAW,EACjD,IAAImL,EAAa,SAAS,MAAQ,SAAS,KAE3C,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,6EAA6E,EAG/F,OAAAA,EAAW,YAAYF,CAAM,EACtBA,CACT,EAEIG,GAAkB,SAAyBlG,EAAQmG,EAAW,CAC5D,CAACnG,GAAU,CAACA,EAAO,kBAIvBA,EAAO,iBAAiB,CACtB,KAAM,YACN,QAAS,SACT,UAAWmG,CACf,CAAG,CACH,EAEIC,GAAgB,KAChBC,GAAa,SAAoBl+B,EAAQ,CAE3C,OAAIi+B,KAAkB,OAItBA,GAAgB,IAAI,QAAQ,SAAUpP,EAASC,EAAQ,CACrD,GAAI,OAAO,OAAW,KAAe,OAAO,SAAa,IAAa,CAGpED,EAAQ,IAAI,EACZ,MACD,CAMD,GAJI,OAAO,QAAU7uB,GACnB,QAAQ,KAAKy9B,EAAuB,EAGlC,OAAO,OAAQ,CACjB5O,EAAQ,OAAO,MAAM,EACrB,MACD,CAED,GAAI,CACF,IAAI+O,EAASF,KAETE,GAAU59B,EACZ,QAAQ,KAAKy9B,EAAuB,EAC1BG,IACVA,EAASC,GAAa79B,CAAM,GAG9B49B,EAAO,iBAAiB,OAAQ,UAAY,CACtC,OAAO,OACT/O,EAAQ,OAAO,MAAM,EAErBC,EAAO,IAAI,MAAM,yBAAyB,CAAC,CAErD,CAAO,EACD8O,EAAO,iBAAiB,QAAS,UAAY,CAC3C9O,EAAO,IAAI,MAAM,0BAA0B,CAAC,CACpD,CAAO,CACF,OAAQrD,EAAO,CACdqD,EAAOrD,CAAK,EACZ,MACD,CACL,CAAG,GACMwS,EACT,EACIE,GAAa,SAAoBxG,EAAa7tB,EAAMk0B,EAAW,CACjE,GAAIrG,IAAgB,KAClB,OAAO,KAGT,IAAIE,EAASF,EAAY,MAAM,OAAW7tB,CAAI,EAC9C,OAAAi0B,GAAgBlG,EAAQmG,CAAS,EAC1BnG,CACT,EAIIuG,GAAkB,QAAQ,QAAS,EAAC,KAAK,UAAY,CACvD,OAAOF,GAAW,IAAI,CACxB,CAAC,EACGG,GAAa,GACjBD,GAAgB,MAAS,SAAUtI,EAAK,CACjCuI,IACH,QAAQ,KAAKvI,CAAG,CAEpB,CAAC,EACD,IAAIwI,GAAa,UAAsB,CACrC,QAASzS,EAAO,UAAU,OAAQ/hB,EAAO,IAAI,MAAM+hB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EjiB,EAAKiiB,CAAI,EAAI,UAAUA,CAAI,EAG7BsS,GAAa,GACb,IAAIL,EAAY,KAAK,MACrB,OAAOI,GAAgB,KAAK,SAAUzG,EAAa,CACjD,OAAOwG,GAAWxG,EAAa7tB,EAAMk0B,CAAS,CAClD,CAAG,CACH,EC5HA,MAAAO,GAAA,OAAA,IAIMN,GAAgBK,GAAWC,GAAI,UAAU,cAAc,EAE7D,MAAMxB,WAA8B9J,EAAAA,SAA0C,CACrE,QAAS,CAEZ,OAAAM,gBAAC4E,IAAS,OAAQ8F,EAAA,kBACf5B,GAAgB,CAAA,GAAG,KAAK,KAAA,CAAO,CAClC,CAEJ,CACF,CCNA,MAAMmC,WAA2BvL,EAAAA,SAA4B,CACpD,YAAYlpB,EAAW,CAC5B,MAAMA,CAAK,EAWb,KAAO,WAAa,IAAM,CACnB,KAAA,SAAS,CAAC,CAAE,SAAA00B,CAAA,KAAgB,CAAE,SAAU,CAACA,CAAW,EAAA,CAAA,EAG3D,KAAO,gBAAkB,IAAM,CAC7B,OAAO,SAAS,QAAO,EAGzB,KAAO,WAAa,SAAY,CACxB,KAAA,CAAE,WAAAC,CAAW,EAAI,KAAK,MAExBA,GACE,MAAMA,EAAW,WACnB,OAAO,SAAS,QAEpB,EAxBA,KAAK,MAAQ,CACX,SAAU,EAAA,CAEd,CAEO,mBAAoB,CACzB,KAAK,gBAAgB,CACvB,CAoBO,YAAa,CAClB,uBACG,MAAI,CAAA,UAAU,KACb,EAAAnL,gBAAC,OAAI,UAAU,cAAA,EACZA,EAAAA,cAAAwJ,GAAA,CAAsB,gBAAiB,KAAK,gBAAiB,aAAc,KAAK,WAAY,CAC/F,CACF,CAEJ,CAEO,kBAAmB,CAClB,KAAA,CAAE,WAAA2B,CAAW,EAAI,KAAK,MAE5B,GAAI,CAACA,EACG,MAAA,IAAI,MAAM,iDAAiD,EAGnE,uBACG,MACC,KAAAnL,EAAAA,cAAC,OAAK,CAAA,UAAU,6BAA6B,EAC5CmL,EAAW,MAAM,cAAYA,EAAW,SAAS,YACxCA,EAAW,YAAY,IAAEA,EAAW,WAAW,IACzDnL,EAAAA,cAAC,UAAO,QAAS,KAAK,WAAY,UAAU,uBAAsB,aAElE,EACC,IACDA,EAAAA,cAAC,UAAO,QAAS,KAAK,WAAY,UAAU,+BAAA,EAAgC,aAE5E,CACF,CAEJ,CAEO,mBAAoB,CAEvB,OAAAA,EAAAA,cAAC,MAAI,KAAA,kBAEFA,EAAAA,cAAA,SAAA,CAAO,QAAS,KAAK,WAAY,UAAU,qBAAsB,EAAA,UAElE,CACF,CAEJ,CAEO,QAAS,CACd,KAAM,CAAE,SAAAkL,EAAU,WAAAC,GAAe,KAAK,MAEtC,OAAID,EACK,KAAK,aACHC,GAAcA,EAAW,cAC3B,KAAK,mBACHA,EACF,KAAK,oBAGVnL,gBAAC,WAAI,YAAU,CAGrB,CAEA,MAAc,gBAAgBoL,EAA6B,CACnD,MAAAD,EAAa,MAAMrB,GAAW,QAC9BuB,EAAcD,GAAY,GAEhC,KAAK,SAAS,CAAE,GAAGC,EAAa,WAAAF,CAAY,CAAA,CAC9C,CACF,+NC5FA,MAAMG,WAAoC5L,EAAAA,SAA4B,CAE7D,0BAA2B,CAChC,KAAM,CAAE,SAAAwB,EAAU,uBAAAqK,EAAwB,WAAAtM,CAAA,EAAe,KAAK,MAG5D,OAAAe,EAAA,cAACoB,GAAA,CACC,eAAgB,GAChB,cAAeF,EAAS,eAAe,CAAC,EACxC,gBAAiBqK,EACjB,wBAAyB,KAAK,cAAc,EAC5C,WAAAtM,CAAA,CAAA,CAGN,CAEO,mBAAoB,CACnB,KAAA,CAAE,gBAAA8J,CAAgB,EAAI,KAAK,MAEjC,uBACG,MACC,KAAA/I,gBAAC,SAAE,wEAEH,kBACC,MAAI,CAAA,UAAU,OACZA,gBAAA,MAAA,CAAI,UAAU,cACb,EAAAA,gBAACwJ,IAAsB,gBAAAT,EAAkC,CAC3D,CACF,CACF,CAEJ,CAEO,YAAa,CACd,OAAA,KAAK,qBACA,KAAK,2BAEL,KAAK,mBAEhB,CAEO,QAAS,CACR,KAAA,CAAE,OAAAyC,CAAO,EAAI,KAAK,MAExB,uBACG,MACC,KAAAxL,EAAA,cAAC,IACC,KAAAA,EAAAA,cAAC,cAAO,qBACYA,EAAAA,cAAC,OAAM,KAAAwL,EAAO,YAAY,MAAM,IAAE5N,GAAU,SAAU4N,EAAO,YAAY,KAAK,CAAE,EAAO,uBACtF,KAAK,gBAAkB,EAAA,IAAE5N,GAAU,SAAU,KAAK,gBAAgB,CAAC,EAAE,GAC1F,CACF,EAEC,KAAK,YACR,CAEJ,CAEQ,oBAA8B,CAC9B,KAAA,CAAE,SAAAsD,CAAS,EAAI,KAAK,MAEnB,MAAA,CAAC,CAACA,GAAYA,EAAS,aAChC,CAEQ,eAAwB,CACxB,KAAA,CAAE,OAAAsK,CAAO,EAAI,KAAK,MAExB,OAAOA,EAAO,YAAY,MAAQ,KAAK,gBAAgB,CACzD,CAEQ,iBAA0B,CAChC,KAAM,CAAE,OAAAA,EAAQ,SAAAtK,GAAa,KAAK,MAElC,OAAOA,EAAS,WAAWsK,EAAO,YAAY,iBAAiB,CACjE,CACF,CC5DA,MAAMC,WAA8B/L,EAAAA,SAAgC,CAC3D,YAAYlpB,EAAe,CAChC,MAAMA,CAAK,EAcb,KAAO,eAAiB,SAAY,CAC5B,KAAA,CAAE,uBAAA+0B,CAAuB,EAAI,KAAK,MAClC,CAAE,eAAAzL,EAAgB,UAAA4L,EAAW,aAAAC,CAAa,EAAI,KAAK,gBAEzD,GAAID,EAAa,OAEjB,MAAM,KAAK,SAAS,CAAE,UAAW,EAAM,CAAA,EAEjC,MAAApM,EAAW,MAAMQ,EAAe,WAElCR,EAAS,MAAM,KACMiM,IAEvB,KAAK,SAAS,CAAE,UAAW,GAAO,eAAgBjM,EAAU,EAGzDqM,GACH,KAAK,WAAW,CAClB,EAGK,KAAA,wBAA0B,MAAO1M,GAAuB,CAC7D,MAAM,KAAK,SAAS,CAAE,WAAAA,CAAY,CAAA,EAClC,MAAM,KAAK,sBAEL,KAAA,CAAE,eAAAa,CAAe,EAAI,KAAK,MAC5BA,GAAkBA,EAAe,OAAO,SAC1C,KAAK,iBAAiB,CACxB,EAGF,KAAO,mBAAqB,IAAM,CAC3B,KAAA,SAAUO,IAAe,CAAE,aAAc,CAACA,EAAU,YAAe,EAAA,CAAA,EAG1E,KAAO,iBAAmB,IAAM,CACzB,KAAA,SAAUA,IAAe,CAAE,eAAgB,CAACA,EAAU,cAAiB,EAAA,CAAA,EA+EvE,KAAA,wBAA2BlK,GAAgC,CAC1D,KAAA,CAAE,wBAAAyV,CAAwB,EAAI,KAAK,MAEzCzV,EAAM,eAAe,EACGyV,GAAA,EAGnB,KAAA,wBAA0B,MAAOzV,GAAgC,CACtEA,EAAM,eAAe,EACrB,MAAM,KAAK,aACX,OAAO,SAAS,QAAO,EAzIvB,KAAK,MAAQ,CACX,UAAW,GACX,aAAc,GACd,eAAgB,GAChB,WAAY3f,EAAM,UAAA,CAEtB,CAEO,mBAAoB,CACzB,KAAK,oBAAoB,CAC3B,CAyCO,sBAAuB,CAE1B,OAAAwpB,EAAA,cAAC,SAAA,CACC,UAAU,yBACV,QAAS,KAAK,cAAA,EAEb,KAAK,aAAa,CAAA,CAGzB,CAEO,cAAe,CACpB,KAAM,CAAE,eAAAF,EAAgB,UAAA4L,EAAW,aAAAC,CAAA,EAAiB,KAAK,MACnD,CAAE,SAAAzK,CAAS,EAAI,KAAK,MAEtB,MAAA,CAACpB,GAAkB4L,EACd1L,gBAAC,WAAI,YAAU,EAGpBkB,EAAS,eAAiBpB,EAAe,cAAc,OAAS,EAC3D,KAAK,uBAGTE,EAAA,cAAA,MAAA,CAAI,UAAU,KAAA,kBACZ,MAAI,CAAA,UAAU,cACb,EAAAA,EAAAA,cAAC,OAAI,UAAU,YAAA,EACZA,gBAAA,MAAA,CAAI,UAAU,8BACb,EAAAA,EAAA,cAAC,QAAA,CACC,GAAG,iBACH,KAAK,WACL,UAAU,uBACV,QAAS2L,EACT,SAAU,KAAK,kBAAA,CACjB,EACC3L,gBAAA,QAAA,CAAM,UAAU,uBAAuB,QAAQ,kBAAiB,kCAEjE,CACF,CACF,EAEAA,EAAA,cAACwJ,GAAA,CACC,gBAAiB,KAAK,eACtB,gBAAiB,KAAK,aAAa,CAAA,CAEvC,CAAA,CACF,CAGN,CAEO,kBAAmB,CACxB,KAAM,CAAE,eAAA5I,EAAgB,eAAAd,EAAgB,UAAA4L,CAAA,EAAc,KAAK,MAE3D,GAAI,GAAC9K,GAAkB,CAACd,GAAkB4L,GAGxC,OAAA1L,EAAA,cAAC,MAAI,CAAA,UAAU,MACb,EAAAA,EAAA,cAACP,GAAA,CACC,eAAAK,EACA,wBAAyB,KAAK,wBAC9B,aAAc,KAAK,gBAAA,CAAA,CAEvB,CAEJ,CAEO,oBAAqB,CACpB,KAAA,CAAE,eAAAA,CAAe,EAAI,KAAK,MAEhC,GAAKA,EAGH,OAAAE,gBAACC,IAAa,eAAAH,CAAgC,CAAA,CAElD,CAeO,aAAc,CACb,KAAA,CAAE,eAAAA,CAAe,EAAI,KAAK,MAChC,GAAI,CAACA,EAAkB,OAEjB,KAAA,CAAE,MAAA5H,CAAM,EAAI4H,EAAe,MACjC,GAAK5H,EAEL,uBACG,MAAI,CAAA,UAAU,sBAAqB,6FAETA,EAAM,mCAAiC,IAChE8H,EAAA,cAAC,IAAA,CACC,KAAK,IACL,QAAS,KAAK,uBAAA,EACf,+BAEG,GACN,CAEJ,CAEO,QAAS,CACd,uBACG,MACE,KAAA,KAAK,cACL,KAAK,aACL,EAAA,KAAK,mBAEL,EAAA,KAAK,mBAENA,EAAAA,cAAC,KAAE,UAAU,MAAA,EAAO,+CAC2B,IAC7CA,EAAA,cAAC,IAAA,CACC,KAAK,IACL,QAAS,KAAK,uBAAA,EACf,sCAAA,EAEG,GACN,EAEAA,EAAA,cAAC,KAAE,UAAU,OAAO,MAAO,CAAE,QAAS,KAAK,eAAA,EAAmB,QAAU,MACtE,CAAA,EAAAA,EAAA,cAAC,IAAA,CACC,KAAK,IACL,QAAS,KAAK,gBAAA,EACf,oBAGH,CAAA,CACF,CAEJ,CAEQ,cAAe,CACrB,KAAM,CAAE,eAAAF,CAAA,EAAmB,KAAK,cAAc,EAE9C,OACGE,EAAAA,cAAA,OAAA,KAAK,uBACiBF,EAAe,cAAc,SACpD,CAEJ,CAEQ,eAA8C,CAC9C,KAAA,CAAE,eAAAA,CAAe,EAAI,KAAK,MAEhC,GAAI,CAACA,EAAwB,MAAA,IAAI,MAAM,0CAA0C,EAEjF,MAAO,CAAE,GAAG,KAAK,MAAO,eAAAA,CAAe,CACzC,CAEQ,gBAA0B,CAChC,KAAM,CAAE,eAAAA,EAAgB,eAAAc,GAAmB,KAAK,MAEhD,MAAO,EACLA,GACGd,GAAkBA,EAAe,OAAO,QAE/C,CAEA,MAAc,qBAAsB,CAC5B,KAAA,CAAE,OAAA0L,CAAO,EAAI,KAAK,MAClB,CAAE,WAAAvM,CAAW,EAAI,KAAK,MACtBa,EAAiB,MAAMhB,GAAe,SAC1C0M,EAAO,YAAY,kBACnBA,EAAO,YAAY,MACnBvM,CAAA,EAGG,KAAA,SAAS,CAAE,eAAAa,CAAA,CAAgB,CAClC,CAEA,MAAc,YAAa,EACN,MAAMgK,GAAW,SACzB,QAAQ,CACrB,CACF,CC1PA,MAAM+B,WAAkCnM,EAAAA,SAAgC,CAC/D,YAAYlpB,EAAe,CAChC,MAAMA,CAAK,EA6Cb,KAAO,8BAAgC,IAAM,CACtC,KAAA,SAAU6pB,IAAe,CAAE,wBAAyB,CAACA,EAAU,uBAA0B,EAAA,CAAA,EA5C9F,KAAK,MAAQ,CACX,wBAAyB,EAAA,CAE7B,CAEO,0BAA2B,CAC1B,KAAA,CAAE,qBAAAyL,CAAqB,EAAI,KAAK,MAGpC,OAAA9L,EAAA,cAAC,MACC,KAAAA,EAAA,cAAC,IAAE,KAAA,6BACU,OAAK,KAAA,MAAI,EAAO,UAC7B,EACAA,EAAA,cAAC,SAAA,CACC,QAAS8L,EACT,UAAU,wBAAA,EACX,iBAAA,CAGL,CAEF,CAEO,sBAAuB,CAC5B,KAAM,CAAE,qBAAAA,EAAsB,OAAAN,GAAW,KAAK,MACxC,CAAE,YAAAO,CAAgB,EAAAP,EAExB,OACGxL,EAAA,cAAA,MAAA,KACEA,EAAA,cAAA,IAAA,KAAE,qBACiBA,EAAA,cAAC,OAAM,KAAA+L,EAAY,MAAM,IAAEnO,GAAU,SAAUmO,EAAY,KAAK,CAAE,EAAO,kBAC7E,KAAK,gBAAgB,EAAE,IAAEnO,GAAU,SAAU,KAAK,gBAAiB,CAAA,EAAE,GACrF,EACAoC,EAAA,cAAC,SAAA,CACC,QAAS8L,EACT,UAAU,wBAAA,EACX,wBACuBC,EAAY,MAAM,IAAEnO,GAAU,SAAUmO,EAAY,KAAK,CAAA,CAErF,CAEF,CAMO,eAAgB,CACrB,KAAM,CAAE,SAAA7K,EAAU,OAAAsK,EAAQ,WAAAvM,EAAY,sBAAA+M,EAAuB,qBAAAF,GAAyB,KAAK,MAEvF,OAAA,KAAK,oBACHN,EAAO,YAAY,QAAU,EACxB,KAAK,2BAEL,KAAK,uBAELtK,EACL,KAAK,qBAELlB,EAAA,cAACsL,GAAA,CACC,gBAAiBU,EACjB,uBAAwBF,EACxB,SAAA5K,EACA,OAAAsK,EACA,WAAAvM,CAAA,CAAA,EAKFe,EAAA,cAACyL,GAAA,CACC,uBAAwBK,EACxB,wBAAyB,KAAK,8BAC9B,SAAA5K,EACA,OAAAsK,EACA,WAAAvM,CAAA,CAAA,EAKCe,gBAAC,WAAI,YAAU,CAE1B,CAEO,QAAS,CACR,KAAA,CAAE,OAAAwL,CAAO,EAAI,KAAK,MAExB,uBACG,MACC,KAAAxL,EAAA,cAAC,MAAG,UAAU,MAAA,EAAO,kCACawL,EAAO,cAAc,IAAE5N,GAAU,WAAY4N,EAAO,aAAa,CACnG,EAEC,KAAK,eACR,CAEJ,CAEQ,oBAA8B,CAC9B,KAAA,CAAE,SAAAtK,CAAS,EAAI,KAAK,MACpB,CAAE,wBAAA+K,CAAwB,EAAI,KAAK,MAEzC,OAAOA,GAA2B,CAAC,CAAC/K,GAAY,KAAK,gBAAoB,EAAA,CAC3E,CAEQ,mBAA6B,CACnC,KAAM,CAAE,SAAAA,EAAU,OAAAsK,GAAW,KAAK,MAC5B,CAAE,YAAAO,CAAgB,EAAAP,EAExB,OAAO,KAAK,cAAA,GAAmB,GAC7B,CAAC,CAACtK,GACFA,EAAS,qBAAqB6K,EAAY,kBAAmBA,EAAY,KAAK,CAElF,CAEQ,eAAwB,CACxB,KAAA,CAAE,OAAAP,CAAO,EAAI,KAAK,MAExB,OAAOA,EAAO,YAAY,MAAQ,KAAK,gBAAgB,CACzD,CAEQ,iBAA0B,CAChC,KAAM,CAAE,OAAAA,EAAQ,SAAAtK,GAAa,KAAK,MAElC,OAAOA,EAAWA,EAAS,WAAWsK,EAAO,YAAY,iBAAiB,EAAI,CAChF,CACF,CC7IA,MAAMU,WAA4BxM,EAAAA,SAA4B,CACrD,QAAS,CACR,KAAA,CAAE,OAAA8L,CAAO,EAAI,KAAK,MAClB,CAAE,KAAMW,GAAcX,EAAO,cAE7BY,EAAiB,OAAO,KAAKD,CAAS,EAAE,IAAKE,GAAc,CACzD,MAAA5N,EAAS0N,EAAUE,CAAoC,EAE7D,uBACG,MAAI,CAAA,IAAK,aAAaA,CAAS,IAC7BrM,EAAAA,cAAA,MAAA,CAAI,UAAU,oBAAA,EAAqB,QAC5BqM,EAAU,IAAE5N,EAAO,KAAK,IAAI,CACpC,CACF,CAAA,CAEH,EAED,OACGuB,EAAAA,cAAA,MAAA,KACEA,EAAA,cAAA,KAAA,KAAG,qCAAmC,EACtCA,EAAAA,cAAA,IAAA,KAAE,kHAGH,EACCA,EAAAA,cAAA,MAAA,KACEoM,CACH,EAEApM,EAAA,cAAC,IAAA,CACC,KAAK,QACL,UAAU,iBAAA,EACX,0BAAA,CAGH,CAEJ,CACF,mCC5CC,UAAW,CACV,IAAIp5B,EAAU,MAEb,UAAW,EACT,UAAW,CACV,IAAI0lC,EAAQ,CAAE,EAAC,MAEf,KAAK,YAAc,CACjB,SAAU,CACR,cAAiB,CACf,QAAW,UACX,KAAQ,OACR,aAAgB,uBAChB,UAAa,qBACd,EACD,mBAAsB,SACtB,UAAa,CAAC,sBAAuB,yBAAyB,CAC/D,EACD,UAAW,OAAO,UAClB,OAAQ,OAAO,QACf,eAAgB,SAAShV,EAAK,CAC5B,IAAIqL,EACJ,OAAIrL,GAAO,OACTA,GAAOqL,EAAM,KAAK,UAAU,KAAK,IAAM,KAAOA,EAAM,KAAK,SAAS,oBAE7D,IAAI4J,EAAY,SAAS,KAAK,mBAAmBjV,CAAG,CAAC,CAC7D,EACD,UAAW,SAAStsB,EAAM,CACxB,IAAIurB,EACJ,OAAAA,EAAU,SAAS,KAAK,cAAc,2BAA6BvrB,EAAO,IAAI,EACvEurB,GAAW,KAAOA,EAAQ,aAAa,SAAS,EAAI,MAC5D,EACD,mBAAoB,SAASe,EAAK,CAChC,IAAI3nB,EACJ,OAAI2nB,GAAO,CAAC,UAAU,KAAKA,CAAG,GAC5B3nB,EAAI,SAAS,cAAc,GAAG,EAC9BA,EAAE,KAAO2nB,EACT3nB,EAAE,KAAOA,EAAE,KACXA,EAAE,SAAWA,EAAE,SAAS,QAAQ,OAAQ,IAAI,EACrCA,EAAE,MAEF2nB,CAEV,EACD,eAAgB,UAAW,CACzB,OAAO,KAAK,UAAY,EACzB,EACD,cAAe,UAAW,CACxB,OAAO,KAAK,UAAY,IACzB,EACD,IAAK,UAAW,CACd,IAAIiB,EAAUoK,EAEd,GADApK,EAAW,GAAK,UAAU,OAAS+T,EAAM,KAAK,UAAW,CAAC,EAAI,GAC1D,KAAK,UACP,OAAA/T,EAAS,KAAK,KAAK,IAAK,CAAA,GAChBoK,EAAM,KAAK,QAAQ,IAAI,MAAMA,EAAK,CAAC,eAAe,EAAE,OAAO2J,EAAM,KAAK/T,CAAQ,CAAC,CAAC,CAE3F,CACT,CAEA,GAAO,KAAK,IAAI,CAChB,GAAK,KAAK3xB,CAAO,EAEf,IAAI2lC,EAAc3lC,EAAQ,aAEzB,UAAW,EACT,UAAW,CACV,IAAI4lC,EAAO,SAAS3Z,EAAI4Z,EAAG,CAAE,OAAO,UAAU,CAAE,OAAO5Z,EAAG,MAAM4Z,EAAI,SAAS,CAAE,CAAG,EAElFF,EAAY,kBAAqB,UAAW,CAC1C,IAAI1Y,EAAO6Y,EAAKC,EAEhBC,EAAkB,aAAe,CAC/B,IAAK,EACL,IAAK,EACf,EAEQA,EAAkB,eAAiB,EAEnC,SAASA,EAAkBC,EAAY,CACrC,KAAK,WAAaA,EAClB,KAAK,oBAAsBL,EAAK,KAAK,oBAAqB,IAAI,EAC9D,KAAK,kBAAoB,CAC1B,CAED,OAAAI,EAAkB,UAAU,MAAQ,UAAW,CAC7C,GAAI,CAAC,KAAK,YACR,YAAK,UAAYF,IACjB,OAAO,KAAK,UACZ,KAAK,aAAY,EACjB,SAAS,iBAAiB,mBAAoB,KAAK,mBAAmB,EAC/DH,EAAY,IAAI,6CAAgD,KAAK,gBAAiB,EAAI,KAAK,CAElH,EAEQK,EAAkB,UAAU,KAAO,UAAW,CAC5C,GAAI,KAAK,YACP,YAAK,UAAYF,IACjB,KAAK,YAAW,EAChB,SAAS,oBAAoB,mBAAoB,KAAK,mBAAmB,EAClEH,EAAY,IAAI,2BAA2B,CAE9D,EAEQK,EAAkB,UAAU,UAAY,UAAW,CACjD,OAAQ,KAAK,WAAa,MAAU,KAAK,WAAa,IAChE,EAEQA,EAAkB,UAAU,WAAa,UAAW,CAClD,OAAO,KAAK,SAAWF,GACjC,EAEQE,EAAkB,UAAU,cAAgB,UAAW,CACrD,YAAK,kBAAoB,EACzB,KAAK,WAAU,EACf,OAAO,KAAK,eACLL,EAAY,IAAI,oCAAoC,CACrE,EAEQK,EAAkB,UAAU,iBAAmB,UAAW,CACxD,YAAK,eAAiBF,IACfH,EAAY,IAAI,uCAAuC,CACxE,EAEQK,EAAkB,UAAU,aAAe,UAAW,CACpD,YAAK,YAAW,EACT,KAAK,MACtB,EAEQA,EAAkB,UAAU,YAAc,UAAW,CACnD,OAAO,aAAa,KAAK,WAAW,CAC9C,EAEQA,EAAkB,UAAU,KAAO,UAAW,CAC5C,OAAO,KAAK,YAAc,WAAY,SAAS1W,EAAO,CACpD,OAAO,UAAW,CAChB,OAAAA,EAAM,iBAAgB,EACfA,EAAM,MAC3B,CACW,EAAE,IAAI,EAAG,KAAK,gBAAiB,CAAA,CAC1C,EAEQ0W,EAAkB,UAAU,gBAAkB,UAAW,CACvD,IAAIE,EAAUC,EAAKC,EAAKrK,EACxB,OAAAA,EAAM,KAAK,YAAY,aAAcqK,EAAMrK,EAAI,IAAKoK,EAAMpK,EAAI,IAC9DmK,EAAW,EAAI,KAAK,IAAI,KAAK,kBAAoB,CAAC,EAC3C,KAAK,MAAMjZ,EAAMiZ,EAAUE,EAAKD,CAAG,EAAI,GAAI,CAC5D,EAEQH,EAAkB,UAAU,iBAAmB,UAAW,CACxD,GAAI,KAAK,oBAGP,OAFAL,EAAY,IAAI,oEAAsE,KAAK,kBAAoB,oBAAuB,KAAK,gBAAe,EAAM,4BAA+BI,EAAa,KAAK,cAAc,EAAK,yBAA2B,KAAK,YAAY,eAAiB,IAAI,EACrS,KAAK,oBACD,KAAK,uBACAJ,EAAY,IAAI,wDAAwD,GAE/EA,EAAY,IAAI,6BAA6B,EACtC,KAAK,WAAW,SAGrC,EAEQK,EAAkB,UAAU,kBAAoB,UAAW,CACzD,IAAIjK,EACJ,OAAOgK,GAAchK,EAAM,KAAK,WAAa,KAAOA,EAAM,KAAK,SAAS,EAAI,KAAK,YAAY,cACvG,EAEQiK,EAAkB,UAAU,qBAAuB,UAAW,CAC5D,OAAO,KAAK,gBAAkBD,EAAa,KAAK,cAAc,EAAI,KAAK,YAAY,cAC7F,EAEQC,EAAkB,UAAU,oBAAsB,UAAW,CAC3D,GAAI,SAAS,kBAAoB,UAC/B,OAAO,WAAY,SAAS1W,EAAO,CACjC,OAAO,UAAW,CAChB,GAAIA,EAAM,kBAAmB,GAAI,CAACA,EAAM,WAAW,SACjD,OAAAqW,EAAY,IAAI,sFAAwF,SAAS,eAAe,EACzHrW,EAAM,WAAW,QAE1C,CACA,EAAe,IAAI,EAAG,GAAG,CAEzB,EAEQwW,EAAM,UAAW,CACf,OAAO,IAAI,OAAO,SAC5B,EAEQC,EAAe,SAASM,EAAM,CAC5B,OAAQP,EAAG,EAAKO,GAAQ,GAClC,EAEQpZ,EAAQ,SAAS/M,EAAQkmB,EAAKD,EAAK,CACjC,OAAO,KAAK,IAAIC,EAAK,KAAK,IAAID,EAAKjmB,CAAM,CAAC,CACpD,EAEe8lB,CAEf,GAEA,GAAO,KAAK,IAAI,GACX,UAAW,CACV,IAAIn+B,EAAGy+B,EAAeC,EAAWxK,EAAKyK,EACpCd,EAAQ,CAAA,EAAG,MACXE,EAAO,SAAS3Z,EAAI4Z,EAAG,CAAE,OAAO,UAAU,CAAE,OAAO5Z,EAAG,MAAM4Z,EAAI,SAAS,CAAE,CAAG,EAC9EY,EAAU,CAAE,EAAC,SAAW,SAASC,EAAM,CAAE,QAAS7+B,EAAI,EAAGk1B,EAAI,KAAK,OAAQl1B,EAAIk1B,EAAGl1B,IAAO,GAAIA,KAAK,MAAQ,KAAKA,CAAC,IAAM6+B,EAAM,OAAO7+B,EAAK,MAAO,EAAM,EAEtJk0B,EAAM4J,EAAY,SAAUW,EAAgBvK,EAAI,cAAewK,EAAYxK,EAAI,UAE/EyK,EAAqB,GAAKD,EAAU,OAASb,EAAM,KAAKa,EAAW,EAAG1+B,EAAI0+B,EAAU,OAAS,CAAC,GAAK1+B,EAAI,EAAG,CAAA,GAA2B0+B,EAAU1+B,GAAG,EAElJ89B,EAAY,WAAc,UAAW,CACnCgB,EAAW,YAAc,IAEzB,SAASA,EAAWC,EAAU,CAC5B,KAAK,SAAWA,EAChB,KAAK,KAAOhB,EAAK,KAAK,KAAM,IAAI,EAChC,KAAK,cAAgB,KAAK,SAAS,cACnC,KAAK,QAAU,IAAID,EAAY,kBAAkB,IAAI,EACrD,KAAK,aAAe,EACrB,CAED,OAAAgB,EAAW,UAAU,KAAO,SAAStmC,EAAM,CACzC,OAAI,KAAK,UACP,KAAK,UAAU,KAAK,KAAK,UAAUA,CAAI,CAAC,EACjC,IAEA,EAEnB,EAEQsmC,EAAW,UAAU,KAAO,UAAW,CACrC,OAAI,KAAK,YACPhB,EAAY,IAAI,uDAA0D,KAAK,SAAQ,CAAG,EACnF,KAEPA,EAAY,IAAI,uCAA0C,KAAK,SAAQ,EAAM,mBAAqBY,CAAS,EACvG,KAAK,WAAa,MACpB,KAAK,uBAAsB,EAE7B,KAAK,UAAY,IAAIZ,EAAY,UAAU,KAAK,SAAS,IAAKY,CAAS,EACvE,KAAK,qBAAoB,EACzB,KAAK,QAAQ,QACN,GAEnB,EAEQI,EAAW,UAAU,MAAQ,SAASE,EAAK,CACzC,IAAIC,EAAgBC,EAOpB,GANAD,GAAkBD,GAAoB,CACpC,eAAgB,EACjB,GAAE,eACEC,GACH,KAAK,QAAQ,OAEX,KAAK,WACP,OAAQC,EAAO,KAAK,YAAc,KAAOA,EAAK,QAAU,MAEpE,EAEQJ,EAAW,UAAU,OAAS,UAAW,CACvC,IAAIrV,EAEJ,GADAqU,EAAY,IAAI,yCAA4C,KAAK,SAAQ,CAAG,EACxE,KAAK,WACP,GAAI,CACF,OAAO,KAAK,OACb,OAAQqB,EAAQ,CACf,OAAA1V,EAAQ0V,EACDrB,EAAY,IAAI,6BAA8BrU,CAAK,CACxE,QAAsB,CACRqU,EAAY,IAAI,0BAA4B,KAAK,YAAY,YAAc,IAAI,EAC/E,WAAW,KAAK,KAAM,KAAK,YAAY,WAAW,CACnD,KAED,QAAO,KAAK,MAExB,EAEQgB,EAAW,UAAU,YAAc,UAAW,CAC5C,IAAII,EACJ,OAAQA,EAAO,KAAK,YAAc,KAAOA,EAAK,SAAW,MACnE,EAEQJ,EAAW,UAAU,OAAS,UAAW,CACvC,OAAO,KAAK,QAAQ,MAAM,CACpC,EAEQA,EAAW,UAAU,SAAW,UAAW,CACzC,OAAO,KAAK,QAAQ,OAAQ,YAAY,CAClD,EAEQA,EAAW,UAAU,oBAAsB,UAAW,CACpD,IAAII,EACJ,OAAOA,EAAO,KAAK,cAAeN,EAAQ,KAAKD,EAAoBO,CAAI,GAAK,CACtF,EAEQJ,EAAW,UAAU,QAAU,UAAW,CACxC,IAAII,EAAMjP,EACV,OAAAA,EAAS,GAAK,UAAU,OAAS4N,EAAM,KAAK,UAAW,CAAC,EAAI,GACrDqB,EAAO,KAAK,WAAYN,EAAQ,KAAK3O,EAAQiP,CAAI,GAAK,CACvE,EAEQJ,EAAW,UAAU,SAAW,UAAW,CACzC,IAAII,EAAMpa,EAAO7oB,EACjB,IAAK6oB,KAAS,UAEZ,GADA7oB,EAAQ,UAAU6oB,CAAK,EACnB7oB,MAAYijC,EAAO,KAAK,YAAc,KAAOA,EAAK,WAAa,QACjE,OAAOpa,EAAM,cAGjB,OAAO,IACjB,EAEQga,EAAW,UAAU,qBAAuB,UAAW,CACrD,IAAIM,EAAWC,EACf,IAAKD,KAAa,KAAK,OACrBC,EAAU,KAAK,OAAOD,CAAS,EAAE,KAAK,IAAI,EAC1C,KAAK,UAAU,KAAOA,CAAS,EAAIC,CAE/C,EAEQP,EAAW,UAAU,uBAAyB,UAAW,CACvD,IAAIM,EACJ,IAAKA,KAAa,KAAK,OACrB,KAAK,UAAU,KAAOA,CAAS,EAAI,UAAW,CAAA,CAE1D,EAEQN,EAAW,UAAU,OAAS,CAC5B,QAAS,SAASpX,EAAO,CACvB,IAAI4X,EAAYzQ,EAASqQ,EAAMn7B,EAC/B,GAAK,KAAK,sBAIV,OADAm7B,EAAO,KAAK,MAAMxX,EAAM,IAAI,EAAG4X,EAAaJ,EAAK,WAAYrQ,EAAUqQ,EAAK,QAASn7B,EAAOm7B,EAAK,KACzFn7B,EAAI,CACV,KAAK06B,EAAc,QACjB,YAAK,QAAQ,gBACN,KAAK,cAAc,SAC5B,KAAKA,EAAc,KACjB,OAAO,KAAK,QAAQ,aACtB,KAAKA,EAAc,aACjB,OAAO,KAAK,cAAc,OAAOa,EAAY,WAAW,EAC1D,KAAKb,EAAc,UACjB,OAAO,KAAK,cAAc,OAAOa,CAAU,EAC7C,QACE,OAAO,KAAK,cAAc,OAAOA,EAAY,WAAYzQ,CAAO,CACnE,CACF,EACD,KAAM,UAAW,CAGf,GAFAiP,EAAY,IAAI,kCAAqC,KAAK,YAAa,EAAI,eAAe,EAC1F,KAAK,aAAe,GAChB,CAAC,KAAK,sBACR,OAAAA,EAAY,IAAI,8DAA8D,EACvE,KAAK,MAAM,CAChB,eAAgB,EAChC,CAAe,CAEJ,EACD,MAAO,SAASpW,EAAO,CAErB,GADAoW,EAAY,IAAI,yBAAyB,EACrC,MAAK,aAGT,YAAK,aAAe,GACpB,KAAK,QAAQ,mBACN,KAAK,cAAc,UAAU,eAAgB,CAClD,qBAAsB,KAAK,QAAQ,UAAW,CAC5D,CAAa,CACF,EACD,MAAO,UAAW,CAChB,OAAOA,EAAY,IAAI,yBAAyB,CACjD,CACX,EAEegB,CAEf,GAEA,GAAO,KAAK,IAAI,GACX,UAAW,CACV,IAAIjB,EAAQ,CAAE,EAAC,MAEfC,EAAY,cAAiB,UAAW,CACtC,SAASyB,EAAcR,EAAU,CAC/B,KAAK,SAAWA,EAChB,KAAK,cAAgB,EACtB,CAED,OAAAQ,EAAc,UAAU,OAAS,SAASC,EAAaC,EAAO,CAC5D,IAAIC,EAAS1hC,EAAQ2hC,EACrB,OAAAD,EAAUF,EACVxhC,EAAS,OAAO0hC,GAAY,SAAWA,EAAU,CAC/C,QAASA,CACrB,EACUC,EAAe,IAAI7B,EAAY,aAAa,KAAK,SAAU9/B,EAAQyhC,CAAK,EACjE,KAAK,IAAIE,CAAY,CACtC,EAEQJ,EAAc,UAAU,IAAM,SAASI,EAAc,CACnD,YAAK,cAAc,KAAKA,CAAY,EACpC,KAAK,SAAS,yBACd,KAAK,OAAOA,EAAc,aAAa,EACvC,KAAK,YAAYA,EAAc,WAAW,EACnCA,CACjB,EAEQJ,EAAc,UAAU,OAAS,SAASI,EAAc,CACtD,YAAK,OAAOA,CAAY,EACnB,KAAK,QAAQA,EAAa,UAAU,EAAE,QACzC,KAAK,YAAYA,EAAc,aAAa,EAEvCA,CACjB,EAEQJ,EAAc,UAAU,OAAS,SAASD,EAAY,CACpD,IAAIt/B,EAAG8L,EAAKooB,EAAK0L,EAASD,EAG1B,IAFAzL,EAAM,KAAK,QAAQoL,CAAU,EAC7BM,EAAU,CAAA,EACL5/B,EAAI,EAAG8L,EAAMooB,EAAI,OAAQl0B,EAAI8L,EAAK9L,IACrC2/B,EAAezL,EAAIl0B,CAAC,EACpB,KAAK,OAAO2/B,CAAY,EACxB,KAAK,OAAOA,EAAc,UAAU,EACpCC,EAAQ,KAAKD,CAAY,EAE3B,OAAOC,CACjB,EAEQL,EAAc,UAAU,OAAS,SAASI,EAAc,CACtD,IAAI,EACJ,YAAK,eAAiB,UAAW,CAC/B,IAAI3/B,EAAG8L,EAAKooB,EAAK0L,EAGjB,IAFA1L,EAAM,KAAK,cACX0L,EAAU,CAAA,EACL5/B,EAAI,EAAG8L,EAAMooB,EAAI,OAAQl0B,EAAI8L,EAAK9L,IACrC,EAAIk0B,EAAIl0B,CAAC,EACL,IAAM2/B,GACRC,EAAQ,KAAK,CAAC,EAGlB,OAAOA,CACnB,GAAa,KAAK,IAAI,EACLD,CACjB,EAEQJ,EAAc,UAAU,QAAU,SAASD,EAAY,CACrD,IAAIt/B,EAAG8L,EAAKooB,EAAK0L,EAAS5nB,EAG1B,IAFAkc,EAAM,KAAK,cACX0L,EAAU,CAAA,EACL5/B,EAAI,EAAG8L,EAAMooB,EAAI,OAAQl0B,EAAI8L,EAAK9L,IACrCgY,EAAIkc,EAAIl0B,CAAC,EACLgY,EAAE,aAAesnB,GACnBM,EAAQ,KAAK5nB,CAAC,EAGlB,OAAO4nB,CACjB,EAEQL,EAAc,UAAU,OAAS,UAAW,CAC1C,IAAIv/B,EAAG8L,EAAKooB,EAAK0L,EAASD,EAG1B,IAFAzL,EAAM,KAAK,cACX0L,EAAU,CAAA,EACL5/B,EAAI,EAAG8L,EAAMooB,EAAI,OAAQl0B,EAAI8L,EAAK9L,IACrC2/B,EAAezL,EAAIl0B,CAAC,EACpB4/B,EAAQ,KAAK,KAAK,YAAYD,EAAc,WAAW,CAAC,EAE1D,OAAOC,CACjB,EAEQL,EAAc,UAAU,UAAY,UAAW,CAC7C,IAAIz3B,EAAM+3B,EAAc7/B,EAAG8L,EAAKooB,EAAK0L,EAASD,EAI9C,IAHAE,EAAe,UAAU,CAAC,EAAG/3B,EAAO,GAAK,UAAU,OAAS+1B,EAAM,KAAK,UAAW,CAAC,EAAI,CAAA,EACvF3J,EAAM,KAAK,cACX0L,EAAU,CAAA,EACL5/B,EAAI,EAAG8L,EAAMooB,EAAI,OAAQl0B,EAAI8L,EAAK9L,IACrC2/B,EAAezL,EAAIl0B,CAAC,EACpB4/B,EAAQ,KAAK,KAAK,OAAO,MAAM,KAAM,CAACD,EAAcE,CAAY,EAAE,OAAOhC,EAAM,KAAK/1B,CAAI,CAAC,CAAC,CAAC,EAE7F,OAAO83B,CACjB,EAEQL,EAAc,UAAU,OAAS,UAAW,CAC1C,IAAIz3B,EAAM+3B,EAAc7/B,EAAG8L,EAAK8zB,EAASD,EAAcG,EAQvD,IAPAH,EAAe,UAAU,CAAC,EAAGE,EAAe,UAAU,CAAC,EAAG/3B,EAAO,GAAK,UAAU,OAAS+1B,EAAM,KAAK,UAAW,CAAC,EAAI,GAChH,OAAO8B,GAAiB,SAC1BG,EAAgB,KAAK,QAAQH,CAAY,EAEzCG,EAAgB,CAACH,CAAY,EAE/BC,EAAU,CAAA,EACL5/B,EAAI,EAAG8L,EAAMg0B,EAAc,OAAQ9/B,EAAI8L,EAAK9L,IAC/C2/B,EAAeG,EAAc9/B,CAAC,EAC9B4/B,EAAQ,KAAK,OAAOD,EAAaE,CAAY,GAAM,WAAaF,EAAaE,CAAY,EAAE,MAAMF,EAAc73B,CAAI,EAAI,MAAM,EAE/H,OAAO83B,CACjB,EAEQL,EAAc,UAAU,YAAc,SAASI,EAAcI,EAAS,CACpE,IAAIT,EACJ,OAAAA,EAAaK,EAAa,WACnB,KAAK,SAAS,KAAK,CACxB,QAASI,EACT,WAAYT,CACxB,CAAW,CACX,EAEeC,CAEf,GAEA,GAAO,KAAK,IAAI,GACX,UAAW,CACVzB,EAAY,aAAgB,UAAW,CACrC,IAAIkC,EAEJ,SAASC,EAAalB,EAAU/gC,EAAQyhC,EAAO,CAC7C,KAAK,SAAWV,EACZ/gC,GAAU,OACZA,EAAS,CAAA,GAEX,KAAK,WAAa,KAAK,UAAUA,CAAM,EACvCgiC,EAAO,KAAMP,CAAK,CACnB,CAED,OAAAQ,EAAa,UAAU,QAAU,SAASC,EAAQ1nC,EAAM,CACtD,OAAIA,GAAQ,OACVA,EAAO,CAAA,GAETA,EAAK,OAAS0nC,EACP,KAAK,KAAK1nC,CAAI,CAC/B,EAEQynC,EAAa,UAAU,KAAO,SAASznC,EAAM,CAC3C,OAAO,KAAK,SAAS,KAAK,CACxB,QAAS,UACT,WAAY,KAAK,WACjB,KAAM,KAAK,UAAUA,CAAI,CACrC,CAAW,CACX,EAEQynC,EAAa,UAAU,YAAc,UAAW,CAC9C,OAAO,KAAK,SAAS,cAAc,OAAO,IAAI,CACxD,EAEQD,EAAS,SAAS1nC,EAAQ6nC,EAAY,CACpC,IAAI1lC,EAAKwB,EACT,GAAIkkC,GAAc,KAChB,IAAK1lC,KAAO0lC,EACVlkC,EAAQkkC,EAAW1lC,CAAG,EACtBnC,EAAOmC,CAAG,EAAIwB,EAGlB,OAAO3D,CACjB,EAEe2nC,CAEf,GAEA,GAAO,KAAK,IAAI,GACX,UAAW,CACVnC,EAAY,SAAY,UAAW,CACjC,SAASsC,EAASvX,EAAK,CACrB,KAAK,IAAMA,EACX,KAAK,cAAgB,IAAIiV,EAAY,cAAc,IAAI,EACvD,KAAK,WAAa,IAAIA,EAAY,WAAW,IAAI,CAClD,CAED,OAAAsC,EAAS,UAAU,KAAO,SAAS5nC,EAAM,CACvC,OAAO,KAAK,WAAW,KAAKA,CAAI,CAC1C,EAEQ4nC,EAAS,UAAU,QAAU,UAAW,CACtC,OAAO,KAAK,WAAW,MACjC,EAEQA,EAAS,UAAU,WAAa,UAAW,CACzC,OAAO,KAAK,WAAW,MAAM,CAC3B,eAAgB,EAC5B,CAAW,CACX,EAEQA,EAAS,UAAU,uBAAyB,UAAW,CACrD,GAAI,CAAC,KAAK,WAAW,WACnB,OAAO,KAAK,WAAW,MAEnC,EAEeA,CAEf,GAEA,GAAO,KAAK,IAAI,CAChB,GAAK,KAAK,IAAI,EAEsB/b,EAAO,UACvCA,EAAA,QAAiByZ,EAIrB,GAAG,KAAK5Z,EAAI,0BCtlBZ,MAAMmc,GAAiB,SAEhB,SAASC,IAAkC,CAC1C,MAAAC,EAAU,SAAS,cAAc,+BAA+B,EACtE,IAAI1X,EAAqB,KAEzB,OAAI0X,IACI1X,EAAA0X,EAAQ,aAAa,SAAS,GAG/BC,GAA2B,eAAA3X,GAAOwX,EAAc,CACzD,CCXa,MAAAI,GAAiB14B,GAA2E,CACvG,KAAM,CAAE,MAAA24B,EAAO,SAAAC,EAAU,SAAAtK,CAAA,EAAatuB,EAGpC,OAAAwpB,gBAAC,OAAI,UAAU,sCAAA,kBACZ,MAAI,KAAAA,gBAAC,QAAK,UAAU,yBAA0B,CAAA,CAAE,EACjDA,EAAAA,cAAC,cAAQmP,CAAM,kBACd,MAAK,KAAAC,CAAS,EAEdtK,CACH,CAEJ,ECRMuK,GAAW,GAAK,IAiCtB,MAAMC,WAA0B5P,EAAAA,SAAgC,CAC9D,YAAYlpB,EAAe,CACzB,MAAMA,CAAK,EAqCN,KAAA,WAAcvP,GAA4B,CACzC,KAAA,CAAE,oBAAAsoC,CAAoB,EAAI,KAAK,MAC/BC,EAAS,CACb,QAASvoC,EAAK,QACd,KAAMA,EAAK,KACX,SAAUA,EAAK,SACf,aAAcA,EAAK,cACnB,SAAUA,EAAK,SACf,cAAe,IAAK,EAGlBsoC,GAAuBC,EAAO,UACZD,IAGtB,KAAK,SAAS,CAAE,OAAQC,CAAQ,CAAA,CAAA,EAGlC,KAAO,aAAe,IAAM,CACpB,KAAA,CAAE,OAAAzX,CAAO,EAAI,KAAK,MAClB,CAAE,oBAAAwX,CAAoB,EAAI,KAAK,MAC/B7C,MAAU,KACV+C,EAAmB,IAAI,KAAK/C,EAAI,QAAA,EAAY2C,EAAQ,EAErDE,IAED,CAACxX,GAAUA,EAAO,UAAY0X,IACZF,GACtB,EA/DA,KAAK,MAAQ,CACX,MAAOR,GAAa,CAAA,CAExB,CAEO,mBAAoB,CACzB,KAAM,CAAE,OAAAvD,EAAQ,oBAAA+D,GAAwB,KAAK,MACvC,CAAE,MAAAG,CAAM,EAAI,KAAK,MAEjBvB,EAAUuB,EAAM,cAAc,OAAO,CACzC,QAAS,uBACT,kBAAmBlE,EAAO,EAAA,EACzB,CACD,UAAW,IAAM,CAAc,EAC/B,aAAc,IAAM,CAAc,EAClC,SAAU,KAAK,UAAA,CAChB,EAEI,KAAA,SACH,CACE,QAAA2C,EACA,gBAAiB,OAAO,YAAY,KAAK,aAAckB,EAAQ,CACjE,EACA,IAAME,EAAsBA,EAAA,EAAwB,IAAA,CAExD,CAEO,sBAAuB,CAC5B,KAAM,CAAE,MAAAG,EAAO,QAAAvB,EAAS,gBAAAwB,CAAA,EAAoB,KAAK,MAE7CxB,GAAWA,EAAQ,YAAY,EACnCuB,EAAM,WAAW,EACbC,GAAmB,cAAcA,CAAe,CACtD,CAiCO,cAAe,CACd,KAAA,CAAE,OAAA5X,CAAO,EAAI,KAAK,MACxB,GAAI,CAACA,EAAU,OAEf,KAAM,CAAE,QAAAuF,EAAS,KAAAsS,EAAM,SAAAhX,EAAU,aAAAiX,EAAc,SAAAC,CAAa,EAAA/X,EACtDgY,EAAc,KAAK,eAAeF,CAAY,EAC9CG,EAAiB,KAAK,eAAepX,CAAQ,EAEnD,GAAI,CAAAkX,EAGF,OAAA9P,EAAAA,cAAC,MAAI,CAAA,UAAU,MACb,EAAAA,EAAAA,cAAC,MAAI,CAAA,UAAU,MACb,EAAAA,EAAAA,cAAC,SAAQ,KAAA1C,CAAQ,EAAS,IAAE,IAC3BsS,EAAK,IAAEC,EAAe,EAAI,IAAIE,CAAW,IAAM,EAClD,EACA/P,EAAAA,cAAC,MAAI,CAAA,UAAU,UACb,EAAAA,EAAA,cAAC,MAAA,CACC,UAAU,eACV,KAAK,cACL,MAAO,CAAE,MAAOgQ,CAAe,CAAA,EAE9BA,CAEL,CAAA,CACF,CAEJ,CAEO,QAAS,CACd,KAAM,CAAE,MAAAb,EAAO,SAAAC,GAAa,KAAK,MAEjC,uBACG,MACC,KAAApP,EAAA,cAACkP,GAAA,CACC,MAAAC,EACA,SAAAC,CAAA,EAEC,KAAK,aAAa,CAAA,CAEvB,CAEJ,CAEQ,eAAea,EAAyB,CAC9C,MAAO,GAAG,KAAK,MAAMA,EAAU,GAAG,CAAC,GACrC,CACF,CCvIA,MAAMC,GAAmB15B,GAA8B,CAC/C,KAAA,CAAE,OAAAg1B,CAAW,EAAAh1B,EAGjB,OAAAwpB,gBAAC,OAAI,UAAU,sBAAA,kBACZ,KAAG,CAAA,UAAU,QAAO,yBAErB,kBACC,IAAE,KAAA,oBACiBwL,EAAO,cAAc,IAAE5N,GAAU,WAAY4N,EAAO,aAAa,EAAE,sBACvF,kBACC,MAAI,CAAA,UAAU,oBACZxL,EAAA,cAAA,OAAA,CAAK,UAAU,yCAA0C,CAAA,CAC5D,EACCA,EAAAA,cAAA,IAAA,CAAE,KAAMwL,EAAO,gBAAiB,UAAU,kCACzC,EAAAxL,EAAA,cAAC,QAAK,UAAU,qBAAA,CAAsB,EAAE,iBAE1C,CACF,CAEJ,SAEA,cAA4BN,EAAAA,SAAgC,CAC1D,YAAYlpB,EAAe,CACzB,MAAMA,CAAK,EAYb,KAAO,cAAgB,SAAY,CAC3B,KAAA,CAAE,OAAAg1B,CAAO,EAAI,KAAK,MACxB,KAAK,SAAS,CACZ,OAAQ,MAAM2E,GAAO,MAAM3E,EAAO,EAAE,CAAA,CACrC,CAAA,EAGH,KAAO,mBAAqB,SAAY,CAChC,KAAA,CAAE,OAAAA,CAAO,EAAI,KAAK,MAClB4E,EAAW,CACf,eAAgB,CACd,gBAAiB,EACnB,CAAA,EAEI7Y,EAAW,MAAMyG,GAAWqS,GAA0B7E,EAAO,EAAE,EAAG,CACtE,OAAQ,MACR,QAAS,CACP,eAAgB,mBAChB,OAAU,kBACZ,EACA,KAAM,KAAK,UAAU4E,CAAQ,CAAA,CAC9B,EAED,GAAI7Y,EAAS,GAAI,CACT,MAAAwG,EAAO,MAAMxG,EAAS,OACtB+Y,EAAY,IAAIH,GAAOpS,CAAI,EAEjC,KAAK,SAAS,CAAE,OAAQuS,CAAW,CAAA,CAAA,MAEnC,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACvB,EA0CF,KAAQ,gBAAkB,SAAY,CACpC,KAAK,SAAS,CACZ,SAAU,MAAMxS,GAAS,MAAM,CAAA,CAChC,CAAA,EAtFD,KAAK,MAAQ,CACX,OAAQ,IAAIqS,GAAO35B,EAAM,MAAM,CAAA,CAEnC,CAEO,mBAAoB,CACzB,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACvB,CAoCO,QAAS,CACR,KAAA,CAAE,WAAAyoB,CAAW,EAAI,KAAK,MACtB,CAAE,OAAAuM,EAAQ,SAAAtK,GAAa,KAAK,MAE9B,OAAAsK,EAAO,eAEPxL,EAAA,cAACsP,GAAA,CACC,OAAA9D,EACA,MAAM,6BACN,SAAS,4BACT,oBAAqB,KAAK,aAAA,CAAA,EAGrBA,EAAO,YAEdxL,EAAA,cAACsP,GAAA,CACC,OAAA9D,EACA,MAAM,uBACN,SAAS,yCACT,oBAAqB,KAAK,aAAA,CAAA,EAGrBA,EAAO,WACTxL,gBAACkM,IAAoB,OAAAV,CAAgB,CAAA,EACnCA,EAAO,yBAEdxL,EAAA,cAAC6L,GAAA,CACC,qBAAsB,KAAK,mBAC3B,sBAAuB,KAAK,gBAC5B,OAAQL,EAAO,wBAAwB,EACvC,SAAAtK,EACA,WAAAjC,CAAA,CAAA,EAIGe,gBAACkQ,IAAgB,OAAA1E,CAAgB,CAAA,CAE5C,CAOF;;;;;kBCjIC,SAAS7vB,EAAE5L,EAAE,CAAyG+iB,EAAA,QAAe/iB,EAAC,CAAa,GAAE4iB,GAAK,SAASlM,GAAG,CAAc,IAAIvF,EAAe,OAAO,KAApB,IAAyB,KAAkB,OAAO,OAApB,IAA2B,OAAgBA,IAAT,OAAWA,EAAE,CAAA,EAAOhH,EAAE,CAACgH,EAAE,UAAU,CAAC,CAACA,EAAE,YAAY,EAAEA,EAAE,gBAAgB,GAAGvR,EAAE,CAAA,EAAG4gC,EAAE,EAAE3gC,EAAE,CAAC,MAAM,SAAS+L,EAAE5L,EAAE,CAAC,IAAIuM,GAAGvM,EAAEA,GAAG,CAAE,GAAE,eAAe,GAA0C,GAAvCygC,EAAEl0B,CAAC,IAAIvM,EAAE,sBAAsBuM,EAAEA,EAAE,CAAE,GAAKvM,EAAE,cAAcuM,EAAEvM,EAAE,UAAU,CAAC,CAACygC,EAAEzgC,EAAE,SAAS,GAAGA,EAAE,UAAUA,EAAE,QAAQH,EAAE,kBAAkB,CAAC,IAAInB,EAAE,UAAU,CAAC,GAAG,CAACmB,EAAE,kBAAkB,MAAM,GAAG,IAAI+L,GAAGW,GAAE4E,EAAE,KAAKA,EAAE,WAAW,KAAKzS,EAAEgY,EAAE,SAAQ,EAAG7W,EAAE,WAAWA,EAAE,SAAS0M,GAAE,gBAAgB,IAAI,KAAK,CAAC,yOAAyO,IAAI7N,EAAE,MAAM,EAAE,CAAC,KAAK,iBAAiB,CAAC,CAAC,IAAIsB,EAAE,IAAImR,EAAE,OAAOvF,CAAC,EAAMW,GAAE7N,EAAE,OAAOsB,EAAE,UAAUwd,EAAExd,EAAE,GAAGwgC,IAAI5gC,EAAEI,EAAE,EAAE,EAAEA,CAAC,EAAG,EAAC,OAAOtB,EAAE,SAASsB,EAAE,KAAKtB,EAAE,UAAUsB,EAAE,MAAMtB,EAAE,aAAasB,EAAE,SAAStB,EAAE,UAAUsB,EAAE,MAAMA,EAAE,KAAKygC,EAAEzgC,EAAE,IAAI,EAAEA,EAAE,MAAMygC,EAAEzgC,EAAE,KAAK,EAAEA,EAAE,SAASygC,EAAEzgC,EAAE,QAAQ,EAAEA,EAAE,MAAMygC,EAAEzgC,EAAE,KAAK,EAAE,OAAOA,EAAE,OAAO,KAAKtB,EAAE,YAAY,CAAC,MAAMkN,EAAE,OAAO5L,EAAE,SAAStB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAIyL,EAAE,KAAK,OAAAtK,EAAE,kBAA4B,OAAO+L,GAAjB,UAAoBA,EAAE,SAASA,EAAE,CAAC,OAAWA,EAAE,WAAW,CAAC,IAAtB,MAA+BA,EAAE,MAAM,CAAC,EAASA,CAAC,EAAEA,CAAC,EAAEzB,EAAEnK,EAAE,SAAS,IAAI4zB,EAAE5zB,CAAC,EAAE,IAAIG,EAAEH,CAAC,GAAQ4L,EAAE,WAAP,IAAiB60B,EAAE70B,EAAE,IAAI,GAAG60B,EAAE70B,EAAE,EAAE,EAAEzB,EAAE,IAAIigB,EAAEpqB,CAAC,GAAGmR,EAAE,MAAMvF,aAAa,MAAMA,aAAa,UAAUzB,EAAE,IAAIf,EAAEpJ,CAAC,GAAUmK,EAAE,OAAOyB,CAAC,CAAC,EAAE,QAAQ,SAASA,EAAE5L,EAAE,CAAC,IAAImK,EAAE,GAAGqT,EAAE,GAAGpS,EAAE,IAAI/H,EAAE;AAAA,EAAOqT,EAAE,IAAI9W,GAAE8W,EAAEA,EAAEnK,EAAE,GAAG7N,EAAE,KAAK2Q,EAAE,IAAI,UAAU,CAAC,GAAa,OAAOrP,GAAjB,SAAsd,IAAlb,OAAOA,EAAE,WAAnB,UAA8BH,EAAE,eAAe,OAAO,SAAS+L,EAAE,CAAC,OAAW5L,EAAE,UAAU,QAAQ4L,CAAC,IAA1B,EAA2B,CAAC,EAAE,SAASR,EAAEpL,EAAE,YAAuB,OAAOA,EAAE,QAApB,WAAwC,OAAOA,EAAE,QAArB,YAA6B,MAAM,QAAQA,EAAE,MAAM,KAAKmK,EAAEnK,EAAE,QAAmB,OAAOA,EAAE,gBAApB,WAA8C,OAAOA,EAAE,gBAAnB,WAAoCuM,EAAEvM,EAAE,gBAA0B,OAAOA,EAAE,SAAnB,WAA6BqD,EAAErD,EAAE,SAAmB,OAAOA,EAAE,WAAnB,WAA+B0W,EAAE1W,EAAE,WAAsB,OAAOA,EAAE,QAApB,YAA6Bwd,EAAExd,EAAE,QAAW,MAAM,QAAQA,EAAE,OAAO,EAAE,CAAC,GAAOA,EAAE,QAAQ,SAAd,EAAqB,MAAM,IAAI,MAAM,yBAAyB,EAAEtB,EAAEsB,EAAE,OAAO,CAAUA,EAAE,aAAX,SAAwBJ,GAAEI,EAAE,WAAW0W,IAAe,OAAO1W,EAAE,gBAApB,WAAoCA,EAAE,0BAA0B,UAAUqP,EAAErP,EAAE,0BAA0B,OAAOA,EAAE,eAAe,mBAAkB,GAAG,EAAC,IAAIwgC,EAAE,IAAI,OAAOE,EAAEhqB,CAAC,EAAE,GAAG,EAAwC,GAA5B,OAAO9K,GAAjB,WAAqBA,EAAE,KAAK,MAAMA,CAAC,GAAM,MAAM,QAAQA,CAAC,EAAE,CAAC,GAAG,CAACA,EAAE,QAAQ,MAAM,QAAQA,EAAE,CAAC,CAAC,EAAE,OAAO+0B,EAAE,KAAK/0B,EAAEW,CAAC,EAAE,GAAa,OAAOX,EAAE,CAAC,GAApB,SAAsB,OAAO+0B,EAAEjiC,GAAG,OAAO,KAAKkN,EAAE,CAAC,CAAC,EAAEA,EAAEW,CAAC,CAAC,SAAmB,OAAOX,GAAjB,SAAmB,OAAgB,OAAOA,EAAE,MAAnB,WAA0BA,EAAE,KAAK,KAAK,MAAMA,EAAE,IAAI,GAAG,MAAM,QAAQA,EAAE,IAAI,IAAIA,EAAE,SAASA,EAAE,OAAOA,EAAE,MAAMA,EAAE,KAAK,QAAQlN,GAAGkN,EAAE,SAASA,EAAE,OAAO,MAAM,QAAQA,EAAE,KAAK,CAAC,CAAC,EAAEA,EAAE,OAAiB,OAAOA,EAAE,KAAK,CAAC,GAAzB,SAA2B,OAAO,KAAKA,EAAE,KAAK,CAAC,CAAC,EAAE,CAAA,GAAI,MAAM,QAAQA,EAAE,KAAK,CAAC,CAAC,GAAa,OAAOA,EAAE,KAAK,CAAC,GAAzB,WAA6BA,EAAE,KAAK,CAACA,EAAE,IAAI,IAAI+0B,EAAE/0B,EAAE,QAAQ,CAAA,EAAGA,EAAE,MAAM,CAAA,EAAGW,CAAC,EAAE,MAAM,IAAI,MAAM,wCAAwC,EAAE,SAASo0B,EAAE/0B,EAAE5L,EAAEuM,EAAE,CAAC,IAAI7N,EAAE,GAAa,OAAOkN,GAAjB,WAAqBA,EAAE,KAAK,MAAMA,CAAC,GAAa,OAAO5L,GAAjB,WAAqBA,EAAE,KAAK,MAAMA,CAAC,GAAG,IAAImK,GAAE,MAAM,QAAQyB,CAAC,GAAG,EAAEA,EAAE,OAAO8K,EAAE,CAAC,MAAM,QAAQ1W,EAAE,CAAC,CAAC,EAAE,GAAGmK,IAAGqT,EAAE,CAAC,QAAQ5d,GAAE,EAAEA,GAAEgM,EAAE,OAAOhM,KAAI,EAAEA,KAAIlB,GAAG0M,GAAG1M,GAAG2X,EAAEzK,EAAEhM,EAAC,EAAEA,EAAC,EAAE,EAAEI,EAAE,SAAStB,GAAG2E,EAAE,CAAC,QAAQgM,EAAE,EAAEA,EAAErP,EAAE,OAAOqP,IAAI,CAAC,IAAImxB,GAAEr2B,GAAEyB,EAAE,OAAO5L,EAAEqP,CAAC,EAAE,OAAOsxB,GAAE,GAAGxvB,GAAEhH,GAAM,OAAO,KAAKnK,EAAEqP,CAAC,CAAC,EAAE,SAAtB,EAAiCrP,EAAEqP,CAAC,EAAE,SAAT,EAAgB,GAAG9C,GAAG,CAACpC,KAAIw2B,GAAap0B,IAAX,SAAkBvM,EAAEqP,CAAC,EAAE,KAAK,EAAE,EAAE,KAAI,IAAvB,GAA8BrP,EAAEqP,CAAC,EAAE,SAAT,GAAqBrP,EAAEqP,CAAC,EAAE,CAAC,EAAE,SAAZ,GAA+B9C,IAAX,UAAcpC,GAAE,CAAC,QAAQtD,GAAE,CAAE,EAAC+sB,EAAE,EAAEA,EAAE4M,GAAE5M,IAAI,CAAC,IAAIxqB,EAAEsN,EAAE9K,EAAEgoB,CAAC,EAAEA,EAAE/sB,GAAE,KAAK7G,EAAEqP,CAAC,EAAEjG,CAAC,CAAC,CAAC,CAACu3B,GAAO95B,GAAE,KAAK,EAAE,EAAE,KAAI,IAApB,EAAsB,CAAC,GAAG,CAAC85B,GAAE,CAAC,QAAQxgC,EAAE,EAAEA,EAAEqgC,GAAErgC,IAAI,CAAC,EAAEA,GAAG,CAACgR,KAAIzS,GAAG0M,GAAG,IAAIgf,EAAEjgB,IAAGuM,EAAE9K,EAAEzL,CAAC,EAAEA,EAAEzB,GAAG2X,EAAErW,EAAEqP,CAAC,EAAE+a,CAAC,EAAEjqB,CAAC,CAAC,CAACkP,EAAErP,EAAE,OAAO,IAAI,CAACuM,GAAG,EAAEi0B,IAAG,CAACrvB,MAAKzS,GAAG2E,EAAE,CAAC,CAAC,OAAO3E,CAAC,CAAC,SAAS2X,EAAEzK,EAAE5L,EAAE,CAAC,GAAS4L,GAAN,KAAQ,MAAM,GAAG,GAAGA,EAAE,cAAc,KAAK,OAAO,KAAK,UAAUA,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAIW,EAAE,GAAG8C,GAAa,OAAOzD,GAAjB,UAAoByD,EAAE,KAAKzD,CAAC,IAAIA,EAAE,IAAIA,EAAEW,EAAE,IAAI,IAAI7N,EAAEkN,EAAE,SAAU,EAAC,QAAQ40B,EAAE5gC,EAAC,EAAE,OAAO2M,EAAEA,GAAQpC,IAAL,IAAoB,OAAOA,GAAnB,YAAsBA,EAAEyB,EAAE5L,CAAC,GAAG,MAAM,QAAQmK,CAAC,GAAGA,EAAEnK,CAAC,GAAG,SAAS4L,GAAE5L,EAAE,CAAC,QAAQuM,GAAE,EAAEA,GAAEvM,EAAE,OAAOuM,KAAI,GAAG,GAAGX,GAAE,QAAQ5L,EAAEuM,EAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE7N,EAAEmB,EAAE,cAAc,GAAG,GAAGnB,EAAE,QAAQ0M,CAAC,GAAS1M,EAAE,OAAO,CAAC,IAAhB,KAAyBA,EAAE,OAAOA,EAAE,OAAO,CAAC,IAAzB,KAA4BgY,EAAEhY,EAAEgY,EAAEhY,CAAC,CAAC,CAAC,EAAE,GAAGmB,EAAE,WAAW,OAAO,aAAa,EAAE,EAAEA,EAAE,SAAS,OAAO,aAAa,EAAE,EAAEA,EAAE,gBAAgB,SAASA,EAAE,eAAe,CAAC,KAAK;AAAA,EAAK,IAAIA,EAAE,eAAe,EAAEA,EAAE,kBAAkB,CAACsK,GAAG,CAAC,CAACgH,EAAE,OAAOtR,EAAE,kBAAkB,EAAEA,EAAE,eAAe,SAASA,EAAE,gBAAgB,QAAQA,EAAE,iBAAiB,IAAIA,EAAE,OAAO+gC,EAAE/gC,EAAE,aAAa0M,EAAE1M,EAAE,gBAAgB+zB,EAAE/zB,EAAE,aAAauJ,EAAEvJ,EAAE,eAAeM,EAAEN,EAAE,uBAAuBuqB,EAAEjZ,EAAE,OAAO,CAAC,IAAItK,EAAEsK,EAAE,OAAOtK,EAAE,GAAG,MAAM,SAASwI,EAAE,CAAC,IAAI9C,EAAE8C,EAAE,QAAQ,GAAGmxB,EAAE,CAAA,EAAG,OAAO,KAAK,KAAK,SAAS50B,EAAE,CAAC,GAAG,EAAY/E,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,YAAa,IAA/C,SAA0DA,EAAE,IAAI,EAAE,KAAK,MAAM,EAAE,YAAW,IAAzC,QAA6CsK,EAAE,aAAa,CAAC,KAAK,OAAW,KAAK,MAAM,SAAf,EAAsB,MAAM,GAAG,QAAQnR,EAAE,EAAEA,EAAE,KAAK,MAAM,OAAOA,IAAIwgC,EAAE,KAAK,CAAC,KAAK,KAAK,MAAMxgC,CAAC,EAAE,UAAU,KAAK,eAAe6G,EAAE,OAAO,CAAE,EAAC0F,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEX,EAAG,EAAC,KAAK,SAASA,GAAG,CAAC,GAAO40B,EAAE,SAAN,EAAa,CAAC,IAAI50B,EAAE5L,EAAEuM,GAAE7N,EAAEyL,EAAEq2B,EAAE,CAAC,EAAE,GAAGC,EAAEpxB,EAAE,MAAM,EAAE,CAAC,IAAIqH,EAAErH,EAAE,OAAOlF,EAAE,KAAKA,EAAE,SAAS,EAAE,GAAa,OAAOuM,GAAjB,SAAmB,CAAC,GAAaA,EAAE,SAAZ,QAAmB,OAAO9K,EAAE,aAAa5L,EAAEmK,EAAE,KAAKoC,GAAEpC,EAAE,UAAUzL,EAAEgY,EAAE,OAAO,KAAK+pB,EAAEpxB,EAAE,KAAK,GAAGA,EAAE,MAAM,CAAC,KAAKzD,CAAC,EAAE5L,EAAEuM,GAAE7N,CAAC,GAAG,GAAYgY,EAAE,SAAX,OAAkB,OAAO,KAAKiqB,EAAG,EAAW,OAAOjqB,EAAE,QAAnB,WAA4BvM,EAAE,eAAetD,EAAE,OAAOsD,EAAE,eAAeuM,EAAE,MAAM,EAAE,SAAkBA,IAAT,OAAW,OAAO,KAAKiqB,EAAC,CAAE,CAAC,IAAI/gC,EAAEuK,EAAE,eAAe,SAASA,EAAE,eAAe,SAAS,SAASyB,EAAE,CAAC60B,EAAE7gC,CAAC,GAAGA,EAAEgM,EAAEzB,EAAE,KAAKA,EAAE,SAAS,EAAEw2B,EAAG,CAAA,EAAE9gC,EAAE,MAAMsK,EAAE,KAAKA,EAAE,cAAc,CAAC,MAAMs2B,EAAEpxB,EAAE,QAAQ,GAAGA,EAAE,SAAU,CAAA,CAAC,SAASsxB,GAAG,CAACH,EAAE,OAAO,EAAE,CAAC,EAAE50B,EAAC,CAAE,CAAC,CAAC,CAAC,SAAS,EAAEA,EAAE,CAAC,KAAK,QAAQ,KAAK,KAAK,UAAU,GAAG,KAAK,WAAW,GAAG,KAAK,QAAQ,GAAG,KAAK,OAAO,KAAK,KAAK,WAAW,EAAE,KAAK,aAAa,GAAG,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,KAAK,KAAK,aAAa,GAAG,KAAK,iBAAiB,CAAC,KAAK,CAAE,EAAC,OAAO,CAAE,EAAC,KAAK,CAAE,CAAA,GAAE,SAASA,EAAE,CAAC,IAAI5L,EAAE6gC,EAAEj1B,CAAC,EAAE5L,EAAE,UAAU,SAASA,EAAE,SAAS,EAAE4L,EAAE,MAAMA,EAAE,QAAQ5L,EAAE,UAAU,MAAM,KAAK,QAAQ,IAAIuM,EAAEvM,CAAC,GAAG,KAAK,QAAQ,SAAS,MAAM,QAAQA,CAAC,GAAE,KAAK,KAAK4L,CAAC,EAAE,KAAK,WAAW,SAASA,EAAE5L,EAAE,CAAC,GAAG,KAAK,cAAcygC,EAAE,KAAK,QAAQ,gBAAgB,EAAE,CAAC,IAAIl0B,EAAE,KAAK,QAAQ,iBAAiBX,CAAC,EAAWW,IAAT,SAAaX,EAAEW,EAAE,CAAC,KAAK,aAAa,GAAG,KAAK,QAAQ,GAAG,IAAI7N,EAAE,KAAK,aAAakN,EAAE,KAAK,aAAa,GAAG,IAAIzB,EAAE,KAAK,QAAQ,MAAMzL,EAAE,KAAK,WAAW,CAAC,KAAK,SAAS,EAAE,GAAG,CAAC,KAAK,QAAQ,OAAM,GAAI,CAAC,KAAK,QAAQ,QAAO,EAAG,CAAC,IAAIgY,EAAEvM,EAAE,KAAK,OAAO,KAAK,YAAY,KAAK,aAAazL,EAAE,UAAUgY,EAAE,KAAK,UAAU,EAAE,KAAK,WAAWA,GAAGvM,GAAGA,EAAE,OAAO,KAAK,WAAWA,EAAE,KAAK,QAAQ,IAAIvK,GAAE,KAAK,WAAW,KAAK,QAAQ,SAAS,KAAK,WAAW,KAAK,QAAQ,QAAQ,GAAG,EAAEuR,EAAE,YAAY,CAAC,QAAQhH,EAAE,SAAStK,EAAE,UAAU,SAASD,EAAC,CAAC,UAAU6gC,EAAE,KAAK,QAAQ,KAAK,GAAG,CAACzgC,EAAE,CAAC,GAAG,KAAK,QAAQ,MAAMmK,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,OAAQ,GAAE,KAAK,QAAQ,QAAO,EAAG,OAAO,KAAK,KAAK,QAAQ,IAAIA,EAAE,OAAO,KAAK,iBAAiB,MAAM,CAAC,OAAO,KAAK,QAAQ,MAAM,KAAK,QAAQ,QAAQ,KAAK,iBAAiB,KAAK,KAAK,iBAAiB,KAAK,OAAOA,EAAE,IAAI,EAAE,KAAK,iBAAiB,OAAO,KAAK,iBAAiB,OAAO,OAAOA,EAAE,MAAM,EAAE,KAAK,iBAAiB,KAAKA,EAAE,MAAM,KAAK,YAAY,CAACvK,IAAG,CAAC6gC,EAAE,KAAK,QAAQ,QAAQ,GAAGt2B,GAAGA,EAAE,KAAK,UAAU,KAAK,QAAQ,SAAS,KAAK,iBAAiB,KAAK,MAAM,EAAE,KAAK,WAAW,IAAIvK,IAAGuK,GAAGA,EAAE,KAAK,QAAQ,KAAK,WAAY,EAACA,CAAC,CAAC,KAAK,QAAQ,EAAE,EAAE,KAAK,WAAW,SAASyB,EAAE,CAAC60B,EAAE,KAAK,QAAQ,KAAK,EAAE,KAAK,QAAQ,MAAM70B,CAAC,EAAE,GAAG,KAAK,QAAQ,OAAOuF,EAAE,YAAY,CAAC,SAAStR,EAAE,UAAU,MAAM+L,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAASgoB,EAAEhoB,EAAE,CAAC,IAAIlN,GAAGkN,EAAEA,GAAG,IAAI,YAAYA,EAAE,UAAU/L,EAAE,iBAAiB,EAAE,KAAK,KAAK+L,CAAC,EAAE,KAAK,WAAWzB,EAAE,UAAU,CAAC,KAAK,WAAY,EAAC,KAAK,aAAY,CAAE,EAAE,UAAU,CAAC,KAAK,WAAU,CAAE,EAAE,KAAK,OAAO,SAASyB,EAAE,CAAC,KAAK,OAAOA,EAAE,KAAK,WAAY,CAAA,EAAE,KAAK,WAAW,UAAU,CAAC,GAAG,KAAK,UAAU,KAAK,aAAc,MAAK,CAAC,GAAGlN,EAAE,IAAI,eAAe,KAAK,QAAQ,kBAAkBA,EAAE,gBAAgB,KAAK,QAAQ,iBAAiByL,IAAIzL,EAAE,OAAO2X,EAAE,KAAK,aAAa,IAAI,EAAE3X,EAAE,QAAQ2X,EAAE,KAAK,YAAY,IAAI,GAAG3X,EAAE,KAAK,KAAK,QAAQ,oBAAoB,OAAO,MAAM,KAAK,OAAO,CAACyL,CAAC,EAAE,KAAK,QAAQ,uBAAuB,CAAC,IAAIyB,EAAE,KAAK,QAAQ,uBAAuB,QAAQ5L,KAAK4L,EAAElN,EAAE,iBAAiBsB,EAAE4L,EAAE5L,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,UAAU,CAAC,IAAIuM,EAAE,KAAK,OAAO,KAAK,QAAQ,UAAU,EAAE7N,EAAE,iBAAiB,QAAQ,SAAS,KAAK,OAAO,IAAI6N,CAAC,CAAC,CAAC,GAAG,CAAC7N,EAAE,KAAK,KAAK,QAAQ,mBAAmB,CAAC,OAAOkN,EAAE,CAAC,KAAK,YAAYA,EAAE,OAAO,CAAC,CAACzB,GAAOzL,EAAE,SAAN,GAAc,KAAK,YAAa,CAAA,CAAC,EAAE,KAAK,aAAa,UAAU,CAAKA,EAAE,aAAN,IAAmBA,EAAE,OAAO,KAAK,KAAKA,EAAE,OAAO,KAAK,YAAa,GAAE,KAAK,QAAQ,KAAK,QAAQ,UAAU,KAAK,QAAQ,UAAUA,EAAE,aAAa,OAAO,KAAK,UAAU,CAAC,KAAK,QAAQ,WAAW,KAAK,QAAQ,SAASkN,EAAE,CAAC,IAAI5L,EAAE4L,EAAE,kBAAkB,eAAe,EAAE,OAAU5L,IAAP,KAAe,GAAU,SAASA,EAAE,UAAUA,EAAE,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,EAAEtB,CAAC,EAAE,KAAK,WAAWA,EAAE,YAAY,GAAG,EAAE,KAAK,YAAY,SAASkN,EAAE,CAAC,IAAI5L,EAAEtB,EAAE,YAAYkN,EAAE,KAAK,WAAW,IAAI,MAAM5L,CAAC,CAAC,CAAC,CAAC,CAAC,SAASoJ,EAAEwC,EAAE,CAAC,IAAIlN,EAAEyL,GAAGyB,EAAEA,GAAG,CAAA,GAAI,YAAYA,EAAE,UAAU/L,EAAE,gBAAgB,EAAE,KAAK,KAAK+L,CAAC,EAAE,IAAI8K,EAAe,OAAO,WAApB,IAA+B,KAAK,OAAO,SAAS9K,EAAE,CAAC,KAAK,OAAOA,EAAEzB,EAAEyB,EAAE,OAAOA,EAAE,aAAaA,EAAE,SAAS8K,IAAIhY,EAAE,IAAI,YAAY,OAAO2X,EAAE,KAAK,aAAa,IAAI,EAAE3X,EAAE,QAAQ2X,EAAE,KAAK,YAAY,IAAI,GAAG3X,EAAE,IAAI,eAAe,KAAK,WAAU,CAAE,EAAE,KAAK,WAAW,UAAU,CAAC,KAAK,WAAW,KAAK,QAAQ,SAAS,EAAE,KAAK,UAAU,KAAK,QAAQ,UAAU,KAAK,WAAU,CAAE,EAAE,KAAK,WAAW,UAAU,CAAC,IAAIkN,EAAE,KAAK,OAAO,GAAG,KAAK,QAAQ,UAAU,CAAC,IAAI5L,EAAE,KAAK,IAAI,KAAK,OAAO,KAAK,QAAQ,UAAU,KAAK,OAAO,IAAI,EAAE4L,EAAEzB,EAAE,KAAKyB,EAAE,KAAK,OAAO5L,CAAC,CAAC,CAAC,IAAIuM,EAAE7N,EAAE,WAAWkN,EAAE,KAAK,QAAQ,QAAQ,EAAE8K,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,OAAOnK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,SAASX,EAAE,CAAC,KAAK,QAAQ,KAAK,QAAQ,UAAU,KAAK,UAAU,CAAC,KAAK,QAAQ,WAAW,KAAK,QAAQ,KAAK,OAAO,KAAK,KAAK,WAAWA,EAAE,OAAO,MAAM,CAAC,EAAE,KAAK,YAAY,UAAU,CAAC,KAAK,WAAWlN,EAAE,KAAK,CAAC,CAAC,CAAC,SAASyB,EAAEyL,EAAE,CAAC,IAAIW,EAAE,EAAE,KAAK,KAAKX,EAAEA,GAAG,CAAA,CAAE,EAAE,KAAK,OAAO,SAASA,EAAE,CAAC,OAAOW,EAAEX,EAAE,KAAK,WAAU,CAAE,EAAE,KAAK,WAAW,UAAU,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,IAAIA,EAAE5L,EAAE,KAAK,QAAQ,UAAU,OAAOA,GAAG4L,EAAEW,EAAE,UAAU,EAAEvM,CAAC,EAAEuM,EAAEA,EAAE,UAAUvM,CAAC,IAAI4L,EAAEW,EAAEA,EAAE,IAAI,KAAK,UAAU,CAACA,EAAE,KAAK,WAAWX,CAAC,CAAC,CAAC,CAAC,CAAC,SAASwe,EAAExe,EAAE,CAAC,EAAE,KAAK,KAAKA,EAAEA,GAAG,EAAE,EAAE,IAAI5L,EAAE,CAAA,EAAGuM,EAAE,GAAG7N,EAAE,GAAG,KAAK,MAAM,UAAU,CAAC,EAAE,UAAU,MAAM,MAAM,KAAK,SAAS,EAAE,KAAK,OAAO,MAAO,CAAA,EAAE,KAAK,OAAO,UAAU,CAAC,EAAE,UAAU,OAAO,MAAM,KAAK,SAAS,EAAE,KAAK,OAAO,OAAM,CAAE,EAAE,KAAK,OAAO,SAASkN,EAAE,CAAC,KAAK,OAAOA,EAAE,KAAK,OAAO,GAAG,OAAO,KAAK,WAAW,EAAE,KAAK,OAAO,GAAG,MAAM,KAAK,UAAU,EAAE,KAAK,OAAO,GAAG,QAAQ,KAAK,YAAY,CAAC,EAAE,KAAK,iBAAiB,UAAU,CAAClN,GAAOsB,EAAE,SAAN,IAAe,KAAK,UAAU,GAAG,EAAE,KAAK,WAAW,UAAU,CAAC,KAAK,iBAAkB,EAACA,EAAE,OAAO,KAAK,WAAWA,EAAE,MAAO,CAAA,EAAEuM,EAAE,EAAE,EAAE,KAAK,YAAY8J,EAAE,SAASzK,EAAE,CAAC,GAAG,CAAC5L,EAAE,KAAe,OAAO4L,GAAjB,SAAmBA,EAAEA,EAAE,SAAS,KAAK,QAAQ,QAAQ,CAAC,EAAEW,IAAIA,EAAE,GAAG,KAAK,iBAAkB,EAAC,KAAK,WAAWvM,EAAE,MAAO,CAAA,EAAE,OAAO4L,EAAE,CAAC,KAAK,aAAaA,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,aAAayK,EAAE,SAASzK,EAAE,CAAC,KAAK,eAAc,EAAG,KAAK,WAAWA,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,WAAWyK,EAAE,UAAU,CAAC,KAAK,eAAc,EAAG3X,EAAE,GAAG,KAAK,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,eAAe2X,EAAE,UAAU,CAAC,KAAK,OAAO,eAAe,OAAO,KAAK,WAAW,EAAE,KAAK,OAAO,eAAe,MAAM,KAAK,UAAU,EAAE,KAAK,OAAO,eAAe,QAAQ,KAAK,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS9J,EAAEnB,EAAE,CAAC,IAAIxL,EAAEyP,EAAEmxB,EAAE9hC,EAAE,KAAK,IAAI,EAAE,EAAE,EAAEyL,EAAE,CAACzL,EAAEgY,EAAE,mDAAmDiqB,GAAE,qNAAqN3gC,EAAE,KAAKuM,EAAE,EAAE4E,EAAE,EAAEtK,EAAE,GAAG+E,EAAE,GAAGgoB,EAAE,CAAA,EAAGxqB,EAAE,CAAC,KAAK,CAAA,EAAG,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE,EAAE,GAAGq3B,EAAEr1B,EAAE,IAAI,EAAE,CAAC,IAAIjL,EAAEiL,EAAE,KAAKA,EAAE,KAAK,SAASQ,EAAE,CAAC,GAAGxC,EAAEwC,EAAE4R,GAAC,EAAG4M,QAAQ,CAAC,GAAGA,EAAC,EAAOhhB,EAAE,KAAK,SAAX,EAAkB,OAAOmD,GAAGX,EAAE,KAAK,OAAOR,EAAE,SAASmB,EAAEnB,EAAE,QAAQiE,EAAE,MAAK,GAAIjG,EAAE,KAAKA,EAAE,KAAK,CAAC,EAAEjJ,EAAEiJ,EAAEpJ,CAAC,EAAE,CAAC,CAAC,CAAC,SAASqD,EAAEuI,EAAE,CAAC,OAAiBR,EAAE,iBAAb,SAAiCQ,EAAE,KAAK,EAAE,EAAE,KAAI,IAApB,GAA2BA,EAAE,SAAN,GAAkBA,EAAE,CAAC,EAAE,SAAT,CAAe,CAAC,SAASwe,GAAG,CAAC,OAAOhhB,GAAGo3B,IAAI/pB,GAAE,YAAY,wBAAwB,6DAA6D5W,EAAE,iBAAiB,GAAG,EAAE2gC,EAAE,IAAIp1B,EAAE,iBAAiBhC,EAAE,KAAKA,EAAE,KAAK,OAAO,SAASwC,EAAE,CAAC,MAAM,CAACvI,EAAEuI,CAAC,CAAC,CAAC,GAAG4R,GAAC,GAAI,UAAU,CAAC,GAAG,CAACpU,EAAE,OAAO,SAASwC,EAAEA,GAAE5L,GAAE,CAACygC,EAAEr1B,EAAE,eAAe,IAAIQ,GAAER,EAAE,gBAAgBQ,GAAE5L,EAAC,GAAG4zB,EAAE,KAAKhoB,EAAC,CAAC,CAAC,GAAG,MAAM,QAAQxC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQpJ,GAAE,EAAEwd,GAAG,GAAExd,GAAEoJ,EAAE,KAAK,OAAOpJ,KAAIoJ,EAAE,KAAKpJ,EAAC,EAAE,QAAQ4L,CAAC,EAAExC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC,MAAMA,EAAE,KAAK,QAAQwC,CAAC,CAAC,EAAG,EAAC,UAAU,CAAC,GAAG,CAACxC,GAAG,CAACgC,EAAE,QAAQ,CAACA,EAAE,eAAe,CAACA,EAAE,UAAU,OAAOhC,EAAE,SAASwC,EAAEA,GAAE5L,GAAE,CAAC,IAAIuM,GAAE7N,EAAE0M,EAAE,OAAO,CAAA,EAAG,CAAA,EAAG,IAAImB,GAAE,EAAEA,GAAEX,GAAE,OAAOW,KAAI,CAAC,IAAIpC,EAAEoC,GAAEmK,EAAE9K,GAAEW,EAAC,EAAEnB,EAAE,SAASjB,EAAEoC,IAAGqnB,EAAE,OAAO,iBAAiBA,EAAErnB,EAAC,GAAGnB,EAAE,YAAYsL,EAAEtL,EAAE,UAAUsL,EAAEvM,CAAC,GAAGuM,EAAEL,EAAElM,EAAEuM,CAAC,EAAqBvM,IAAnB,kBAAsBzL,EAAEyL,CAAC,EAAEzL,EAAEyL,CAAC,GAAG,CAAE,EAACzL,EAAEyL,CAAC,EAAE,KAAKuM,CAAC,GAAGhY,EAAEyL,CAAC,EAAEuM,CAAC,CAAC,OAAOtL,EAAE,SAASmB,GAAEqnB,EAAE,OAAOnd,GAAE,gBAAgB,gBAAgB,6BAA6Bmd,EAAE,OAAO,sBAAsBrnB,GAAE4E,EAAEnR,EAAC,EAAEuM,GAAEqnB,EAAE,QAAQnd,GAAE,gBAAgB,eAAe,4BAA4Bmd,EAAE,OAAO,sBAAsBrnB,GAAE4E,EAAEnR,EAAC,GAAGtB,CAAC,CAAC,IAAIsB,GAAE,EAAE,OAACoJ,EAAE,KAAK,QAAQ,MAAM,QAAQA,EAAE,KAAK,CAAC,CAAC,GAAGA,EAAE,KAAKA,EAAE,KAAK,IAAIwC,CAAC,EAAE5L,GAAEoJ,EAAE,KAAK,QAAQA,EAAE,KAAKwC,EAAExC,EAAE,KAAK,CAAC,EAAEgC,EAAE,QAAQhC,EAAE,OAAOA,EAAE,KAAK,OAAOwqB,GAAUziB,GAAGnR,GAAEoJ,CAAC,EAAC,CAAE,CAAC,SAASoU,IAAG,CAAC,OAAOpS,EAAE,QAAYwoB,EAAE,SAAN,CAAY,CAAC,SAASvd,EAAEzK,EAAE5L,GAAE,CAAC,OAAOuM,GAAEX,EAAER,EAAE,uBAAgCA,EAAE,cAAcmB,EAAC,IAA1B,SAA8BnB,EAAE,cAAcmB,EAAC,EAAEnB,EAAE,sBAAsBmB,EAAC,IAASnB,EAAE,cAAcmB,EAAC,GAAGnB,EAAE,iBAA5B,GAAoDpL,KAAT,QAAqBA,KAAT,QAAsBA,KAAV,SAAuBA,KAAV,UAAc,SAAS4L,GAAE,CAAC,GAAG8K,EAAE,KAAK9K,EAAC,EAAE,CAAC,IAAI5L,GAAE,WAAW4L,EAAC,EAAE,GAAGzB,EAAEnK,IAAGA,GAAEtB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAEsB,EAAC,EAAE,WAAWA,EAAC,EAAE2gC,GAAE,KAAK3gC,EAAC,EAAE,IAAI,KAAKA,EAAC,EAAOA,KAAL,GAAO,KAAKA,IAAGA,GAAE,IAAIuM,EAAC,CAAC,SAASkK,GAAE7K,EAAE5L,GAAEuM,GAAE7N,GAAE,CAAC,IAAIyL,GAAE,CAAC,KAAKyB,EAAE,KAAK5L,GAAE,QAAQuM,EAAC,EAAW7N,KAAT,SAAayL,GAAE,IAAIzL,IAAG0K,EAAE,OAAO,KAAKe,EAAC,CAAC,CAAC,KAAK,MAAM,SAASyB,EAAE5L,GAAEuM,GAAE,CAAC,IAAI7N,GAAE0M,EAAE,WAAW,IAAI,GAAGA,EAAE,UAAUA,EAAE,QAAQ,SAASQ,EAAE5L,EAAE,CAAC4L,EAAEA,EAAE,UAAU,EAAE,OAAO,EAAE,IAAIW,EAAE,IAAI,OAAOm0B,EAAE1gC,CAAC,EAAE,UAAU0gC,EAAE1gC,CAAC,EAAE,IAAI,EAAEtB,GAAGkN,EAAEA,EAAE,QAAQW,EAAE,EAAE,GAAG,MAAM,IAAI,EAAEpC,EAAEyB,EAAE,MAAM;AAAA,CAAI,EAAE8K,EAAE,EAAEvM,EAAE,QAAQA,EAAE,CAAC,EAAE,OAAOzL,EAAE,CAAC,EAAE,OAAO,GAAOA,EAAE,SAAN,GAAcgY,EAAE,MAAM;AAAA,EAAK,QAAQ9W,GAAE,EAAEyP,EAAE,EAAEA,EAAE3Q,EAAE,OAAO2Q,IAAW3Q,EAAE2Q,CAAC,EAAE,CAAC,IAAb;AAAA,GAAgBzP,KAAI,OAAOA,IAAGlB,EAAE,OAAO,EAAE;AAAA,EAAO,IAAI,EAAEkN,EAAElN,EAAC,GAAG8hC,EAAE,GAAGp1B,EAAE,UAAUq1B,EAAEr1B,EAAE,SAAS,IAAIA,EAAE,UAAUA,EAAE,UAAUQ,CAAC,EAAExC,EAAE,KAAK,UAAUgC,EAAE,eAAe,CAAC,IAAIjB,GAAE,SAASyB,EAAE5L,EAAEuM,EAAE7N,EAAEyL,EAAE,CAAC,IAAIuM,EAAE9W,GAAEyP,EAAEmxB,GAAEr2B,EAAEA,GAAG,CAAC,IAAI,IAAK,IAAI,IAAItK,EAAE,WAAWA,EAAE,QAAQ,EAAE,QAAQ8gC,GAAE,EAAEA,GAAEx2B,EAAE,OAAOw2B,KAAI,CAAC,IAAIxvB,GAAEhH,EAAEw2B,EAAC,EAAE95B,GAAE,EAAE+sB,GAAE,EAAExqB,GAAE,EAAEiG,EAAE,OAAO,QAAQlP,GAAE,IAAIygC,EAAE,CAAC,SAASliC,EAAE,UAAUyS,GAAE,QAAQnR,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM4L,CAAC,EAAEwe,GAAE,EAAEA,GAAEjqB,GAAE,KAAK,OAAOiqB,KAAI,GAAG7d,GAAGlJ,EAAElD,GAAE,KAAKiqB,EAAC,CAAC,EAAEhhB,SAAQ,CAAC,IAAIoU,GAAErd,GAAE,KAAKiqB,EAAC,EAAE,OAAOwJ,IAAGpW,GAAWnO,IAAT,OAAW,EAAEmO,KAAI3W,IAAG,KAAK,IAAI2W,GAAEnO,CAAC,EAAEA,EAAEmO,IAAGnO,EAAEmO,EAAC,CAAC,EAAErd,GAAE,KAAK,SAASyzB,IAAGzzB,GAAE,KAAK,OAAOiJ,KAAaxJ,KAAT,QAAYiH,IAAGjH,MAAc4gC,KAAT,QAAYA,GAAE5M,KAAI,KAAKA,KAAIh0B,GAAEiH,GAAE6P,EAAEvF,GAAEqvB,GAAE5M,GAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAExoB,EAAE,UAAUsL,GAAG,cAAcA,CAAC,CAAC,EAAE9K,EAAER,EAAE,QAAQA,EAAE,eAAeA,EAAE,SAASA,EAAE,iBAAiB,EAAEjB,GAAE,WAAWiB,EAAE,UAAUjB,GAAE,eAAeq2B,EAAE,GAAGp1B,EAAE,UAAUvL,EAAE,kBAAkBuJ,EAAE,KAAK,UAAUgC,EAAE,SAAS,CAAC,IAAIsL,EAAEmqB,EAAEz1B,CAAC,EAAE,OAAOA,EAAE,SAASA,EAAE,QAAQsL,EAAE,UAAU9W,EAAEgM,EAAEyD,EAAE,IAAIuxB,EAAElqB,CAAC,EAAEtN,EAAEiG,EAAE,MAAMzP,EAAEI,GAAEuM,EAAC,EAAE6d,EAAG,EAACvjB,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAEuC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,OAAO,UAAU,CAAC,OAAOvC,CAAC,EAAE,KAAK,MAAM,UAAU,CAACA,EAAE,GAAGwI,EAAE,MAAK,EAAGzP,EAAE6gC,EAAEr1B,EAAE,KAAK,EAAE,GAAGxL,EAAE,UAAUyP,EAAE,aAAc,CAAA,CAAC,EAAE,KAAK,OAAO,UAAU,CAACrP,EAAE,SAAS,SAAS6G,EAAE,GAAG7G,EAAE,SAAS,WAAWJ,EAAE,EAAE,GAAG,WAAWI,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,UAAU,CAAC,OAAO4L,CAAC,EAAE,KAAK,MAAM,UAAU,CAACA,EAAE,GAAGyD,EAAE,MAAO,EAACjG,EAAE,KAAK,QAAQ,GAAGq3B,EAAEr1B,EAAE,QAAQ,GAAGA,EAAE,SAAShC,CAAC,EAAExJ,EAAE,EAAE,CAAC,CAAC,SAAS8gC,EAAE90B,EAAE,CAAC,OAAOA,EAAE,QAAQ,sBAAsB,MAAM,CAAC,CAAC,SAASg1B,EAAEjiC,EAAE,CAAC,IAAI2Q,EAAEwxB,GAAGniC,EAAEA,GAAG,CAAA,GAAI,UAAUoiC,EAAEpiC,EAAE,QAAQqiC,EAAEriC,EAAE,SAASgN,EAAEhN,EAAE,KAAKsiC,EAAEtiC,EAAE,QAAQuiC,GAAEviC,EAAE,SAASwiC,EAAE7xB,EAAW3Q,EAAE,YAAX,QAA6BA,EAAE,YAAT,KAAmB,IAAIA,EAAE,UAAU,GAAYA,EAAE,aAAX,SAAwBwiC,EAAExiC,EAAE,aAAuB,OAAOmiC,GAAjB,UAAoB,GAAGjhC,EAAE,eAAe,QAAQihC,CAAC,KAAKA,EAAE,KAAKE,IAAIF,EAAE,MAAM,IAAI,MAAM,qCAAqC,EAAOE,IAAL,GAAOA,EAAE,KAAe,OAAOA,GAAjB,UAAoB,GAAGnhC,EAAE,eAAe,QAAQmhC,CAAC,KAAKA,EAAE,IAAWD,IAAP;AAAA,GAAiBA,IAAP,MAAmBA,IAAT;AAAA,IAAaA,EAAE;AAAA,GAAM,IAAIK,EAAE,EAAEC,EAAE,GAAG,KAAK,MAAM,SAAS3iC,EAAEsB,EAAEuM,EAAE,CAAC,GAAa,OAAO7N,GAAjB,SAAmB,MAAM,IAAI,MAAM,wBAAwB,EAAE,IAAIyL,EAAEzL,EAAE,OAAOkN,EAAEk1B,EAAE,OAAOpqB,EAAEqqB,EAAE,OAAOnhC,EAAEohC,EAAE,OAAO3xB,GAAEoxB,EAAE90B,CAAC,EAAE60B,EAAE,CAAA,EAAGG,GAAE,CAAA,EAAGxvB,EAAE,CAAA,EAAGtK,GAAEu6B,EAAE,EAAE,GAAG,CAAC1iC,EAAE,OAAO4iC,GAAC,EAAG,GAAG3iC,EAAE,QAAQ,CAACqB,EAAE,CAAC,IAAI4zB,GAAEl1B,EAAE,MAAMqiC,CAAC,EAAE,CAAC,EAAE,MAAMD,CAAC,EAAE13B,GAAE,CAAE,EAACjJ,GAAE,CAAA,EAAGiqB,EAAE,GAAG,QAAQ5M,KAAKoW,GAAE,CAAC,IAAIxoB,EAAEwoB,GAAEpW,CAAC,EAAEijB,EAAE9hC,EAAE,eAAe,IAAIyM,EAAEzM,EAAE,gBAAgByM,EAAEoS,CAAC,GAAG,IAAIna,EAAE+H,EAAEiL,EAAElW,GAAEiL,CAAC,GAAG,EAAE,IAAI,EAAEiL,IAAI+T,EAAE,GAAG/mB,EAAE+H,EAAE,IAAIiL,GAAGlW,GAAEiL,CAAC,EAAEiL,EAAE,EAAEjN,GAAE,SAAS/F,CAAC,GAAGA,EAAEA,EAAE,IAAIgT,EAAEjN,GAAE,KAAK/F,CAAC,CAAC,CAAC,GAAG+mB,EAAE,CAAC,IAAI3T,EAAE/X,EAAE,MAAMqiC,CAAC,EAAEtqB,EAAE,CAAC,EAAErN,GAAE,KAAK03B,CAAC,EAAEpiC,EAAE+X,EAAE,KAAKsqB,CAAC,CAAC,CAAC,CAAC,GAAGG,IAAQA,KAAL,IAAaxiC,EAAE,QAAQ4Q,CAAC,IAAhB,GAAkB,CAAC,QAAQzP,EAAEnB,EAAE,MAAMqiC,CAAC,EAAEH,GAAE,EAAEA,GAAE/gC,EAAE,OAAO+gC,KAAI,CAAC,GAAGzvB,EAAEtR,EAAE+gC,EAAC,EAAEQ,GAAGjwB,EAAE,OAAOyvB,KAAI/gC,EAAE,OAAO,EAAEuhC,GAAGL,EAAE,eAAex0B,EAAE,OAAO+0B,GAAG,EAAC,GAAG,CAACN,GAAG7vB,EAAE,UAAU,EAAEvR,CAAC,IAAIohC,EAAE,CAAC,GAAG3xB,IAAG,GAAGmxB,EAAE,CAAA,EAAGe,GAAEpwB,EAAE,MAAM2vB,CAAC,CAAC,EAAEU,GAAG,EAACH,EAAE,OAAOC,GAAG,OAAMC,GAAEpwB,EAAE,MAAM2vB,CAAC,CAAC,EAAE,GAAGG,GAAGA,GAAGL,GAAE,OAAOJ,EAAEA,EAAE,MAAM,EAAES,CAAC,EAAEK,GAAE,EAAE,CAAC,CAAC,CAAC,OAAOA,GAAG,CAAA,CAAC,QAAQT,EAAEniC,EAAE,QAAQoiC,EAAEM,CAAC,EAAEK,GAAE/iC,EAAE,QAAQqiC,EAAEK,CAAC,EAAEM,GAAE,IAAI,OAAOhB,EAAES,CAAC,EAAET,EAAEpxB,CAAC,EAAE,GAAG,EAAEqyB,GAAEjjC,EAAE,QAAQ4Q,EAAE8xB,CAAC,IAAI,GAAG1iC,EAAE0iC,CAAC,IAAI9xB,EAAE,GAAG0xB,GAAO7vB,EAAE,SAAN,GAAczS,EAAE,UAAU0iC,EAAEA,EAAExhC,CAAC,IAAIohC,EAAE,CAAC,GAAQS,KAAL,GAAO,OAAOH,GAAG,EAACF,EAAEK,GAAE/qB,EAAE+qB,GAAE/iC,EAAE,QAAQqiC,EAAEK,CAAC,EAAEP,EAAEniC,EAAE,QAAQoiC,EAAEM,CAAC,CAAC,SAAcP,IAAL,KAASA,EAAEY,IAAQA,KAAL,IAAQtwB,EAAE,KAAKzS,EAAE,UAAU0iC,EAAEP,CAAC,CAAC,EAAEO,EAAEP,EAAEj1B,EAAEi1B,EAAEniC,EAAE,QAAQoiC,EAAEM,CAAC,MAAM,CAAC,GAAQK,KAAL,GAAO,MAAM,GAAGtwB,EAAE,KAAKzS,EAAE,UAAU0iC,EAAEK,EAAC,CAAC,EAAEG,GAAEH,GAAE/qB,CAAC,EAAErH,KAAImyB,GAAC,EAAGH,GAAG,OAAOC,KAAI,GAAGL,GAAGT,EAAE,QAAQS,EAAE,OAAOK,GAAE,EAAE,CAAC,KAAM,KAAIK,GAAEP,EAAEA,MAAM,CAAC,IAASO,GAAEjjC,EAAE,QAAQ4Q,EAAEqyB,GAAE,CAAC,KAAvB,GAA0B,OAAOp1B,GAAGo0B,GAAE,KAAK,CAAC,KAAK,SAAS,KAAK,gBAAgB,QAAQ,4BAA4B,IAAIH,EAAE,OAAO,MAAMY,CAAC,CAAC,EAAES,GAAG,EAAC,GAAGF,KAAIx3B,EAAE,EAAE,OAAO03B,GAAEnjC,EAAE,UAAU0iC,EAAEO,EAAC,EAAE,QAAQD,GAAEpyB,CAAC,CAAC,EAAE,GAAGA,IAAI6xB,GAAGziC,EAAEijC,GAAE,CAAC,IAAIR,GAAG,GAAG7xB,IAAI6xB,GAAOQ,KAAJ,GAAOjjC,EAAEijC,GAAE,CAAC,IAAIR,EAAE,CAAMN,IAAL,IAAQA,EAAEc,GAAE,IAAId,EAAEniC,EAAE,QAAQoiC,EAAEa,GAAE,CAAC,GAAQF,KAAL,IAAQA,GAAEE,GAAE,IAAIF,GAAE/iC,EAAE,QAAQqiC,EAAEY,GAAE,CAAC,GAAG,IAAIG,GAAEC,GAAON,KAAL,GAAOZ,EAAE,KAAK,IAAIA,EAAEY,EAAC,CAAC,EAAE,GAAG/iC,EAAE,OAAOijC,GAAE,EAAEG,GAAEl2B,CAAC,IAAIk1B,EAAE,CAAC3vB,EAAE,KAAKzS,EAAE,UAAU0iC,EAAEO,EAAC,EAAE,QAAQD,GAAEpyB,CAAC,CAAC,EAAE5Q,EAAE0iC,EAAEO,GAAE,EAAEG,GAAEl2B,CAAC,IAAI0D,IAAIqyB,GAAEjjC,EAAE,QAAQ4Q,EAAE8xB,CAAC,GAAGP,EAAEniC,EAAE,QAAQoiC,EAAEM,CAAC,EAAEK,GAAE/iC,EAAE,QAAQqiC,EAAEK,CAAC,EAAE,KAAK,CAAC,IAAI7qC,GAAEwrC,GAAEN,EAAC,EAAE,GAAG/iC,EAAE,UAAUijC,GAAE,EAAEprC,GAAEorC,GAAE,EAAEprC,GAAEmgB,CAAC,IAAIqqB,EAAE,CAAC,GAAG5vB,EAAE,KAAKzS,EAAE,UAAU0iC,EAAEO,EAAC,EAAE,QAAQD,GAAEpyB,CAAC,CAAC,EAAEsyB,GAAED,GAAE,EAAEprC,GAAEmgB,CAAC,EAAEmqB,EAAEniC,EAAE,QAAQoiC,EAAEM,CAAC,EAAEO,GAAEjjC,EAAE,QAAQ4Q,EAAE8xB,CAAC,EAAE/xB,KAAImyB,GAAG,EAACH,GAAG,OAAOC,GAAG,EAAC,GAAGL,GAAGT,EAAE,QAAQS,EAAE,OAAOK,GAAE,EAAE,EAAE,KAAK,CAACX,GAAE,KAAK,CAAC,KAAK,SAAS,KAAK,gBAAgB,QAAQ,8CAA8C,IAAIH,EAAE,OAAO,MAAMY,CAAC,CAAC,EAAEO,IAAG,OAAOA,IAAG,CAAC,OAAOE,GAAG,EAAC,SAASN,GAAE31B,GAAE,CAAC40B,EAAE,KAAK50B,EAAC,EAAE/E,GAAEu6B,CAAC,CAAC,SAASW,GAAEn2B,GAAE,CAAC,IAAI5L,GAAE,EAAE,GAAQ4L,KAAL,GAAO,CAAC,IAAIW,GAAE7N,EAAE,UAAUijC,GAAE,EAAE/1B,EAAC,EAAEW,IAAQA,GAAE,KAAM,IAAb,KAAgBvM,GAAEuM,GAAE,OAAO,CAAC,OAAOvM,EAAC,CAAC,SAAS6hC,GAAEj2B,GAAE,CAAC,OAAOW,IAAaX,KAAT,SAAaA,GAAElN,EAAE,UAAU0iC,CAAC,GAAGjwB,EAAE,KAAKvF,EAAC,EAAEw1B,EAAEj3B,EAAEo3B,GAAEpwB,CAAC,EAAE9B,IAAGmyB,GAAG,GAAEF,GAAG,CAAA,CAAC,SAASM,GAAEh2B,GAAE,CAACw1B,EAAEx1B,GAAE21B,GAAEpwB,CAAC,EAAEA,EAAE,CAAE,EAACswB,GAAE/iC,EAAE,QAAQqiC,EAAEK,CAAC,CAAC,CAAC,SAASE,GAAE11B,GAAE,CAAC,MAAM,CAAC,KAAK40B,EAAE,OAAOG,GAAE,KAAK,CAAC,UAAUG,EAAE,UAAUC,EAAE,QAAQM,EAAE,UAAU,CAAC,CAACz1B,GAAE,OAAO/E,IAAG7G,GAAG,EAAE,CAAC,CAAC,CAAC,SAASwhC,IAAG,CAAC71B,EAAE21B,GAAC,CAAE,EAAEd,EAAE,CAAE,EAACG,GAAE,EAAE,CAAC,EAAE,KAAK,MAAM,UAAU,CAACU,EAAE,EAAE,EAAE,KAAK,aAAa,UAAU,CAAC,OAAOD,CAAC,CAAC,CAAC,SAAS5jB,EAAE5R,EAAE,CAAC,IAAI5L,EAAE4L,EAAE,KAAKW,EAAE3M,EAAEI,EAAE,QAAQ,EAAEtB,EAAE,GAAG,GAAGsB,EAAE,MAAMuM,EAAE,UAAUvM,EAAE,MAAMA,EAAE,IAAI,UAAUA,EAAE,SAASA,EAAE,QAAQ,KAAK,CAAC,IAAImK,EAAE,CAAC,MAAM,UAAU,CAACzL,EAAE,GAAG0M,EAAEpL,EAAE,SAAS,CAAC,KAAK,CAAE,EAAC,OAAO,CAAE,EAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAMqD,EAAE,OAAOA,CAAC,EAAE,GAAGo9B,EAAEl0B,EAAE,QAAQ,EAAE,CAAC,QAAQmK,EAAE,EAAEA,EAAE1W,EAAE,QAAQ,KAAK,SAASuM,EAAE,SAAS,CAAC,KAAKvM,EAAE,QAAQ,KAAK0W,CAAC,EAAE,OAAO1W,EAAE,QAAQ,OAAO,KAAKA,EAAE,QAAQ,IAAI,EAAEmK,CAAC,EAAE,CAACzL,GAAGgY,IAAI,CAAC,OAAO1W,EAAE,OAAO,MAAMygC,EAAEl0B,EAAE,SAAS,IAAIA,EAAE,UAAUvM,EAAE,QAAQmK,EAAEnK,EAAE,IAAI,EAAE,OAAOA,EAAE,QAAQ,CAACA,EAAE,UAAU,CAACtB,GAAG0M,EAAEpL,EAAE,SAASA,EAAE,OAAO,CAAC,CAAC,SAASoL,EAAEQ,EAAE5L,EAAE,CAAC,IAAIuM,EAAE3M,EAAEgM,CAAC,EAAE60B,EAAEl0B,EAAE,YAAY,GAAGA,EAAE,aAAavM,CAAC,EAAEuM,EAAE,UAAW,EAAC,OAAO3M,EAAEgM,CAAC,CAAC,CAAC,SAASvI,GAAG,CAAC,MAAM,IAAI,MAAM,kBAAkB,CAAC,CAAC,SAASw9B,EAAEj1B,EAAE,CAAC,GAAa,OAAOA,GAAjB,UAA2BA,IAAP,KAAS,OAAOA,EAAE,IAAI5L,EAAE,MAAM,QAAQ4L,CAAC,EAAE,GAAG,CAAA,EAAG,QAAQW,KAAKX,EAAE5L,EAAEuM,CAAC,EAAEs0B,EAAEj1B,EAAEW,CAAC,CAAC,EAAE,OAAOvM,CAAC,CAAC,SAASqW,EAAEzK,EAAE5L,EAAE,CAAC,OAAO,UAAU,CAAC4L,EAAE,MAAM5L,EAAE,SAAS,CAAC,CAAC,CAAC,SAASygC,EAAE70B,EAAE,CAAC,OAAkB,OAAOA,GAAnB,UAAoB,CAAC,OAAO,IAAIuF,EAAE,UAAU,SAASvF,EAAE,CAAC,IAAI5L,EAAE4L,EAAE,KAAuD,GAAzC/L,EAAE,YAAX,QAAsBG,IAAIH,EAAE,UAAUG,EAAE,UAAuB,OAAOA,EAAE,OAAnB,SAAyBmR,EAAE,YAAY,CAAC,SAAStR,EAAE,UAAU,QAAQA,EAAE,MAAMG,EAAE,MAAMA,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,UAAUmR,EAAE,MAAMnR,EAAE,iBAAiB,MAAMA,EAAE,iBAAiB,OAAO,CAAC,IAAIuM,EAAE1M,EAAE,MAAMG,EAAE,MAAMA,EAAE,MAAM,EAAEuM,GAAG4E,EAAE,YAAY,CAAC,SAAStR,EAAE,UAAU,QAAQ0M,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAIqnB,EAAE,UAAU,OAAO,OAAO,EAAE,SAAS,GAAG,YAAYA,GAAGxqB,EAAE,UAAU,OAAO,OAAO,EAAE,SAAS,GAAG,YAAYA,GAAGjJ,EAAE,UAAU,OAAO,OAAOA,EAAE,SAAS,GAAG,YAAYA,GAAGiqB,EAAE,UAAU,OAAO,OAAO,EAAE,SAAS,GAAG,YAAYA,EAAEvqB,CAAC,CAAC,0BCU17lB,MAAMmiC,WAA4BrS,EAAAA,SAAgC,CAKzD,YAAYlpB,EAAe,CAChC,MAAMA,CAAK,EAWN,KAAA,aAAgB2f,GAA+C,CAC9D,KAAA,CAAE,SAAA6b,CAAS,EAAI,KAAK,MACpBC,EAAc,CAAE,GAAGD,GAEzBC,EAAY9b,EAAM,OAAO,IAAuB,EAAIA,EAAM,OAAO,MAEjE,KAAK,SAAS,CAAE,SAAU8b,CAAa,CAAA,CAAA,EAGlC,KAAA,SAAY9b,GAAgC,CACjD,KAAM,CAAE,UAAAkW,EAAW,SAAA6F,GAAa,KAAK,MAC/B,CAAE,SAAAF,CAAS,EAAI,KAAK,MAE1B7b,EAAM,eAAe,EACrB,KAAK,SAAS,CAAE,UAAW,EAAM,CAAA,EACxB+b,EAAA,CAAE,UAAA7F,EAAW,SAAA2F,CAAA,CAAU,CAAA,EAGlC,KAAO,mBAAqB,IAAM,CAC3B,KAAA,SAAU3R,IACb,CACE,WAAY,CAACA,EAAU,UAE1B,EAAA,CAAA,EAhCK,KAAA,CAAE,SAAA2R,CAAa,EAAAx7B,EAErB,KAAK,MAAQ,CACX,SAAU,CAAE,GAAGw7B,CAAS,EACxB,WAAY,GACZ,UAAW,EAAA,CAEf,CA4BO,oBAAqB,CACpB,KAAA,CAAE,SAAAA,CAAS,EAAI,KAAK,MAE1B,uBACG,MAAI,CAAA,UAAU,YACb,EAAAhS,EAAA,cAAC,OAAI,UAAU,YACZA,EAAAA,cAAA,MAAA,CAAI,UAAU,cACb,EAAAA,gBAAC,SAAM,QAAQ,2BAAA,EAA4B,UAAQ,EACnDA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,eACV,KAAK,WACL,GAAG,4BACH,SAAU,KAAK,aACf,MAAOgS,EAAS,QAAA,CAEpB,CAAA,EAEAhS,EAAAA,cAAC,MAAI,CAAA,UAAU,cACb,EAAAA,gBAAC,QAAM,CAAA,QAAQ,4BAA6B,EAAA,WAAS,EACrDA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,eACV,KAAK,YACL,GAAG,6BACH,SAAU,KAAK,aACf,MAAOgS,EAAS,SAAA,CAAA,CAEpB,CACF,EAEAhS,EAAA,cAAC,SAAM,UAAU,sBAAA,EAAuB,wIAGxC,CACF,CAEJ,CAEO,wBAAyB,CAE5B,OAAAA,EAAA,cAAC,MAAI,CAAA,UAAU,YACb,EAAAA,EAAA,cAAC,SAAA,CACC,QAAS,KAAK,mBACd,UAAU,mBAAA,EACX,8CAAA,CAGH,CAEJ,CAEO,QAAS,CACR,KAAA,CAAE,WAAAmS,CAAW,EAAI,KAAK,MACtB,CACJ,SAAAH,EACA,WAAAI,EACA,UAAAC,CAAA,EACE,KAAK,MAET,OACGrS,EAAA,cAAA,OAAA,CAAK,SAAU,KAAK,UAClBA,EAAA,cAAA,MAAA,CAAI,UAAU,YAAA,EACZA,EAAA,cAAA,QAAA,CAAM,QAAQ,uBAAA,EAAwB,MAAI,EAC3CA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,eACV,KAAK,OACL,GAAG,wBACH,UAAW,GACX,SAAU,GACV,SAAU,KAAK,aACf,MAAOgS,EAAS,IAAA,CAAA,EAEjBhS,EAAA,cAAA,QAAA,CAAM,UAAU,sBAAA,EAAuB,qEAExC,CACF,EACCA,EAAAA,cAAA,MAAA,CAAI,UAAU,YACb,EAAAA,EAAAA,cAAC,SAAM,QAAQ,0BAAA,EAA2B,SAAO,EACjDA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,eACV,KAAK,UACL,GAAG,2BACH,SAAU,GACV,SAAU,KAAK,aACf,MAAOgS,EAAS,OAAA,CAEpB,CAAA,EACAhS,EAAAA,cAAC,MAAI,CAAA,UAAU,YACb,EAAAA,gBAAC,QAAM,CAAA,QAAQ,uBAAwB,EAAA,MAAI,EAC3CA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,eACV,KAAK,OACL,GAAG,wBACH,SAAU,GACV,SAAU,KAAK,aACf,MAAOgS,EAAS,IAAA,CAEpB,CAAA,EACAhS,EAAAA,cAAC,MAAI,CAAA,UAAU,YACb,EAAAA,gBAAC,QAAM,CAAA,QAAQ,wBAAyB,EAAA,OAAK,EAC7CA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,eACV,KAAK,QACL,GAAG,yBACH,SAAU,GACV,SAAU,KAAK,aACf,MAAOgS,EAAS,KAAA,CAEpB,CAAA,EACAhS,EAAAA,cAAC,MAAI,CAAA,UAAU,YACb,EAAAA,gBAAC,QAAM,CAAA,QAAQ,sBAAuB,EAAA,KAAG,EACzCA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,eACV,KAAK,MACL,GAAG,uBACH,SAAU,GACV,SAAU,KAAK,aACf,MAAOgS,EAAS,GAAA,CAAA,CAEpB,EAECI,EAAa,KAAK,mBAAmB,EAAI,KAAK,uBAAuB,EAErEpS,gBAAA,SAAA,CAAO,KAAK,SAAS,SAAUqS,EAAW,UAAU,iBAAA,EAAmBF,CAAW,CACrF,CAEJ,CACF,CAhLMJ,GACU,aAAgC,CAC5C,WAAY,MACd,ECXF,MAAMO,WAAoC5S,EAAAA,SAA4B,CAAtE,aAAA,CAAA,MAAA,GAAA,SAAA,EACS,KAAA,YAAc,CAAC2M,EAAmBlW,IAAgC,CACjE,KAAA,CAAE,YAAAoc,CAAY,EAAI,KAAK,MAC7Bpc,EAAM,eAAe,EACToc,EAAA,CAAE,UAAAlG,EAAW,CAAA,CAC3B,CAEO,eAAejlC,EAAsB,CAC1C,KAAM,CAAE,KAAM4qC,EAAU,UAAW5vB,GAAOhb,EAE1C,uBACG,KAAG,CAAA,IAAKgb,GACN4d,EAAA,cAAA,KAAA,KAAIgS,EAAS,IAAK,EAClBhS,gBAAA,KAAA,KAAIgS,EAAS,OAAQ,kBACrB,KAAI,KAAAA,EAAS,IAAK,EACnBhS,EAAAA,cAAC,KAAI,KAAAgS,EAAS,KAAM,EACpBhS,EAAAA,cAAC,UAAIgS,EAAS,GAAI,EACjBhS,EAAA,cAAA,KAAA,KAAIgS,EAAS,QAAS,EACtBhS,gBAAA,KAAA,KAAIgS,EAAS,SAAU,kBACvB,KACC,KAAAhS,EAAA,cAAC,IAAA,CACC,KAAK,IACL,kBAAiB5d,EACjB,QAAS,KAAK,YAAY,KAAK,KAAMA,CAAE,CAAA,EAEvC4d,EAAAA,cAAC,OAAK,CAAA,UAAU,eAAgB,CAAA,CAEpC,CAAA,CACF,CAEJ,CAEO,QAAS,CACR,KAAA,CAAE,UAAAwS,CAAU,EAAI,KAAK,MACrBjpB,EAAOipB,EAAU,IAAKR,GAAa,KAAK,eAAeA,CAAQ,CAAC,EAElE,OAACQ,EAAU,OAGbxS,gBAAC,SAAM,UAAU,OAAA,kBACd,QACC,KAAAA,EAAAA,cAAC,UACEA,EAAA,cAAA,KAAA,KAAG,MAAI,EACRA,EAAA,cAAC,UAAG,SAAO,kBACV,KAAG,KAAA,MAAI,EACPA,EAAA,cAAA,KAAA,KAAG,OAAK,EACTA,EAAA,cAAC,UAAG,KAAG,kBACN,KAAG,KAAA,UAAQ,EACXA,EAAA,cAAA,KAAA,KAAG,WAAS,EACbA,EAAA,cAAC,SAAG,CACN,CACF,EACCA,EAAA,cAAA,QAAA,KACEzW,CACH,CACF,EAnB8B,IAqBlC,CACF,CC1CA,MAAMkpB,GAA8D,CAClE,CAAE,KAAM,SAAU,MAAO,wBAAyB,EAClD,CAAE,KAAM,QAAS,MAAO,0BAA2B,CACrD,EAEA,MAAMC,WAA0BhT,EAAAA,SAAgC,CAK9D,YAAYlpB,EAAe,CACzB,MAAMA,CAAK,EAoBN,KAAA,aAAgB2f,GAA+C,CAChEwc,GAAA,MACDxc,EAAM,OAAO,MAAmB,CAAC,EAClC,CACE,OAAQ,GACR,eAAgB,GAChB,SAAWkY,GAAY,CACrB,KAAK,SAAS,CACZ,UAAWA,EAAQ,KAAK,IAAK,CAACpnC,EAAMwH,KACjC,CAAE,UAAWA,EAAG,KAAAxH,CAAK,EACxB,EACA,UAAWonC,EAAQ,MAAA,CACpB,CACH,CACF,CAAA,CACF,EAGF,KAAO,UAAY,IAAM,CACvB,KAAK,SAAS,CACZ,UAAW,CAAC,EACZ,UAAW,CAAC,CAAA,CACb,CAAA,EAGH,KAAO,UAAY,CAAC,CAAE,UAAAhC,KAAuC,CACrD,KAAA,CAAE,UAAAmG,CAAU,EAAI,KAAK,MAE3B,KAAK,SAAS,CACZ,UAAWA,EAAU,OAAQlF,GAASA,EAAK,WAAajB,CAAS,CAAA,CAClE,CAAA,EAGH,KAAO,kBAAoB,CAAC,CAAE,SAAA2F,KAAwC,CAC9D,KAAA,CAAE,UAAAQ,CAAU,EAAI,KAAK,MAE3B,KAAK,SAAS,CACZ,UAAW,CAAC,GAAGA,EAAW,CAAE,UAAWA,EAAU,OAAQ,KAAMR,EAAU,CAAA,EACxE,IAAM,KAAK,WAAA,CAAY,CAAA,EAG5B,KAAO,WAAa,SAAY,CAWxB,MAAAjU,EAAO,MAVI,MAAMC,GAAW4U,GAAyB,CACzD,OAAQ,OACR,KAAM,KAAK,UAAU,CACnB,cAAe,KAAK,QAAQ,CAAA,CAC7B,EACD,QAAS,CACP,OAAU,mBACV,eAAgB,kBAClB,CAAA,CACD,GAC2B,OACtBpH,EAAS,IAAI7M,GAAcZ,CAAI,EAErC,OAAO,SAAS,KAAO,KAAKyN,EAAO,EAAE,EAAA,EAGhC,KAAA,sBAAyBqH,GAAgC,CACzD,KAAA,SAAS,CAAE,KAAAA,CAAA,CAAM,CAAA,EA9EtB,KAAK,MAAQ,CACX,UAAW,CAAC,EACZ,UAAW,CAAC,EACZ,KAAMr8B,EAAM,WAAA,CAEhB,CAEO,eAA2B,CACzB,MAAA,CACL,KAAM,GACN,QAAS,GACT,KAAM,GACN,MAAO,GACP,IAAK,GACL,SAAU,GACV,UAAW,EAAA,CAEf,CAgEO,SAAkB,CACjB,KAAA,CAAE,UAAAg8B,CAAU,EAAI,KAAK,MAC3B,OAAOM,WAAYN,EAAU,IAAKprC,GAAQA,EAAI,IAAI,EAAG,CAAE,OAAQ,EAAM,CAAA,CACvE,CAEO,cAAe,CACd,KAAA,CAAE,UAAA2rC,CAAU,EAAI,KAAK,MAE3B,OAAIA,EAAU,OACL/S,gBAAC,WAAK+S,CAAU,EAEhB,EAEX,CAEO,kBAAmB,CAEtB,OAAA/S,EAAA,cAAC,WACEA,EAAAA,cAAA,KAAA,KAAG,wBAAsB,EAC1BA,EAAAA,cAAC,IAAE,KAAA,oEAEH,EACAA,EAAA,cAAC+R,GAAA,CACC,SAAU,KAAK,cAAc,EAC7B,SAAU,KAAK,kBACf,WAAW,UAAA,CAAA,CAEf,CAEJ,CAEO,iBAAkB,CACvB,OACG/R,EAAA,cAAA,MAAA,KACEA,EAAAA,cAAA,KAAA,KAAG,4BAA0B,EAC9BA,gBAAC,IAAE,KAAA,oKAIH,EACAA,EAAAA,cAAC,KACC,KAAAA,gBAAC,OAAI,UAAU,KAAA,EACZA,EAAAA,cAAA,KAAA,CAAG,UAAU,wBAAA,EAAyB,SAAO,kBAC7C,KAAG,CAAA,UAAU,wBACZ,EAAAA,EAAA,cAAC,KAAE,KAAK,8BAAA,EAA+B,2BAAyB,CAClE,CACF,EACAA,gBAAC,MAAI,CAAA,UAAU,KACb,EAAAA,gBAAC,KAAG,CAAA,UAAU,0BAAyB,SAAO,EAC7CA,EAAAA,cAAA,KAAA,CAAG,UAAU,0BAAyB,0BAEvC,CACF,EACCA,EAAA,cAAA,MAAA,CAAI,UAAU,KAAA,EACZA,gBAAA,KAAA,CAAG,UAAU,wBAAA,EAAyB,SAAO,EAC9CA,gBAAC,KAAG,CAAA,UAAU,0BACXA,EAAAA,cAAA,OAAA,KACEA,EAAAA,cAAA,MAAA,CAAI,UAAU,aACb,EAAAA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,oBACV,GAAG,kBACH,SAAU,KAAK,YAAA,CAEjB,EAAAA,gBAAC,QAAM,CAAA,UAAU,oBAAoB,QAAQ,iBAAkB,EAAA,wBAAsB,CACvF,CACF,CACF,CACF,CACF,CACF,CAEJ,CAEO,YAAa,CACZ,KAAA,CAAE,mBAAAgT,CAAmB,EAAI,KAAK,MAC9B,CAAE,KAAAH,CAAK,EAAI,KAAK,MAClB,IAAAI,EAEJ,OAAIJ,GAAQ,SACVI,EAAe,KAAK,mBACXJ,GAAQ,UACjBI,EAAe,KAAK,mBAInBjT,EAAA,cAAA,MAAA,CAAI,UAAU,KAAA,kBACZ,MAAI,CAAA,UAAU,sBACb,EAAAA,EAAAA,cAAC,OAAI,UAAU,UAAA,EACZA,gBAAA,MAAA,CAAI,UAAU,cACb,EAAAA,EAAA,cAACkT,GAAA,CACC,OAAO,2BACP,QAAST,GACT,SAAUI,EACV,SAAU,KAAK,qBAAA,CAAA,CAEnB,EACC7S,EAAA,cAAA,MAAA,CAAI,UAAU,yBACb,EAAAA,EAAA,cAAC,MAAI,KAAA,mBACcgT,IAAuB,WAAahT,EAAA,cAAAmT,EAAA,SAAA,KAAE,GAAO,EAAMH,CACtE,EACCA,IAAuB,WAAa,GAAMhT,gBAAA,MAAA,KAAKA,EAAA,cAAA,IAAA,CAAE,KAAK,iBAAkB,EAAA,kBAAgB,CAAI,CAC/F,CACF,EAEC,KAAK,aAAa,EAClBiT,CACH,CACF,CAEJ,CAEO,YAAa,CACZ,KAAA,CAAE,UAAAT,CAAU,EAAI,KAAK,MAE3B,OACKxS,EAAAA,cAAA,MAAA,KACAA,EAAAA,cAAA,KAAA,KAAG,+BAA6B,EAChCA,EAAAA,cAAA,IAAA,KAAE,YACSwS,EAAU,OAAO,0EAE7B,EACAxS,EAAA,cAAC,MAAI,CAAA,UAAU,YACbA,EAAAA,cAAC,MAAI,CAAA,UAAU,cACb,EAAAA,EAAA,cAAC,SAAO,CAAA,QAAS,KAAK,UAAW,UAAU,2BAAA,kBACxC,OAAK,CAAA,UAAU,0BAA0B,EAAE,sBAE9C,CACF,EACAA,EAAA,cAAC,MAAI,CAAA,UAAU,yBACb,EAAAA,EAAAA,cAAC,SAAO,CAAA,QAAS,KAAK,WAAY,UAAU,iBAAA,EAAkB,YACnDA,EAAAA,cAAC,OAAK,CAAA,UAAU,0BAA2B,CAAA,CACtD,CACF,CACF,EACAA,EAAAA,cAACsS,GAA4B,CAAA,UAAAE,EAAsB,YAAa,KAAK,SAAW,CAAA,CAClF,CAEJ,CAEO,QAAS,CACd,KAAM,CAAE,UAAAA,EAAW,KAAAK,GAAS,KAAK,MAEjC,OAAIL,EAAU,QAAU,GAAKK,GAAQ,SAC5B,KAAK,aAEL,KAAK,YAEhB,CACF,CA7OMH,GACU,aAAgC,CAC5C,YAAa,QACf,4IC1BWU,GAAmD,CAAC,CAAE,SAAAC,KAChErT,EAAA,cAAA,MAAA,qBACE,MACC,KAAAA,EAAAA,cAAC,cAAQqT,EAAS,KAAK,KAAGA,EAAS,aAAa,GAAC,CACnD,EACCrT,EAAAA,cAAA,MAAA,KACEqT,EAAS,UACZ,EACCrT,gBAAA,MAAA,KACEqT,EAAS,OACZ,kBACC,MACE,KAAAA,EAAS,KAAK,KAAGA,EAAS,MAAM,IAAEA,EAAS,GAC9C,EACCrT,EAAAA,cAAA,MAAA,KACEqT,EAAS,SAAS,KAAGA,EAAS,SACjC,CACF,ECpBIC,GAAmC,CACvC,CAAC,IAAM,CAAC,IAAM,IAAM,GAAI,CAAC,EACzB,CAAC,EAAM,CAAC,IAAM,IAAM,CAAI,CAAC,EACzB,CAAC,KAAM,CAAC,IAAM,IAAM,CAAI,CAAC,EACzB,CAAC,IAAM,CAAC,IAAM,IAAM,CAAI,CAAC,EACzB,CAAC,KAAM,CAAC,IAAM,IAAM,CAAI,CAAC,EACzB,CAAC,EAAM,CAAC,IAAM,GAAM,CAAI,CAAC,EACzB,CAAC,KAAM,CAAC,IAAM,GAAM,CAAI,CAAC,EACzB,CAAC,IAAM,CAAC,IAAM,EAAM,CAAI,CAAC,EACzB,CAAC,KAAM,CAAC,IAAM,GAAM,CAAI,CAAC,EACzB,CAAC,EAAM,CAAC,IAAM,GAAM,CAAI,CAAC,EACzB,CAAC,KAAM,CAAC,IAAM,EAAM,GAAI,CAAC,EACzB,CAAC,IAAM,CAAC,IAAM,EAAM,GAAI,CAAC,EACzB,CAAC,KAAM,CAAC,IAAM,EAAM,GAAI,CAAC,EACzB,CAAC,EAAM,CAAC,IAAM,GAAM,GAAI,CAAC,CAC3B,EAEO,SAASC,GAAaC,EAA6B,CACxD,OACEF,GAAY,KAAMG,GAAUA,EAAM,CAAC,GAAKD,CAAU,GAAK,CAAC,KAAM,CAAC,EAAG,EAAG,CAAC,CAAC,GACvE,CAAC,CACL,CAEO,SAASE,GAAmBF,EAA8B,CAC/D,MAAO,OAAOD,GAAaC,CAAU,EAAE,IAAK1uC,GAAUA,EAAM,SAAS,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,GACtF,CAEO,SAAS6uC,GAAUhlC,EAAwB,CAChD,MAAO,GAAGA,EAAK,QAAQ,CAAC,CAAC,GAC3B,CC7BA,MAAAq8B,GAAA,OAAA,IASM4I,GAAgBC,GAEhBC,GAAiB,GACjBC,GAAY,kCACZC,GAAmC,CAAC,GAAM,IAAM,EAAI,EACpDC,GAAqB,CACzB,MAAO,OACP,OAAQ,OACR,SAAU,MACV,UAAW,OACX,KAAM,GACR,EAgCa,MAAAC,WAAYxU,EAAAA,SAAgC,CAKhD,YAAYlpB,EAAe,CAChC,MAAMA,CAAK,EA6Bb,KAAQ,cAAgB,IAAM,CAC5B,KAAM,CAAE,EAAAlQ,EAAG,EAAA8M,GAAM,KAAK,MAEtB,GAAI,GAAC,KAAK,YAAA,GAAiB,CAAC9M,GAAK,CAAC8M,GAElC,uBACG,MAAI,CAAA,UAAU,cAAc,MAAO,CAAE,IAAKA,EAAI0gC,GAAgB,KAAMxtC,EAAIwtC,KACtE,KAAK,4BACL,KAAK,wBACR,CAAA,EAsCJ,KAAQ,oBAAsB,CAAC,CAAE,EAAAxtC,EAAG,EAAA8M,EAAG,OAAArM,KAA8D,CACnG,KAAK,SAAS,CAAE,EAAAT,EAAG,EAAA8M,EAAG,gBAAiBrM,EAAQ,CAAA,EAGjD,KAAQ,iBAAmB,CAACotC,EAAY,CAAE,EAAA7tC,EAAG,EAAA8M,EAAG,OAAArM,KAAoD,CAClG,KAAK,SAAS,CAAE,EAAAT,EAAG,EAAA8M,EAAG,aAAcrM,EAAS,CAAE,GAAGA,EAAQ,KAAAotC,CAAA,EAAS,MAAW,CAAA,CAAA,EA/E9E,KAAK,MAAQ,EAEf,CAEO,QAAS,CACR,KAAA,CAAE,iBAAAC,CAAiB,EAAI,KAAK,MAGhC,OAAApU,EAAA,cAAC4T,GAAA,CACC,OAAQ,KAAK,aAAa,EAC1B,iBAAAQ,EACA,WAAY,EAAA,EAEZpU,EAAA,cAACqU,GAAA,CACC,MAAOD,EAAiB,MACxB,OAAQA,EAAiB,OACzB,UAAW,GACX,SAAUL,GACV,oBAAqB,GACrB,qBAAsB/I,GAAI,UAAU,qBAAA,CACtC,EAEC,KAAK,aAAA,CAGZ,CAeQ,2BAA4B,CAC5B,KAAA,CAAE,gBAAAsJ,CAAgB,EAAI,KAAK,MAEjC,GAAKA,EAEE,OAAAtU,EAAA,cAACoT,GAAgB,CAAA,SAAUkB,CAAiB,CAAA,CACrD,CAEQ,wBAAyB,CACzB,KAAA,CAAE,aAAAC,CAAa,EAAI,KAAK,MAE9B,GAAI,CAACA,EAAgB,OACf,MAAAC,EAAWD,EAAa,WAAW,MAEnCE,EAAe,CACnB,MAAO,SACP,OAAQ,SACR,gBAAiBC,GAA4BF,CAAQ,CAAA,EAGvD,OACGxU,EAAAA,cAAA,MAAA,KACEA,EAAAA,cAAA,MAAA,CAAI,UAAU,QAAA,EACZA,EAAAA,cAAA,MAAA,CAAI,UAAU,eAAe,MAAOyU,CAAA,CAAc,EAEnDzU,EAAA,cAAC,SAAO,KAAA,cACM2U,GAAmBH,CAAQ,CACzC,CACF,EACCxU,EAAAA,cAAA,MAAA,KAAKuU,EAAa,KAAK,mBAAqB,CAAA,CAC/C,CAEJ,CAUQ,cAAe,CACf,KAAA,CAAE,WAAAK,CAAW,EAAI,KAAK,MAErB,MAAA,CACL,GAAGA,EAAW,IAAKT,GAAS,KAAK,WAAWA,CAAI,CAAC,EACjD,KAAK,WAAW,CAChB,EAAA,OAAQx4B,GAAMA,IAAM,IAAI,CAC5B,CAEQ,aAAuB,CAC7B,KAAM,CAAE,aAAA44B,EAAc,gBAAAD,GAAoB,KAAK,MAExC,MAAA,CAAC,EAAEC,GAAgBD,EAC5B,CAEQ,YAAa,CACf,GAAA,CAAE,aAAAO,CAAa,EAAI,KAAK,MAE5B,OAAKA,IACYA,EAAA,MAGV,IAAIzoC,GAAgC,CACzC,GAAI,aACJ,KAAMyoC,EACN,SAAU,GACV,QAAS,GACT,QAAS,GACT,OAAQ,GACR,gBAAiB,EACjB,YAAc3kC,GAAM,CAACA,EAAE,UAAWA,EAAE,QAAQ,EAC5C,UAAW,EACX,aAAc8jC,GACd,QAAS,KAAK,mBAAA,CACf,CACH,CAEQ,WAAWc,EAAiB,CAClC,OAAO,IAAI/jB,GAA8B,CACvC,GAAI,eAAegkB,GAAcD,CAAS,CAAC,GAC3C,KAAME,GAAyBF,CAAS,EACxC,QAAS,GACT,QAAS,GACT,OAAQ,GACR,UAAW,GACX,aAAe5zB,GAAM+zB,GAAsB/zB,EAAE,WAAW,KAAK,EAC7D,SAAU,GACV,QAAS,KAAK,iBAAiB,KAAK,KAAM4zB,CAAS,CAAA,CACpD,CACH,CACF,CA5IaZ,GACG,aAAgC,CAC5C,iBAAkBD,EACpB,EC1CW,MAAAiB,WAAsBxV,EAAAA,SAAgC,CAA5D,aAAA,CAAA,MAAA,GAAA,SAAA,EAwEG,KAAA,sBAAyBvJ,GAA+C,CACxE,MAAAgf,EAAgBhf,EAAM,OAAO,MAC9Bgf,GAEL,KAAK,aAAaA,CAAa,CAAA,EAGjC,KAAQ,4BAA8B,IAAM,CAC1C,KAAM,CAAE,UAAAL,EAAW,wBAAAM,GAA4B,KAAK,MAEpDA,EAAwBN,CAAS,CAAA,CACnC,CA9EO,QAAS,CACd,KAAM,CAAE,MAAA3F,EAAO,UAAA2F,EAAW,YAAAO,CAAA,EAAgB,KAAK,MACzCC,EAAWD,EAAY,SAASP,CAAS,EAG7C,OAAA9U,EAAAA,cAAC,MAAI,CAAA,UAAU,WACb,EAAAA,EAAAA,cAAC,OAAI,UAAU,UAAA,EACZA,EAAAA,cAAA,MAAA,CAAI,UAAU,QAAA,kBACZ,KACE,KAAAmP,CACH,CACF,EACCnP,EAAAA,cAAA,MAAA,CAAI,UAAU,QACb,EAAAA,EAAAA,cAAC,MAAI,CAAA,UAAU,uCACb,EAAAA,EAAA,cAAC,SAAA,CACC,UAAU,sCACV,QAAS,KAAK,kBAAkB,KAAK,KAAM,EAAE,CAAA,EAC9C,GAAA,EAGDA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,UAAU,eACV,MAAO8U,EACP,IAAK,KAAK,aAAa,EACvB,SAAU,KAAK,qBAAA,CAAA,EAEjB9U,EAAA,cAAC,SAAA,CACC,UAAU,sCACV,QAAS,KAAK,kBAAkB,KAAK,KAAM,CAAC,EAC5C,SAAU8U,GAAa,KAAK,aAAa,CAAA,EAC1C,GAAA,EAGD9U,EAAA,cAAC,SAAA,CACC,UAAW,mBAAmBsV,EAAW,cAAgB,qBAAqB,GAC9E,QAAS,KAAK,2BAAA,EAEdtV,EAAAA,cAAC,IAAE,CAAA,UAAU,kBAAmB,CAAA,CAEpC,CAAA,EACC,KAAK,mBACR,CAAA,CACF,CACF,CAEJ,CAEQ,oBAAqB,CACrB,KAAA,CAAE,YAAAqV,CAAY,EAAI,KAAK,MAEzB,GAAA,CAACA,EAAY,OAAU,OAE3B,MAAME,EAAyBF,EAC5B,KAAK,EACL,IAAKG,GAAgBC,GAAgBD,CAAU,EAAG,mBAAA,CAAoB,EACtE,KAAK,IAAI,EAEZ,uBACG,MAAI,CAAA,UAAU,gBACb,EAAAxV,EAAA,cAAC,QAAK,MAAOuV,CAAA,EAAgB,WAClBF,EAAY,OAAO,WAASzX,GAAU,QAASyX,EAAY,MAAM,CAC5E,CACF,CAEJ,CAeQ,kBAAkBK,EAAkB,CACpC,KAAA,CAAE,UAAAZ,CAAU,EAAI,KAAK,MACrBa,EAAUF,GAAgBX,CAAS,EAEzCa,EAAQ,QAAQA,EAAQ,QAAQ,EAAID,CAAQ,EACvC,KAAA,aAAaX,GAAcY,CAAO,CAAC,CAC1C,CAEQ,aAAaC,EAAyB,CACtC,KAAA,CAAE,kBAAAC,CAAkB,EAAI,KAAK,MACnC,IAAIV,EAAgBS,EAEhBA,EAAkB,KAAK,iBACzBT,EAAgB,KAAK,gBAGvBU,EAAkBV,CAAa,CACjC,CAEQ,cAAuB,CAC7B,OAAO,KAAK,WACd,CAEQ,WAAoB,CACpB,MAAAhB,MAAW,KACjB,OAAAA,EAAK,QAAQA,EAAK,QAAQ,EAAI,CAAC,EACxBY,GAAcZ,CAAI,CAC3B,CACF,CAjHae,GACG,aAAgC,CAC5C,MAAO,WACT,ECHW,MAAAY,WAAgBpW,EAAAA,SAAgC,CACpD,YAAYlpB,EAAe,CAChC,MAAMA,CAAK,EA2DL,KAAA,iBAAoBm/B,GAAoB,CAC9C,KAAK,SAAS,CAAE,UAAWA,CAAS,CAAA,CAAA,EAG9B,KAAA,uBAA0BI,GAAuB,CAEpD,KAAA,SAAU1V,IAAe,CAAE,YAAa,KAAK,cAAcA,EAAU,YAAa0V,CAAU,CAAA,EAAI,CAAA,EA/DnG,KAAK,MAAQ,CACX,UAAWhB,GAAcU,GAAgBj/B,EAAM,WAAW,CAAC,EAC3D,YAAa,CAAC,CAAA,CAElB,CAEO,QAAS,CACR,KAAA,CAAE,MAAA24B,CAAM,EAAI,KAAK,MACjB,CAAE,UAAA2F,EAAW,YAAAO,GAAgB,KAAK,MAExC,OACGrV,EAAA,cAAA,MAAA,CAAI,UAAU,mCAAA,kBACZ,MACC,KAAAA,EAAA,cAACkV,GAAA,CACC,UAAAJ,EACA,YAAAO,EACA,MAAAlG,EACA,kBAAmB,KAAK,iBACxB,wBAAyB,KAAK,sBAAA,CAAA,CAElC,EACCnP,EAAA,cAAA,MAAA,CAAI,UAAU,yBACb,EAAAA,EAAA,cAACkU,GAAA,CACC,WAAY,KAAK,qBAAqB,IAAIuB,EAAe,EACzD,aAAc,KAAK,aAAa,CAAA,CAEpC,CAAA,CACF,CAEJ,CAEQ,oBAAqB,CAC3B,KAAM,CAAE,UAAAX,EAAW,YAAAO,GAAgB,KAAK,MAEpC,OAAA,KAAK,aAAaP,CAAS,EACtBO,EAEA,CAACP,EAAW,GAAGO,CAAW,CAErC,CAEQ,aAAaW,EAA4B,CACzC,KAAA,CAAE,YAAAX,CAAY,EAAI,KAAK,MACtB,OAAAA,EAAY,SAASW,CAAS,CACvC,CAEQ,cAAuB,CACvB,KAAA,CAAE,mBAAAC,CAAmB,EAAI,KAAK,MAC9B,CAAE,UAAAnB,CAAU,EAAI,KAAK,MAE3B,OAAImB,GAGK,sCAAsCnB,CAAS,EAE1D,CAWQ,cAAiBoB,EAAU5I,EAAS,CACpC,MAAA6I,EAASD,EAAI,MAAM,CAAC,EACpBE,EAAaD,EAAO,QAAQ7I,CAAI,EAEtC,OAAI8I,IAAe,GACjBD,EAAO,KAAK7I,CAAI,EAET6I,EAAA,OAAOC,EAAY,CAAC,EAGtBD,CACT,CACF,wIC9FAnL,GAAA,OAAA,IAOM4I,GAAgBC,GAEhBC,GAAiB,GACjBC,GAAY,qCACZE,GAAqB,CACzB,MAAO,OACP,OAAQ,OACR,SAAU,GACV,UAAW,IACX,KAAM,EACN,MAAO,EACP,QAAS,CACX,EACMoC,GAA8B,CAClC,MAAO,IACP,OAAQ,GACV,EACMC,GAAgB,GAChBC,GAAgC,IAWhCC,GAAU,CAAC,CACf,SAAAC,EACA,SAAApD,CACF,IAGM,CACJ,GAAI,CAACA,EACI,OAAA,KAGH,KAAA,CAAE,EAAA/sC,EAAG,EAAA8M,CAAM,EAAAqjC,EAGf,OAAA7T,EAAA,cAAC,MAAA,CACC,UAAU,cACV,MAAO,CAAE,IAAKxvB,EAAI0gC,GAAgB,KAAMxtC,EAAIwtC,EAAe,CAAA,EAE3DlR,EAAA,cAACwQ,IAAgB,SAAAC,CAAoB,CAAA,CAAA,CAG3C,EAEMqD,GAAgB,MAAOpf,GAA0C,CAC/D,MAAA5mB,EAAS,MAAMimC,GAA2Brf,CAAG,EACnD,OAAI5mB,EAAO,QACFA,EAAO,QAAQ,OAAQR,GAAMA,EAAE,UAAYA,EAAE,SAAS,EAEtD,EAEX,EAEa0mC,GAA6C,CAAC,CACzD,aAAA/B,CACF,IAAM,CACJ,KAAM,CAACjG,EAAYiI,CAAa,EAAIC,EAAA,SAA0B,CAAE,CAAA,EAC1D,CAACC,EAAWC,CAAY,EAAIF,WAAS7C,EAAkB,EACvD,CAACK,EAAiB2C,CAAkB,EAAIH,EAAA,SAC5C,IAAA,EAEI,CAACI,EAAiBC,CAAkB,EAAIL,WAAoB,CAChE,EAAG,EACH,EAAG,CAAA,CACJ,EAEKM,EAAoBC,EAAY,YAAA,CAAC,CAAE,UAAWC,KAAmB,CACrEN,EAAaM,CAAY,CAC3B,EAAG,CAAE,CAAA,EAECC,EAAgB,IAAIzzB,GAAyB,CACjD,GAAI,mBACJ,KAAM8qB,EACN,SAAU,GACV,QAAS,KAAO,CACd,IAAK,0BACL,MAAO,GACP,OAAQ,EAAA,GAEV,QAAS,GACT,YAAc,GAAM,CAAC,EAAE,UAAW,EAAE,QAAQ,EAC5C,QAAS,CAAC,CAAE,EAAAtoC,EAAG,EAAA8M,EAAG,OAAArM,KAAa,CAC7BkwC,EAAmBlwC,CAAM,EACNowC,EAAA,CAAE,EAAA7wC,EAAG,EAAA8M,CAAA,CAAG,CAC7B,EACA,QAAS,CAAC,CAAE,OAAArM,KAAa,CACvB,OAAO,SAAS,KAAO,sBAAsBA,EAAO,EAAE,EACxD,CAAA,CACD,EAEKywC,EAAwB,SAAY,CAClC,MAAAC,EAAgB,MAAMf,GAAc7B,CAAY,EAClD4C,EAAc,OAChBZ,EAAcY,CAAa,EAE3B,WAAWD,EAAuBjB,EAA6B,CACjE,EAGFmB,OAAAA,EAAAA,UAAU,IAAM,CAAwBF,GAAE,EAAG,CAAE,CAAA,EAG/CE,EAAAA,UAAU,IAAM,CACV,GAAA,CAAC9I,EAAW,OACd,OAEF,MAAM+I,EAASC,GAAUhJ,CAAU,EAAE,IAAK1e,GAAU,CAClDA,EAAM,UACNA,EAAM,QAAA,CACP,EACK9O,EAAW,IAAIy2B,GAAoBxB,EAA2B,EAC9D,CAAE,SAAAyB,EAAU,UAAAC,EAAW,KAAAC,CAAS,EAAA52B,EAAS,UAAUu2B,CAAM,EAClDX,EAAA,CACX,GAAGD,EACH,SAAAe,EACA,UAAAC,EACA,KAAMC,EAAO1B,GAAgBA,GAAgB0B,CAAA,CAC9C,CAAA,EACA,CAACpJ,CAAU,CAAC,EAGbhM,EAAA,cAAC,MAAI,CAAA,UAAU,yCACb,EAAAA,EAAA,cAACgR,GAAA,CACC,OAAQ,CAAC2D,CAAa,EACtB,UAAAR,EACA,kBAAAK,EACA,WAAY,GACZ,UAAU,uBAAA,EAEVxU,EAAA,cAACyR,GAAA,CACC,MAAOJ,GAAmB,MAC1B,OAAQA,GAAmB,OAC3B,UAAW,GACX,SAAUF,GACV,oBAAqB,GACrB,qBAAsB/I,GAAI,UAAU,qBAAA,CACtC,EACCpI,EAAA,cAAA4T,GAAA,CAAQ,SAAUU,EAAiB,SAAU5C,EAAiB,CAAA,CAEnE,CAEJ,6GCvJM2D,GAAkB,CACtB,GAAGtZ,GACH,GAAGuZ,GACH,GAAGC,GACH,GAAGvB,EACL,EAEA,SAAS,iBAAiB,mBAAoB,IAAMwB,GAAWH,EAAe,CAAC,EAE/EI,GAAAA,MAAoB","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,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,54,58,65,70]}